mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
Implements "forbidden" areas into atmospherics_sanity unit test (#96141)
## About The Pull Request I originally just wanted to change the logging for this so that it's more helpful for mappers, but I realized that this test doesn't cover the case where a mapper mistakenly connects a illegal area into the air loop, so I implemented that. I had to remap Catwalk so that the actual server room was isolated from everything else. I tried to keep everything intact to the best of my ability but there simply wasn't much room. Also, I added a new subtype for the supermatter engine's area, and included an UpdatePaths file for it. Behaviour should be identical across the board. ## Why It's Good For The Game So we can be 100% absolutely definitely sure we didn't attach the waste loop inside the supermatter engine. ## Mold Spore <img width="400" height="400" alt="image" src="https://github.com/user-attachments/assets/f231ba77-097d-4365-b467-17580aceae14" />
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -265,10 +265,6 @@
|
||||
/mob/living/basic/sloth/citrus,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/storage)
|
||||
"aez" = (
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"aeC" = (
|
||||
/obj/effect/turf_decal/trimline/yellow/corner{
|
||||
dir = 1
|
||||
@@ -3420,13 +3416,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"bhv" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/south,
|
||||
/obj/machinery/power/energy_accumulator/tesla_coil/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"bhB" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/door/airlock/engineering{
|
||||
@@ -5011,6 +5000,14 @@
|
||||
/obj/machinery/light/directional/north,
|
||||
/turf/open/openspace,
|
||||
/area/station/engineering/supermatter/room)
|
||||
"bMk" = (
|
||||
/obj/structure/closet/l3closet/janitor,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/camera/autoname/directional/north,
|
||||
/obj/item/restraints/legcuffs/beartrap,
|
||||
/obj/item/restraints/legcuffs/beartrap,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/janitor)
|
||||
"bMl" = (
|
||||
/obj/effect/turf_decal/sand/plating,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
|
||||
@@ -5536,10 +5533,6 @@
|
||||
},
|
||||
/turf/open/floor/wood/parquet,
|
||||
/area/station/medical/psychology)
|
||||
"bWe" = (
|
||||
/obj/effect/spawner/random/gizmo,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/science/explab)
|
||||
"bWi" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -11431,10 +11424,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/atmos/upper)
|
||||
"dYp" = (
|
||||
/obj/structure/sign/warning/fire,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter)
|
||||
"dYq" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/line{
|
||||
@@ -12769,17 +12758,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/central/lesser)
|
||||
"ewL" = (
|
||||
/obj/machinery/door/airlock/engineering/glass/critical{
|
||||
heat_proof = 1;
|
||||
name = "Supermatter Chamber"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"ewM" = (
|
||||
/obj/effect/spawner/structure/window,
|
||||
/turf/open/floor/plating,
|
||||
@@ -13721,6 +13699,10 @@
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/science/xenobiology)
|
||||
"eOg" = (
|
||||
/obj/machinery/gizmo/toggle/tucker_tubes,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/explab)
|
||||
"eOn" = (
|
||||
/obj/effect/landmark/atmospheric_sanity/ignore_area,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -14234,6 +14216,17 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/exam_room)
|
||||
"eYC" = (
|
||||
/obj/machinery/door/airlock/engineering/glass/critical{
|
||||
heat_proof = 1;
|
||||
name = "Supermatter Chamber"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"eYF" = (
|
||||
/obj/structure/railing/corner{
|
||||
dir = 8
|
||||
@@ -15953,6 +15946,11 @@
|
||||
/obj/machinery/status_display/evac/directional/south,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"fEP" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/obj/machinery/meter,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"fEQ" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/spawner/random/maintenance/three,
|
||||
@@ -17085,10 +17083,6 @@
|
||||
/obj/item/pickaxe,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical)
|
||||
"fXt" = (
|
||||
/obj/effect/spawner/structure/window/reinforced/plasma,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"fXC" = (
|
||||
/obj/machinery/door/airlock/maintenance_hatch,
|
||||
/obj/effect/mapping_helpers/airlock/access/any/service/general,
|
||||
@@ -17261,6 +17255,10 @@
|
||||
/obj/structure/railing/corner,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/research)
|
||||
"gar" = (
|
||||
/obj/machinery/air_sensor/engine_chamber,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"gas" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible,
|
||||
/obj/effect/turf_decal/stripes{
|
||||
@@ -17500,6 +17498,13 @@
|
||||
/obj/machinery/light/directional/south,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/lobby)
|
||||
"gev" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/south,
|
||||
/obj/machinery/power/energy_accumulator/grounding_rod/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"gey" = (
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/machinery/light_switch/directional/east,
|
||||
@@ -18098,10 +18103,6 @@
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/service/lawoffice)
|
||||
"gqN" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter)
|
||||
"gqO" = (
|
||||
/obj/item/radio/intercom/directional/west,
|
||||
/turf/open/floor/glass/reinforced,
|
||||
@@ -18272,6 +18273,10 @@
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/open/floor/iron/white/textured_large,
|
||||
/area/station/science/xenobiology)
|
||||
"gtF" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"gtK" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -19660,6 +19665,10 @@
|
||||
/obj/effect/turf_decal/stripes,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/room)
|
||||
"gRL" = (
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"gRO" = (
|
||||
/obj/machinery/firealarm/directional/south,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -20359,6 +20368,10 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/station/engineering/atmos)
|
||||
"hdh" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"hdq" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -20403,6 +20416,12 @@
|
||||
/obj/structure/sign/poster/contraband/random/directional/south,
|
||||
/turf/open/floor/iron/grimy,
|
||||
/area/station/maintenance/central/lesser)
|
||||
"hed" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"hef" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/cable,
|
||||
@@ -21030,17 +21049,6 @@
|
||||
/obj/effect/spawner/random/structure/tank_holder,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical/central)
|
||||
"hoM" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"hoQ" = (
|
||||
/obj/machinery/light/small/directional/north,
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/on{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"hoX" = (
|
||||
/obj/effect/turf_decal/tile/brown/half/contrasted,
|
||||
/turf/open/floor/iron,
|
||||
@@ -21696,6 +21704,9 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/station/service/chapel)
|
||||
"hBf" = (
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"hBi" = (
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/effect/turf_decal/tile/yellow/half/contrasted{
|
||||
@@ -23342,17 +23353,6 @@
|
||||
/obj/item/grown/bananapeel,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/engine)
|
||||
"iee" = (
|
||||
/obj/machinery/bouldertech/refinery/smelter{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 6;
|
||||
id = "brm"
|
||||
},
|
||||
/obj/effect/turf_decal/sand/plating,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/cargo/miningoffice)
|
||||
"ief" = (
|
||||
/obj/machinery/airalarm/directional/west,
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
@@ -25511,13 +25511,6 @@
|
||||
/obj/structure/falsewall,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/commons/storage/art)
|
||||
"iTU" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/north,
|
||||
/obj/machinery/power/energy_accumulator/grounding_rod/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"iTW" = (
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
name = "Locker Room"
|
||||
@@ -26021,6 +26014,10 @@
|
||||
/obj/machinery/airalarm/directional/south,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/station/security/prison/shower)
|
||||
"jeE" = (
|
||||
/obj/structure/sign/warning/fire,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"jeL" = (
|
||||
/obj/machinery/suit_storage_unit/standard_unit,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
@@ -26451,6 +26448,13 @@
|
||||
/obj/effect/landmark/start/hangover,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"jlq" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/south,
|
||||
/obj/machinery/power/energy_accumulator/tesla_coil/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"jlw" = (
|
||||
/obj/structure/window/reinforced/spawner/directional/north,
|
||||
/obj/machinery/vending/coffee,
|
||||
@@ -26725,6 +26729,17 @@
|
||||
/obj/item/food/sandwich/philly_cheesesteak,
|
||||
/turf/open/floor/carpet/red,
|
||||
/area/station/command/heads_quarters/hos)
|
||||
"jqe" = (
|
||||
/obj/machinery/bouldertech/refinery{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "brm"
|
||||
},
|
||||
/obj/effect/turf_decal/sand/plating,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/cargo/miningoffice)
|
||||
"jqf" = (
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 4
|
||||
@@ -29250,11 +29265,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark/corner,
|
||||
/area/station/engineering/atmos/project)
|
||||
"kfZ" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/obj/machinery/meter,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter)
|
||||
"kgb" = (
|
||||
/obj/machinery/light/directional/west,
|
||||
/obj/effect/turf_decal/tile/yellow/fourcorners,
|
||||
@@ -29292,6 +29302,14 @@
|
||||
},
|
||||
/turf/open/floor/iron/kitchen,
|
||||
/area/station/service/kitchen)
|
||||
"kgH" = (
|
||||
/obj/machinery/door/poddoor/shutters/radiation/preopen{
|
||||
id = "soup";
|
||||
name = "Radiation Chamber Shutters"
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"kgO" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron/textured_large,
|
||||
@@ -29880,14 +29898,6 @@
|
||||
/obj/structure/broken_flooring/pile,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical/central)
|
||||
"kpe" = (
|
||||
/obj/structure/closet/l3closet/janitor,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/camera/autoname/directional/north,
|
||||
/obj/item/restraints/legcuffs/beartrap,
|
||||
/obj/item/restraints/legcuffs/beartrap,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/janitor)
|
||||
"kpj" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -29956,6 +29966,10 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/medical/morgue)
|
||||
"kpL" = (
|
||||
/obj/effect/spawner/structure/window/reinforced/plasma,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"kpP" = (
|
||||
/obj/machinery/door/airlock/command{
|
||||
id_tag = "cmoshower";
|
||||
@@ -31112,6 +31126,12 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical/central)
|
||||
"kJM" = (
|
||||
/obj/machinery/camera/autoname/directional/west{
|
||||
network = list("ss13","engine")
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"kJN" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
|
||||
dir = 4
|
||||
@@ -32390,10 +32410,6 @@
|
||||
/obj/structure/lattice,
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"lfN" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter)
|
||||
"lgh" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -33020,6 +33036,18 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/medical/chemistry)
|
||||
"lsU" = (
|
||||
/obj/machinery/airalarm/directional/south,
|
||||
/obj/effect/mapping_helpers/airalarm/engine_access,
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/on{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/mapping_helpers/airalarm/link{
|
||||
chamber_id = "engine"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"lta" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
|
||||
dir = 1
|
||||
@@ -38253,13 +38281,6 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/any/service/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical/central)
|
||||
"neE" = (
|
||||
/obj/machinery/door/poddoor/shutters/radiation/preopen{
|
||||
id = "soup";
|
||||
name = "Radiation Chamber Shutters"
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"neT" = (
|
||||
/obj/machinery/light/small/directional/west,
|
||||
/turf/open/floor/plating/reinforced/airless,
|
||||
@@ -38366,18 +38387,6 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/lesser)
|
||||
"ngn" = (
|
||||
/obj/machinery/airalarm/directional/south,
|
||||
/obj/effect/mapping_helpers/airalarm/engine_access,
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/on{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/mapping_helpers/airalarm/link{
|
||||
chamber_id = "engine"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"ngp" = (
|
||||
/obj/effect/turf_decal/siding/white{
|
||||
dir = 5
|
||||
@@ -38938,6 +38947,11 @@
|
||||
/obj/item/radio/intercom/directional/east,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/medical/chemistry/minisat)
|
||||
"nsm" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/obj/machinery/meter,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"nso" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -38953,6 +38967,9 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical/central)
|
||||
"nsD" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"nsI" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -39002,17 +39019,6 @@
|
||||
/obj/machinery/light/small/directional/east,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/commons/dorms)
|
||||
"nuu" = (
|
||||
/obj/machinery/bouldertech/refinery{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "brm"
|
||||
},
|
||||
/obj/effect/turf_decal/sand/plating,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/cargo/miningoffice)
|
||||
"nuC" = (
|
||||
/obj/effect/turf_decal/tile/brown/anticorner/contrasted,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -42070,11 +42076,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/solars/port/fore)
|
||||
"oEf" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/obj/machinery/meter,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter)
|
||||
"oEo" = (
|
||||
/obj/machinery/light/directional/north,
|
||||
/obj/item/assembly/mousetrap/armed,
|
||||
@@ -46553,12 +46554,6 @@
|
||||
/obj/machinery/light/floor,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical/central)
|
||||
"qaZ" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"qbd" = (
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 5
|
||||
@@ -47036,6 +47031,13 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/break_room)
|
||||
"qjU" = (
|
||||
/obj/machinery/door/poddoor/shutters/radiation/preopen{
|
||||
id = "soup";
|
||||
name = "Radiation Chamber Shutters"
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"qjW" = (
|
||||
/obj/effect/spawner/random/vending/colavend,
|
||||
/obj/effect/turf_decal/siding/brown{
|
||||
@@ -51045,10 +51047,6 @@
|
||||
},
|
||||
/turf/open/floor/engine/n2o,
|
||||
/area/station/engineering/atmos)
|
||||
"rBr" = (
|
||||
/obj/machinery/air_sensor/engine_chamber,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"rBt" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -51306,6 +51304,17 @@
|
||||
/obj/effect/landmark/start/chemist,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/chemistry)
|
||||
"rFN" = (
|
||||
/obj/machinery/bouldertech/refinery/smelter{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 6;
|
||||
id = "brm"
|
||||
},
|
||||
/obj/effect/turf_decal/sand/plating,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/cargo/miningoffice)
|
||||
"rFV" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
@@ -51335,13 +51344,6 @@
|
||||
},
|
||||
/turf/open/misc/asteroid/airless,
|
||||
/area/station/asteroid)
|
||||
"rGq" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/north,
|
||||
/obj/machinery/power/energy_accumulator/tesla_coil/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"rGr" = (
|
||||
/obj/effect/baseturf_helper/reinforced_plating,
|
||||
/turf/open/floor/glass/reinforced/plasma,
|
||||
@@ -54975,6 +54977,10 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/main)
|
||||
"sOr" = (
|
||||
/obj/effect/spawner/random/gizmo,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/science/explab)
|
||||
"sOA" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
@@ -54982,13 +54988,6 @@
|
||||
/obj/machinery/firealarm/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"sOG" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/south,
|
||||
/obj/machinery/power/energy_accumulator/grounding_rod/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"sPi" = (
|
||||
/obj/structure/closet/firecloset,
|
||||
/obj/effect/landmark/start/hangover,
|
||||
@@ -56843,14 +56842,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/science/ordnance)
|
||||
"twf" = (
|
||||
/obj/machinery/door/poddoor/shutters/radiation/preopen{
|
||||
id = "soup";
|
||||
name = "Radiation Chamber Shutters"
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"tww" = (
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/catwalk_floor/iron_dark,
|
||||
@@ -59487,6 +59478,13 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/any/science/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/commons/vacant_room/commissary)
|
||||
"uqA" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/north,
|
||||
/obj/machinery/power/energy_accumulator/grounding_rod/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"uqI" = (
|
||||
/obj/structure/railing{
|
||||
dir = 1
|
||||
@@ -61292,12 +61290,6 @@
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"uXw" = (
|
||||
/obj/machinery/camera/autoname/directional/west{
|
||||
network = list("ss13","engine")
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"uXD" = (
|
||||
/turf/closed/wall,
|
||||
/area/station/hallway/secondary/entry)
|
||||
@@ -61387,6 +61379,10 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"uYt" = (
|
||||
/obj/machinery/power/supermatter_crystal/engine,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"uYG" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/maintenance/aft/upper)
|
||||
@@ -63232,6 +63228,13 @@
|
||||
},
|
||||
/turf/open/floor/wood/tile,
|
||||
/area/station/security/courtroom)
|
||||
"vHm" = (
|
||||
/obj/structure/window/reinforced/plasma/spawner/directional/north,
|
||||
/obj/machinery/power/energy_accumulator/tesla_coil/anchored,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"vHA" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -63896,9 +63899,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/janitor)
|
||||
"vUh" = (
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"vUj" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/power/solar{
|
||||
@@ -64617,10 +64617,6 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/security/prison/safe)
|
||||
"wid" = (
|
||||
/obj/machinery/gizmo/toggle/tucker_tubes,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/explab)
|
||||
"wie" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/structure/railing,
|
||||
@@ -64947,10 +64943,6 @@
|
||||
},
|
||||
/turf/open/floor/wood/parquet,
|
||||
/area/station/medical/psychology)
|
||||
"wnX" = (
|
||||
/obj/machinery/power/supermatter_crystal/engine,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"wnY" = (
|
||||
/turf/open/floor/carpet/executive,
|
||||
/area/station/command/corporate_showroom)
|
||||
@@ -66761,6 +66753,13 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/service/theater)
|
||||
"wSs" = (
|
||||
/obj/machinery/light/small/directional/north,
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/on{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"wTc" = (
|
||||
/obj/machinery/meter/monitored/distro_loop,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible,
|
||||
@@ -68542,6 +68541,10 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/any/admin/general,
|
||||
/turf/open/floor/iron/dark/smooth_large,
|
||||
/area/station/command/corporate_dock)
|
||||
"xxz" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"xxH" = (
|
||||
/obj/machinery/firealarm/directional/south,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -69115,6 +69118,17 @@
|
||||
/obj/structure/railing,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/atmos)
|
||||
"xHe" = (
|
||||
/obj/machinery/door/airlock/engineering/glass/critical{
|
||||
heat_proof = 1;
|
||||
name = "Supermatter Chamber"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/engine)
|
||||
"xHf" = (
|
||||
/obj/effect/landmark/firealarm_sanity,
|
||||
/turf/open/openspace,
|
||||
@@ -69186,9 +69200,6 @@
|
||||
/obj/structure/window/fulltile,
|
||||
/turf/open/misc/asteroid,
|
||||
/area/station/asteroid)
|
||||
"xIV" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/supermatter)
|
||||
"xJd" = (
|
||||
/obj/effect/spawner/random/decoration/glowstick,
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
@@ -70190,17 +70201,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/chemistry/minisat)
|
||||
"ycf" = (
|
||||
/obj/machinery/door/airlock/engineering/glass/critical{
|
||||
heat_proof = 1;
|
||||
name = "Supermatter Chamber"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter)
|
||||
"ycs" = (
|
||||
/obj/effect/spawner/random/engineering/tank,
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
@@ -113670,11 +113670,11 @@ oyV
|
||||
axQ
|
||||
yho
|
||||
yho
|
||||
dYp
|
||||
gqN
|
||||
ycf
|
||||
lfN
|
||||
xIV
|
||||
jeE
|
||||
hdh
|
||||
xHe
|
||||
xxz
|
||||
nsD
|
||||
khO
|
||||
ueA
|
||||
xwD
|
||||
@@ -113927,11 +113927,11 @@ gea
|
||||
xaP
|
||||
dhn
|
||||
jjO
|
||||
xIV
|
||||
hoQ
|
||||
vUh
|
||||
ngn
|
||||
xIV
|
||||
nsD
|
||||
wSs
|
||||
hBf
|
||||
lsU
|
||||
nsD
|
||||
khO
|
||||
njX
|
||||
xwD
|
||||
@@ -114182,15 +114182,15 @@ lwv
|
||||
nPW
|
||||
oyV
|
||||
xaP
|
||||
xIV
|
||||
xIV
|
||||
gqN
|
||||
oEf
|
||||
ewL
|
||||
kfZ
|
||||
lfN
|
||||
xIV
|
||||
xIV
|
||||
nsD
|
||||
nsD
|
||||
hdh
|
||||
fEP
|
||||
eYC
|
||||
nsm
|
||||
xxz
|
||||
nsD
|
||||
nsD
|
||||
xwD
|
||||
cvL
|
||||
qqB
|
||||
@@ -114439,15 +114439,15 @@ cUD
|
||||
nPW
|
||||
oyV
|
||||
xaP
|
||||
neE
|
||||
uXw
|
||||
bhv
|
||||
qaZ
|
||||
rBr
|
||||
hoM
|
||||
rGq
|
||||
vUh
|
||||
neE
|
||||
qjU
|
||||
kJM
|
||||
jlq
|
||||
hed
|
||||
gar
|
||||
gtF
|
||||
vHm
|
||||
hBf
|
||||
qjU
|
||||
xwD
|
||||
cvL
|
||||
psF
|
||||
@@ -114696,15 +114696,15 @@ pbD
|
||||
nPW
|
||||
oyV
|
||||
kiT
|
||||
twf
|
||||
aez
|
||||
sOG
|
||||
qaZ
|
||||
wnX
|
||||
hoM
|
||||
iTU
|
||||
aez
|
||||
twf
|
||||
kgH
|
||||
gRL
|
||||
gev
|
||||
hed
|
||||
uYt
|
||||
gtF
|
||||
uqA
|
||||
gRL
|
||||
kgH
|
||||
xwD
|
||||
cvL
|
||||
jWI
|
||||
@@ -114953,15 +114953,15 @@ biG
|
||||
nPW
|
||||
oyV
|
||||
xaP
|
||||
neE
|
||||
vUh
|
||||
bhv
|
||||
qaZ
|
||||
vUh
|
||||
hoM
|
||||
rGq
|
||||
vUh
|
||||
neE
|
||||
qjU
|
||||
hBf
|
||||
jlq
|
||||
hed
|
||||
hBf
|
||||
gtF
|
||||
vHm
|
||||
hBf
|
||||
qjU
|
||||
xwD
|
||||
cvL
|
||||
gRG
|
||||
@@ -115210,15 +115210,15 @@ lCu
|
||||
pxu
|
||||
oyV
|
||||
xaP
|
||||
xIV
|
||||
xIV
|
||||
xIV
|
||||
xIV
|
||||
fXt
|
||||
xIV
|
||||
xIV
|
||||
xIV
|
||||
xIV
|
||||
nsD
|
||||
nsD
|
||||
nsD
|
||||
nsD
|
||||
kpL
|
||||
nsD
|
||||
nsD
|
||||
nsD
|
||||
nsD
|
||||
rLz
|
||||
uei
|
||||
nNN
|
||||
@@ -149341,7 +149341,7 @@ lEj
|
||||
lEj
|
||||
pEH
|
||||
izF
|
||||
nuu
|
||||
jqe
|
||||
kVS
|
||||
qXY
|
||||
wds
|
||||
@@ -149855,7 +149855,7 @@ dOG
|
||||
lEj
|
||||
pEH
|
||||
mRE
|
||||
iee
|
||||
rFN
|
||||
bPu
|
||||
uKu
|
||||
iaN
|
||||
@@ -160425,7 +160425,7 @@ fZv
|
||||
fZv
|
||||
vbY
|
||||
jGB
|
||||
kpe
|
||||
bMk
|
||||
slM
|
||||
feu
|
||||
xWd
|
||||
@@ -176326,7 +176326,7 @@ hOa
|
||||
ukx
|
||||
nas
|
||||
gKt
|
||||
wid
|
||||
eOg
|
||||
rHF
|
||||
mHf
|
||||
xfK
|
||||
@@ -177608,7 +177608,7 @@ raz
|
||||
occ
|
||||
fMz
|
||||
obA
|
||||
bWe
|
||||
sOr
|
||||
mSY
|
||||
ddZ
|
||||
nXL
|
||||
|
||||
@@ -82,9 +82,13 @@
|
||||
icon_state = "engi_lobby"
|
||||
|
||||
/area/station/engineering/supermatter
|
||||
name = "\improper Supermatter Engine"
|
||||
name = "\improper Place Somewhere Around the Supermatter" // don't use this type
|
||||
icon_state = "engine_sm"
|
||||
area_flags = BLOBS_ALLOWED | CULT_PERMITTED
|
||||
|
||||
/area/station/engineering/supermatter/engine
|
||||
name = "\improper Supermatter Engine"
|
||||
icon_state = "engine_sm"
|
||||
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||
|
||||
/area/station/engineering/supermatter/Initialize(mapload)
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
)
|
||||
airlock_wires = /datum/wires/airlock/engineering
|
||||
|
||||
/area/station/tcommsat/maints
|
||||
name = "\improper Telecomms Maintenance Room"
|
||||
|
||||
/area/station/tcommsat/computer
|
||||
name = "\improper Telecomms Control Room"
|
||||
icon_state = "tcomsatcomp"
|
||||
|
||||
@@ -21,12 +21,19 @@
|
||||
icon_state = "atmos_sanity_start"
|
||||
|
||||
/**
|
||||
* Marks an area as a goal for atmospheric connectivity; ignored if the map contains the mark all station areas landmark!
|
||||
* Marks an area as a goal for atmospheric connectivity; ignored if the map contains the mark all station areas landmark
|
||||
*/
|
||||
/obj/effect/landmark/atmospheric_sanity/goal_area
|
||||
name = "Atmospheric Sanity Goal"
|
||||
icon_state = "atmos_sanity_goal"
|
||||
|
||||
/**
|
||||
* Marks an area as forbidden from atmospheric connectivity; ignored if the map contains the "mark all station areas" landmark
|
||||
*/
|
||||
/obj/effect/landmark/atmospheric_sanity/forbidden_area
|
||||
name = "Atmospheric Sanity Forbidden"
|
||||
icon_state = "atmos_sanity_forbidden"
|
||||
|
||||
/**
|
||||
* Marks an area as ignored for purposes of default station connectivity.
|
||||
*/
|
||||
|
||||
@@ -1,51 +1,58 @@
|
||||
/**
|
||||
* This test checks that all expected areas are connected to a starting area
|
||||
* This test checks that all areas are connected to their distribution loops
|
||||
*/
|
||||
/datum/unit_test/atmospherics_sanity
|
||||
// we iterate over all atmospherics devices on the starting networks
|
||||
priority = TEST_LONGER
|
||||
priority = TEST_LONGER // we iterate over all atmospherics devices on the starting networks
|
||||
|
||||
/// List of areas remaining to be checked
|
||||
var/list/area/remaining_areas
|
||||
/// List of areas to start crawling from
|
||||
var/list/area/starting_areas
|
||||
|
||||
/// List of areas already crawled, to prevent needless crawling
|
||||
var/list/area/crawled_areas
|
||||
|
||||
/// List of areas to start crawling from
|
||||
var/list/area/starting_areas
|
||||
/// List of areas remaining to be checked
|
||||
var/list/area/remaining_areas
|
||||
|
||||
/// List of areas that should absolutely not be encountered
|
||||
var/list/area/forbidden_areas
|
||||
|
||||
/// We run this test in parallel, so we need to keep track of how many crawls are running
|
||||
/// This is to prevent stack overflow mostly
|
||||
var/crawls = 0
|
||||
|
||||
/datum/unit_test/atmospherics_sanity/proc/get_areas()
|
||||
/datum/unit_test/atmospherics_sanity/proc/prepare_crawl()
|
||||
starting_areas = list()
|
||||
forbidden_areas = list()
|
||||
crawled_areas = list()
|
||||
remaining_areas = list()
|
||||
|
||||
for(var/obj/effect/landmark/atmospheric_sanity/start_area/start_marker in GLOB.landmarks_list)
|
||||
var/area/starting_area = get_area(start_marker)
|
||||
if(starting_area in starting_areas)
|
||||
TEST_FAIL("Duplicate atmospherics sanity starting marker in '[starting_area]'([starting_area.type]) at ([start_marker.x], [start_marker.y], [start_marker.z])")
|
||||
continue
|
||||
if(starting_area.outdoors)
|
||||
TEST_FAIL("Atmospherics sanity starting marker in outdoors area '[starting_area]'([starting_area.type]) at ([start_marker.x], [start_marker.y], [start_marker.z])")
|
||||
TEST_FAIL("Atmospherics sanity starting marker cannot be in outdoors area '[starting_area]'([starting_area.type]) at ([start_marker.x], [start_marker.y], [start_marker.z])")
|
||||
continue
|
||||
starting_areas |= get_area(start_marker)
|
||||
|
||||
// If there are no starting areas, default to these
|
||||
var/static/list/area/default_starting_areas = list(
|
||||
/area/station/ai/satellite/chamber,
|
||||
/area/station/engineering/atmos,
|
||||
/area/station/medical/virology,
|
||||
/area/station/science/xenobiology,
|
||||
)
|
||||
|
||||
if(!length(starting_areas))
|
||||
log_test("No starting areas found, defaulting...")
|
||||
|
||||
var/list/area/default_starting_areas = list(
|
||||
// These areas have their own air supply
|
||||
/area/station/ai/satellite/chamber,
|
||||
/area/station/medical/virology,
|
||||
/area/station/science/xenobiology,
|
||||
// Otherwise, this should connect to the rest of the station
|
||||
/area/station/engineering/atmos,
|
||||
)
|
||||
|
||||
for(var/area/starting_area as anything in default_starting_areas)
|
||||
var/area/station_area = GLOB.areas_by_type[starting_area]
|
||||
if(!isnull(station_area))
|
||||
starting_areas += station_area
|
||||
|
||||
remaining_areas = list()
|
||||
|
||||
var/atom/mark_all_station_areas_marker = locate(/obj/effect/landmark/atmospheric_sanity/mark_all_station_areas_as_goal) in GLOB.landmarks_list
|
||||
if(!isnull(mark_all_station_areas_marker))
|
||||
@@ -61,58 +68,76 @@
|
||||
if(goal_area.outdoors)
|
||||
TEST_FAIL("Atmospherics sanity goal marker in outdoors area '[goal_area]'([goal_area.type]) at ([goal_marker.x], [goal_marker.y], [goal_marker.z])")
|
||||
continue
|
||||
if(istype(goal_area, /area/space))
|
||||
TEST_FAIL("Atmospherics sanity goal marker in space at ([goal_marker.x], [goal_marker.y], [goal_marker.z])")
|
||||
continue
|
||||
remaining_areas |= get_area(goal_marker)
|
||||
|
||||
if(!length(remaining_areas))
|
||||
log_test("No goal areas found, defaulting...")
|
||||
mark_station_areas_as_goals()
|
||||
else
|
||||
for(var/obj/effect/landmark/atmospheric_sanity/forbidden_area/forbidden_marker in GLOB.landmarks_list)
|
||||
var/area/forbidden_area = get_area(forbidden_marker)
|
||||
if(forbidden_area in remaining_areas)
|
||||
var/obj/effect/landmark/atmospheric_sanity/goal_area/goal_marker = locate() in forbidden_area
|
||||
TEST_FAIL("Area '[forbidden_area]'([forbidden_area.type]) \
|
||||
has a goal marker at ([goal_marker.x], [goal_marker.y], [goal_marker.z]) \
|
||||
and a forbidden marker at ([forbidden_marker.x], ([forbidden_marker.y], ([forbidden_marker.z])")
|
||||
continue
|
||||
if(forbidden_area in forbidden_areas)
|
||||
TEST_FAIL("Area '[forbidden_area]'([forbidden_area.type]) is so forbidden it has a duplicate marker at at ([forbidden_marker.x], ([forbidden_marker.y], ([forbidden_marker.z])")
|
||||
continue
|
||||
|
||||
forbidden_areas |= forbidden_area
|
||||
|
||||
for(var/obj/effect/landmark/atmospheric_sanity/ignore_area/ignore_marker in GLOB.landmarks_list)
|
||||
remaining_areas -= get_area(ignore_marker)
|
||||
|
||||
/datum/unit_test/atmospherics_sanity/proc/mark_station_areas_as_goals()
|
||||
// We don't want to check these areas
|
||||
var/static/list/area/ignored_types = list(
|
||||
// We don't care if we find these
|
||||
var/list/area/ignored_types = list(
|
||||
/area/station/asteroid,
|
||||
/area/station/engineering/supermatter,
|
||||
/area/station/holodeck,
|
||||
/area/station/maintenance,
|
||||
/area/station/science/ordnance/bomb,
|
||||
/area/station/solars,
|
||||
|
||||
// FIXME, burnchamber is usually mapped with a vent in the buffer airlock
|
||||
// which causes us to leak into freezer. These two should be forbidden
|
||||
/area/station/science/ordnance/burnchamber,
|
||||
/area/station/science/ordnance/freezerchamber,
|
||||
/area/station/solars,
|
||||
/area/station/tcommsat/server,
|
||||
)
|
||||
|
||||
for(var/area/ignored as anything in ignored_types)
|
||||
ignored_types |= subtypesof(ignored)
|
||||
|
||||
for(var/area/station/station_area_type as anything in subtypesof(/area/station) - ignored_types)
|
||||
// We should never find these
|
||||
var/list/area/forbidden_types = list(
|
||||
/area/station/engineering/supermatter/engine,
|
||||
/area/station/tcommsat/server,
|
||||
)
|
||||
|
||||
for(var/area/forbidden as anything in forbidden_types)
|
||||
forbidden_types |= subtypesof(forbidden)
|
||||
|
||||
for(var/area/station/station_area_type as anything in subtypesof(/area/station) - ignored_types - forbidden_types)
|
||||
var/area/station_area = GLOB.areas_by_type[station_area_type]
|
||||
if(!isnull(station_area))
|
||||
remaining_areas += station_area
|
||||
|
||||
/datum/unit_test/atmospherics_sanity/Run()
|
||||
get_areas()
|
||||
crawl_areas()
|
||||
UNTIL(crawls == 0)
|
||||
for(var/area/missed as anything in remaining_areas)
|
||||
if(missed.has_contained_turfs())
|
||||
var/turf/first_turf = missed.get_zlevel_turf_lists()[1][1]
|
||||
TEST_FAIL("Disconnected Area '[missed]'([missed.type]) at ([first_turf.x], [first_turf.y], [first_turf.z])")
|
||||
else
|
||||
TEST_NOTICE(src, "Disconnected Area '[missed]'([missed.type]) with no turfs?")
|
||||
for(var/area/station/forbidden_area_type as anything in forbidden_types)
|
||||
var/area/forbidden_area = GLOB.areas_by_type[forbidden_area_type]
|
||||
if(!isnull(forbidden_area))
|
||||
forbidden_areas += forbidden_area
|
||||
|
||||
/// Iterates over starting_areas and ensures that all goal areas are connected to atleast one start
|
||||
/datum/unit_test/atmospherics_sanity/proc/crawl_areas()
|
||||
crawled_areas = list()
|
||||
/datum/unit_test/atmospherics_sanity/Run()
|
||||
prepare_crawl()
|
||||
for(var/area/start_area as anything in starting_areas)
|
||||
ASYNC
|
||||
crawl_area(start_area)
|
||||
starting_areas = null
|
||||
UNTIL(crawls == 0)
|
||||
|
||||
for(var/area/missed as anything in remaining_areas)
|
||||
var/turf/first_turf = missed.get_zlevel_turf_lists()[1][1]
|
||||
TEST_FAIL("Goal area '[missed]'([missed.type]) is isolated from any distribution loops ([first_turf.x], [first_turf.y], [first_turf.z])")
|
||||
|
||||
/// Crawls through an area, iterating over all vents/scrubbers and their connected pipelines
|
||||
/datum/unit_test/atmospherics_sanity/proc/crawl_area(area/the_area)
|
||||
@@ -126,12 +151,16 @@
|
||||
for(var/obj/machinery/atmospherics/components/component as anything in (the_area.air_vents + the_area.air_scrubbers))
|
||||
for(var/datum/pipeline/parent as anything in component.parents)
|
||||
if(isnull(parent))
|
||||
TEST_NOTICE(src, "Found a null parent for [component] in [the_area] at ([component.x], [component.y], [component.z])")
|
||||
TEST_NOTICE(src, "[component] at ([component.x], [component.y], [component.z]) isn't attached to a pipenet, is this on purpose?")
|
||||
continue
|
||||
pipelines |= parent
|
||||
|
||||
for(var/datum/pipeline/pipeline as anything in pipelines)
|
||||
crawl_pipeline(pipeline)
|
||||
if((the_area in forbidden_areas) && length(pipelines)) // we don't care if this area is forbidden if it isn't actually connected to the air
|
||||
var/turf/first_turf = the_area.get_zlevel_turf_lists()[1][1]
|
||||
TEST_FAIL("Forbidden area '[the_area]'([the_area.type]) is connected to a distribution loop at ([first_turf.x], [first_turf.y], [first_turf.z])")
|
||||
else
|
||||
for(var/datum/pipeline/pipeline as anything in pipelines)
|
||||
crawl_pipeline(pipeline)
|
||||
|
||||
crawls -= 1
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1 @@
|
||||
/area/station/engineering/supermatter : /area/station/engineering/supermatter/engine{@OLD}
|
||||
Reference in New Issue
Block a user