diff --git a/.github/guides/ISSUE_MANAGER.md b/.github/guides/ISSUE_MANAGER.md
index 3ecab32a7f523..9e5745d77315f 100644
--- a/.github/guides/ISSUE_MANAGER.md
+++ b/.github/guides/ISSUE_MANAGER.md
@@ -28,8 +28,8 @@ If an issue reports a runtime, it must have the actual runtime call stack provid
- usr.loc: the floor (150,25,4) (/turf/open/floor/circuit)
- call stack:
- Camera Net (/datum/cameranet): visibility(/list (/list), null, /list (/list), 1)
- - AI (/mob/living/silicon/ai): camera visibility(Inactive AI Eye (/mob/eye/ai_eye))
- - Inactive AI Eye (/mob/eye/ai_eye): setLoc(the floor (150,25,4) (/turf/open/floor/circuit), 0)
+ - AI (/mob/living/silicon/ai): camera visibility(Inactive AI Eye (/mob/eye/camera/ai))
+ - Inactive AI Eye (/mob/eye/camera/ai): setLoc(the floor (150,25,4) (/turf/open/floor/circuit), 0)
- AI (/mob/living/silicon/ai): create eye()
- AI (/mob/living/silicon/ai): Initialize(0, null, TagGamerGame2 (/mob/dead/new_player))
- Atoms (/datum/controller/subsystem/atoms): InitAtom(AI (/mob/living/silicon/ai), 0, /list (/list))
diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml
index 6e7f97cf53035..6dfb59a563434 100644
--- a/.github/workflows/ci_suite.yml
+++ b/.github/workflows/ci_suite.yml
@@ -288,10 +288,11 @@ jobs:
completion_gate: # Serves as a non-moving target for branch rulesets
if: always() && !cancelled()
name: Completion Gate
- needs: [ test_windows, compare_screenshots, compile_all_maps, run_linters ]
+ needs: [ test_windows, compare_screenshots, compile_all_maps, run_all_tests, run_alternate_tests, run_linters ]
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
+ allowed-skips: compare_screenshots
diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml
index 39a4d8c4d9616..423c7f10ad61e 100644
--- a/.github/workflows/generate_documentation.yml
+++ b/.github/workflows/generate_documentation.yml
@@ -27,7 +27,7 @@ jobs:
touch dmdoc/.nojekyll
echo codedocs.tgstation13.org > dmdoc/CNAME
- name: Deploy
- uses: JamesIves/github-pages-deploy-action@v4.6.9
+ uses: JamesIves/github-pages-deploy-action@v4.7.2
with:
branch: gh-pages
clean: true
diff --git a/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm b/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm
index 8ef6caecb96c4..684f452a22047 100644
--- a/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm
+++ b/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm
@@ -182,7 +182,7 @@
dir = 1
},
/obj/structure/chair/sofa/bamboo/left,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"dj" = (
/obj/structure/flora/bush/snow/style_random,
@@ -275,7 +275,7 @@
"fK" = (
/obj/effect/turf_decal/siding/wood,
/obj/structure/wall_torch/spawns_lit/directional/north,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"fV" = (
/obj/effect/turf_decal/siding/wood{
@@ -302,7 +302,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 4
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"gz" = (
/obj/effect/turf_decal/weather/snow/corner{
@@ -317,7 +317,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 9
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"gU" = (
/obj/structure/rack/wooden,
@@ -589,7 +589,7 @@
/obj/effect/turf_decal/siding/wood/corner{
dir = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"mr" = (
/obj/structure/wall_torch/spawns_lit/directional/west,
@@ -646,7 +646,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"nG" = (
/obj/machinery/griddle/stone,
@@ -704,7 +704,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 8
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"ol" = (
/obj/structure/railing/wooden_fencing{
@@ -740,7 +740,7 @@
/area/ruin/unpowered/primitive_genemod_den)
"oJ" = (
/obj/effect/turf_decal/weather/dirt,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"oL" = (
/obj/machinery/smartfridge/wooden/seed_shelf,
@@ -788,7 +788,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 6
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"po" = (
/obj/effect/turf_decal/siding/wood/corner{
@@ -804,7 +804,7 @@
/area/ruin/unpowered/primitive_genemod_den)
"pW" = (
/obj/effect/turf_decal/weather/snow/corner,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"qb" = (
/obj/effect/turf_decal/siding/wood{
@@ -816,7 +816,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 8
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"qr" = (
/obj/structure/rack/wooden,
@@ -877,7 +877,7 @@
/obj/structure/chair/sofa/bamboo{
dir = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"sj" = (
/obj/structure/spacevine{
@@ -1010,7 +1010,7 @@
/obj/effect/turf_decal/siding/wood{
dir = 6
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"vy" = (
/obj/effect/turf_decal/siding/wood{
@@ -1063,7 +1063,7 @@
/area/ruin/unpowered/primitive_genemod_den)
"wU" = (
/obj/structure/wall_torch/spawns_lit/directional/south,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"xc" = (
/obj/structure/wall_torch/spawns_lit/directional/west,
@@ -1149,14 +1149,14 @@
/obj/structure/chair/sofa/bamboo/right{
dir = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"yx" = (
/obj/effect/turf_decal/weather/dirt{
dir = 9
},
/obj/structure/wall_torch/spawns_lit/directional/south,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"yy" = (
/obj/effect/mob_spawn/ghost_role/human/primitive_genemod,
@@ -1164,7 +1164,7 @@
/area/ruin/unpowered/primitive_genemod_den)
"yE" = (
/obj/effect/turf_decal/siding/wood,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"yN" = (
/obj/structure/rack/wooden,
@@ -1182,7 +1182,7 @@
/obj/effect/turf_decal/siding/wood{
dir = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"yU" = (
/obj/structure/window/green_glass_pane,
@@ -1193,7 +1193,7 @@
/obj/effect/turf_decal/weather/snow/corner{
dir = 8
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"zu" = (
/obj/effect/turf_decal/siding/wood{
@@ -1543,7 +1543,7 @@
dir = 1
},
/obj/structure/chair/sofa/bamboo/right,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Fj" = (
/obj/structure/chair/wood,
@@ -1631,7 +1631,7 @@
/turf/open/floor/wood/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Hd" = (
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Hv" = (
/obj/structure/rack/wooden,
@@ -1690,7 +1690,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"IJ" = (
/obj/structure/wall_torch/spawns_lit/directional/east,
@@ -1746,7 +1746,7 @@
name = "thick vines";
opacity = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Jn" = (
/obj/effect/turf_decal/weather/snow/corner{
@@ -1755,7 +1755,7 @@
/obj/effect/turf_decal/weather/snow/corner{
dir = 8
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Jq" = (
/turf/open/misc/hay/icemoon,
@@ -1845,7 +1845,7 @@
dir = 1
},
/obj/structure/chair/sofa/bamboo,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Ku" = (
/obj/effect/turf_decal/siding/wood{
@@ -1960,7 +1960,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 8
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Mr" = (
/obj/structure/wall_torch/spawns_lit/directional/north,
@@ -2000,7 +2000,7 @@
/obj/effect/turf_decal/weather/snow/corner{
dir = 1
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Nr" = (
/obj/effect/turf_decal/siding/wood{
@@ -2165,7 +2165,7 @@
/obj/effect/turf_decal/siding/wood{
dir = 4
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"RZ" = (
/obj/structure/closet/crate/wooden/storage_barrel,
@@ -2229,7 +2229,7 @@
/obj/effect/turf_decal/weather/snow/corner{
dir = 4
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"TW" = (
/obj/effect/turf_decal/weather/dirt{
@@ -2277,7 +2277,7 @@
/area/ruin/unpowered/primitive_genemod_den)
"Vc" = (
/obj/structure/fluff/minepost,
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"Vp" = (
/obj/structure/table/wood,
@@ -2402,7 +2402,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 10
},
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/icemoon,
/area/ruin/unpowered/primitive_genemod_den)
"YO" = (
/obj/structure/wall_torch/spawns_lit/directional/north,
diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm
index 905403954b67b..d252e77417aca 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm
@@ -1,99 +1,119 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/smooth_edge{
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
},
+/turf/open/floor/iron/dark/smooth_large,
/area/ruin/powered/icemoon_phone_booth)
"c" = (
-/obj/machinery/door/window/left/directional/north,
-/obj/machinery/door/window/left/directional/south,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
-/area/ruin/powered/icemoon_phone_booth)
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/underground/explored)
"e" = (
+/obj/structure/lattice,
/turf/open/misc/asteroid/snow/icemoon,
-/area/ruin/powered/icemoon_phone_booth)
+/area/icemoon/underground/explored)
"k" = (
-/obj/machinery/vending/coffee,
+/obj/machinery/vending/cigarette{
+ all_products_free = 0
+ },
/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/plating/icemoon,
-/area/ruin/powered/icemoon_phone_booth)
-"q" = (
-/obj/machinery/airalarm/directional/south,
/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 4
+ dir = 8
},
-/obj/machinery/atmospherics/components/tank/air/layer4{
+/obj/effect/turf_decal/weather/snow/corner{
dir = 8
},
-/obj/structure/window/reinforced/spawner/directional/west,
+/obj/effect/turf_decal/weather/snow,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
-"v" = (
+"q" = (
/obj/structure/lattice,
/obj/structure/billboard/Phone_booth,
/turf/open/misc/asteroid/snow/icemoon,
-/area/ruin/powered/icemoon_phone_booth)
-"z" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+/area/icemoon/underground/explored)
+"v" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/machinery/light/small/directional/north,
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
},
+/obj/item/gps/spaceruin{
+ gpstag = "Public Holophone"
+ },
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 5
+ },
+/obj/effect/turf_decal/weather/snow,
+/turf/open/floor/plating/icemoon,
+/area/ruin/powered/icemoon_phone_booth)
+"z" = (
+/obj/machinery/door/window/left/directional/north,
+/obj/machinery/door/window/left/directional/south,
+/obj/effect/turf_decal/weather/snow/corner,
/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
+ dir = 1
},
/area/ruin/powered/icemoon_phone_booth)
"J" = (
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
},
-/obj/item/gps/spaceruin{
- gpstag = "Public Holophone"
- },
-/obj/machinery/light/small{
- dir = 1
+/obj/machinery/atmospherics/components/tank/air/layer4{
+ dir = 8
},
/obj/structure/window/reinforced/spawner/directional/west,
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/weather/snow,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"M" = (
/turf/closed/wall/ice,
/area/ruin/powered/icemoon_phone_booth)
"R" = (
-/obj/effect/spawner/structure/window/hollow/reinforced,
-/turf/open/floor/plating/icemoon,
+/obj/machinery/holopad,
+/obj/machinery/airalarm/directional/north,
+/obj/effect/mapping_helpers/airalarm/all_access,
+/turf/open/floor/iron/dark/smooth_large,
/area/ruin/powered/icemoon_phone_booth)
"V" = (
-/obj/structure/lattice,
-/turf/open/misc/asteroid/snow/icemoon,
-/area/ruin/powered/icemoon_phone_booth)
-"W" = (
-/obj/machinery/vending/cigarette{
- all_products_free = 0
- },
+/obj/machinery/vending/coffee,
/obj/structure/window/reinforced/spawner/directional/east,
+/obj/effect/turf_decal/tile/yellow/half/contrasted{
+ dir = 8
+ },
+/obj/effect/turf_decal/weather/snow/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/weather/snow,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
+"W" = (
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/underground/explored)
(1,1,1) = {"
-v
+q
M
+V
k
-W
M
+c
"}
(2,1,1) = {"
-e
+W
+M
R
a
z
c
"}
(3,1,1) = {"
-V
+e
M
+v
J
-q
M
+c
"}
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm
index eb537cd26f6c6..54b33b5e8111d 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm
@@ -311,7 +311,7 @@
},
/obj/structure/rack,
/obj/item/wrench,
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large/twenty_force,
/obj/machinery/light/small/built/directional/south,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/shuttle)
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
index e2b11a02964eb..e41c2db686323 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
@@ -90,6 +90,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
+"bp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"bu" = (
/obj/effect/turf_decal/siding/wood,
/obj/structure/table/wood,
@@ -216,9 +223,15 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 5
},
-/obj/machinery/smartfridge/organ,
-/obj/item/organ/alien/resinspinner,
-/obj/item/organ/eyes/night_vision,
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/item/clothing/gloves/latex/coroner{
+ pixel_x = -1;
+ pixel_y = 8
+ },
+/obj/item/clothing/mask/surgical{
+ pixel_x = 6;
+ pixel_y = 10
+ },
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"cE" = (
@@ -498,9 +511,10 @@
/obj/effect/decal/cleanable/blood/gibs/down,
/turf/open/floor/iron/cafeteria,
/area/ruin/syndibiodome)
-"gX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/warm/directional/west,
+"gZ" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"ha" = (
@@ -509,10 +523,10 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/noteleport)
"he" = (
-/mob/living/basic/gorilla/genetics,
/obj/effect/turf_decal/siding/wood/corner{
dir = 1
},
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/wood,
/area/ruin/syndibiodome)
"hf" = (
@@ -527,8 +541,8 @@
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"hm" = (
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt/dust,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark/small,
/area/ruin/syndibiodome)
"hr" = (
@@ -639,14 +653,12 @@
},
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
-"iq" = (
-/obj/structure/flora/rock/pile/style_random,
-/mob/living/carbon/human/species/monkey/angry,
-/turf/open/floor/grass,
-/area/ruin/syndibiodome)
"ir" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/dim/directional/east,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"iG" = (
@@ -723,16 +735,6 @@
},
/obj/effect/decal/cleanable/blood/drip,
/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/surgery_tray/full,
-/obj/item/clothing/gloves/latex/coroner{
- pixel_x = -1;
- pixel_y = 8
- },
-/obj/item/clothing/mask/surgical{
- pixel_x = 6;
- pixel_y = 10
- },
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"jd" = (
@@ -771,9 +773,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
-"jQ" = (
-/turf/closed/indestructible/syndicate/nodiagonal,
-/area/icemoon/surface/outdoors/noteleport)
"jR" = (
/obj/effect/decal/cleanable/blood/trails{
dir = 4
@@ -1025,9 +1024,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
-"mK" = (
-/turf/open/misc/asteroid/snow/icemoon,
-/area/ruin/syndibiodome)
"mV" = (
/obj/effect/turf_decal/siding/wideplating/dark,
/obj/effect/decal/cleanable/dirt/dust,
@@ -1040,6 +1036,9 @@
"mW" = (
/obj/effect/spawner/random/trash,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"mZ" = (
@@ -1113,6 +1112,13 @@
/obj/effect/turf_decal/trimline/dark_red/line,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
+"on" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"oq" = (
/obj/effect/decal/cleanable/blood/trails{
dir = 10
@@ -1147,7 +1153,7 @@
/obj/machinery/light/warm/directional/west,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"oH" = (
@@ -1346,7 +1352,6 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 1
},
-/mob/living/carbon/human/species/monkey/angry,
/obj/machinery/light/warm/directional/north,
/obj/machinery/digital_clock/directional/north,
/obj/effect/decal/cleanable/dirt,
@@ -1354,8 +1359,8 @@
/area/ruin/syndibiodome)
"rQ" = (
/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt/dust,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"rX" = (
@@ -1434,7 +1439,6 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/mapping_helpers/broken_machine,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
"td" = (
@@ -1701,12 +1705,20 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
+"vH" = (
+/obj/effect/spawner/random/trash,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"vJ" = (
/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
/obj/effect/turf_decal/trimline/purple/corner,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
"vK" = (
@@ -1959,7 +1971,6 @@
/obj/effect/turf_decal/trimline/dark/line{
dir = 1
},
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 1
},
@@ -2100,7 +2111,6 @@
/turf/open/floor/grass,
/area/ruin/syndibiodome)
"yU" = (
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/turf_decal/weather/dirt{
dir = 9
},
@@ -2235,6 +2245,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
+"Az" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"AA" = (
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 5
@@ -2262,9 +2279,9 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/storage/belt/security/webbing,
/obj/item/storage/toolbox/syndicate,
-/obj/item/gun/ballistic/automatic/pistol,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/m10mm,
+/obj/item/gun/ballistic/automatic/pistol/contraband,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"Ba" = (
@@ -2496,7 +2513,6 @@
/turf/open/floor/iron/white/small,
/area/ruin/syndibiodome)
"EE" = (
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/decal/cleanable/blood/trails{
dir = 1
},
@@ -2727,7 +2743,6 @@
"Hs" = (
/obj/structure/flora/bush/flowers_br/style_3,
/obj/structure/flora/bush/flowers_yw/style_3,
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/gibspawner/human/bodypartless,
/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
/turf/open/floor/grass,
@@ -2810,6 +2825,14 @@
},
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
+"Iq" = (
+/obj/machinery/light/small/dim/directional/west,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"IF" = (
/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
/obj/effect/turf_decal/siding/wideplating/dark/end{
@@ -2947,6 +2970,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
+"Kl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"Kn" = (
/obj/effect/decal/cleanable/blood/footprints{
dir = 2
@@ -3087,6 +3117,9 @@
"LA" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/dim/directional/west,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"LB" = (
@@ -3192,6 +3225,8 @@
/turf/open/floor/iron/cafeteria,
/area/ruin/syndibiodome)
"Mr" = (
+/obj/machinery/light/warm/directional/west,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"Mt" = (
@@ -3266,7 +3301,6 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 1
},
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/dark/line,
/obj/effect/decal/cleanable/dirt/dust,
@@ -3348,7 +3382,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 6
},
-/mob/living/basic/gorilla/genetics,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/grass,
/area/ruin/syndibiodome)
"NN" = (
@@ -3364,7 +3398,6 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 6
},
-/obj/effect/gibspawner/generic,
/obj/machinery/digital_clock/directional/east,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/plastitanium/red,
@@ -3379,11 +3412,8 @@
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"Os" = (
-/obj/structure/bodycontainer/morgue/beeper_off{
- dir = 8
- },
/obj/effect/turf_decal/trimline/tram/filled,
-/turf/open/floor/pod/dark,
+/turf/closed/indestructible/syndicate/nodiagonal,
/area/ruin/syndibiodome)
"Oy" = (
/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
@@ -3392,13 +3422,6 @@
},
/turf/open/floor/plating,
/area/ruin/syndibiodome)
-"OD" = (
-/mob/living/carbon/human/species/monkey/angry,
-/obj/effect/turf_decal/weather/dirt{
- dir = 6
- },
-/turf/open/floor/grass,
-/area/ruin/syndibiodome)
"OH" = (
/obj/effect/decal/cleanable/blood/trails{
dir = 8
@@ -3428,8 +3451,8 @@
/obj/machinery/light/warm/directional/east,
/obj/item/storage/belt/security/webbing,
/obj/item/gun/ballistic/automatic/pistol/contraband,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/m10mm,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"OM" = (
@@ -3446,6 +3469,9 @@
"ON" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/dim/directional/south,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"OO" = (
@@ -3477,7 +3503,7 @@
/area/ruin/syndibiodome)
"Pw" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 5
},
@@ -3640,7 +3666,6 @@
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"RK" = (
-/mob/living/carbon/human/species/monkey/angry,
/obj/structure/chair/office/tactical{
dir = 4
},
@@ -3659,8 +3684,9 @@
/area/icemoon/surface/outdoors/noteleport)
"RX" = (
/obj/effect/turf_decal/siding/wideplating/dark,
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt,
+/obj/effect/gibspawner/generic,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"Se" = (
@@ -3823,6 +3849,10 @@
dir = 1
},
/area/ruin/syndibiodome)
+"To" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/turf/open/floor/iron/dark,
+/area/ruin/syndibiodome)
"Tu" = (
/obj/structure/table/reinforced/plastitaniumglass,
/obj/effect/turf_decal/siding/wideplating/dark{
@@ -3897,6 +3927,7 @@
/obj/item/stack/sheet/mineral/uranium/five,
/obj/item/stack/sheet/mineral/uranium/five,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/warm/directional/east,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"TL" = (
@@ -3971,12 +4002,12 @@
/turf/open/floor/iron/dark/small,
/area/ruin/syndibiodome)
"Ux" = (
-/mob/living/basic/gorilla/genetics,
/obj/effect/gibspawner/human/bodypartless,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/blue/corner{
dir = 4
},
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"Uz" = (
@@ -4223,8 +4254,8 @@
/obj/effect/decal/cleanable/blood/tracks{
dir = 4
},
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
"XG" = (
@@ -4362,13 +4393,13 @@
/area/ruin/syndibiodome)
"YZ" = (
/obj/effect/turf_decal/siding/wideplating/dark,
-/mob/living/basic/gorilla/genetics,
/obj/structure/fluff/fake_vent,
/obj/effect/decal/cleanable/blood/trails{
dir = 1
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/gibspawner/human/bodypartless,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"Zd" = (
@@ -4690,7 +4721,7 @@ oq
Mc
zM
zM
-mK
+ys
ys
ys
tL
@@ -4727,8 +4758,8 @@ ck
ys
ys
zM
-Ut
-vx
+Kl
+on
xi
kw
wL
@@ -4820,8 +4851,8 @@ jS
ys
ys
zM
-Ut
-Ut
+Kl
+Kl
zM
Sr
zM
@@ -4867,7 +4898,7 @@ pg
pg
zM
zM
-Ut
+Kl
zM
zM
Ab
@@ -4914,7 +4945,7 @@ zd
ys
zM
Db
-Ut
+Kl
zM
kK
MB
@@ -4961,7 +4992,7 @@ pg
pg
zM
ic
-Ut
+Kl
zM
rK
YZ
@@ -5008,7 +5039,7 @@ uD
ys
zM
wY
-Ut
+Kl
zM
cB
ja
@@ -5102,10 +5133,10 @@ AI
ys
ys
zM
-Ut
-Ut
-zM
-zM
+Kl
+Kl
+Iq
+Ro
zM
zM
zM
@@ -5151,8 +5182,8 @@ Hi
zM
zM
Ut
-LA
-Ro
+Kl
+Ut
zM
qN
qU
@@ -5198,10 +5229,10 @@ ys
ys
zM
zM
-Ut
-Ut
-Ut
-vx
+Kl
+Kl
+Kl
+gZ
je
kt
XC
@@ -5582,7 +5613,7 @@ Fl
qN
IU
vu
-iq
+MH
YD
Fp
xz
@@ -5664,13 +5695,13 @@ ys
ck
zM
zM
-mW
-Ut
+vH
+bp
ir
-Ut
-Ut
-Ut
-vx
+bp
+bp
+bp
+Az
kw
Eq
CV
@@ -5711,7 +5742,7 @@ ys
ys
zM
MP
-Ut
+bp
zM
zM
Ut
@@ -5758,7 +5789,7 @@ ys
ys
zM
qa
-Ut
+bp
zM
zM
dS
@@ -5805,7 +5836,7 @@ ys
zM
zM
Sv
-Ut
+bp
zM
wx
RH
@@ -5852,7 +5883,7 @@ zM
zM
rZ
Ut
-Ut
+bp
zM
Ra
RX
@@ -5899,7 +5930,7 @@ zM
zM
zM
zM
-Ut
+bp
zM
Pw
Oi
@@ -5993,12 +6024,12 @@ Uc
qp
sR
zM
-Ut
-Ut
+bp
+bp
LA
-mW
-Ut
-vx
+vH
+bp
+Az
Nt
uW
Vv
@@ -6049,7 +6080,7 @@ qN
pY
XC
XC
-qN
+To
Ut
zM
Vj
@@ -6060,7 +6091,7 @@ XE
Mt
WB
iX
-OD
+cN
zM
ys
uD
@@ -6188,8 +6219,8 @@ zM
zM
zM
zM
-Vv
zM
+To
zM
LU
qN
@@ -6235,8 +6266,8 @@ zM
ek
Dc
zM
-zM
-zM
+Mr
+Ut
Mr
Ut
qN
@@ -6283,7 +6314,7 @@ MM
bu
zM
Kz
-gX
+Ut
Ut
Ut
zM
@@ -6428,7 +6459,7 @@ zM
zM
zM
ys
-jQ
+zM
zM
zM
zM
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm
index 579e6342b9292..6150ca807272c 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm
@@ -62,7 +62,7 @@
/turf/open/floor/plating/lavaland_atmos,
/area/ruin/unpowered)
"l" = (
-/turf/open/water/hot_spring,
+/turf/open/water/hot_spring/lavaland_atmos,
/area/lavaland/surface)
"m" = (
/obj/machinery/door/airlock/survival_pod/glass,
@@ -118,7 +118,7 @@
/obj/structure/chair/plastic{
dir = 8
},
-/turf/open/misc/ashplanet/wateryrock,
+/turf/open/misc/ashplanet/wateryrock/lavaland_atmos,
/area/lavaland/surface)
"y" = (
/obj/structure/chair/comfy/shuttle{
@@ -129,7 +129,7 @@
/area/ruin/unpowered)
"z" = (
/obj/item/book/manual/fish_catalog,
-/turf/open/misc/ashplanet/wateryrock,
+/turf/open/misc/ashplanet/wateryrock/lavaland_atmos,
/area/lavaland/surface)
"B" = (
/mob/living/basic/mining/goliath,
@@ -140,7 +140,7 @@
/turf/open/misc/asteroid/basalt/lava_land_surface,
/area/lavaland/surface)
"E" = (
-/turf/open/misc/ashplanet/wateryrock,
+/turf/open/misc/ashplanet/wateryrock/lavaland_atmos,
/area/lavaland/surface)
"F" = (
/obj/effect/mob_spawn/corpse/human/cargo_tech,
@@ -175,7 +175,7 @@
/area/ruin/powered)
"L" = (
/obj/item/storage/toolbox/fishing,
-/turf/open/misc/ashplanet/wateryrock,
+/turf/open/misc/ashplanet/wateryrock/lavaland_atmos,
/area/lavaland/surface)
"M" = (
/obj/structure/rack,
@@ -213,7 +213,7 @@
/area/ruin/powered)
"U" = (
/obj/item/bait_can/worm/premium,
-/turf/open/misc/ashplanet/wateryrock,
+/turf/open/misc/ashplanet/wateryrock/lavaland_atmos,
/area/lavaland/surface)
"V" = (
/obj/structure/table/survival_pod,
diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm
index 5d7b0c4bee510..4f032c8ac053b 100644
--- a/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm
+++ b/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm
@@ -30,7 +30,6 @@
/area/ruin/space/djstation)
"t" = (
/obj/structure/closet/secure_closet/freezer/fridge/all_access,
-/obj/machinery/light/directional/south,
/obj/effect/turf_decal/tile/bar/opposingcorners,
/obj/machinery/light/small/directional/south,
/turf/open/floor/iron,
diff --git a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
index c396ddb4121e7..ccbe450085dc9 100644
--- a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
+++ b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
@@ -351,7 +351,7 @@
"kp" = (
/obj/effect/spawner/random/environmentally_safe_anomaly/immobile,
/turf/template_noop,
-/area/space)
+/area/space/nearstation)
"kt" = (
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 1
diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm
index a8a4a968d976d..1ecb40291e33a 100644
--- a/_maps/RandomRuins/SpaceRuins/bus.dmm
+++ b/_maps/RandomRuins/SpaceRuins/bus.dmm
@@ -285,7 +285,7 @@
/turf/open/misc/asteroid/airless,
/area/ruin/space)
"ET" = (
-/mob/living/basic/lizard,
+/mob/living/basic/lizard/space,
/turf/open/misc/asteroid/airless,
/area/ruin/space)
"Fo" = (
diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
index 52a288e64e6d1..42fa98704a300 100644
--- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
+++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
@@ -98,7 +98,7 @@
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/dangerous_research/medical)
"aZ" = (
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/structure/table,
/turf/open/floor/plating/rust,
/area/ruin/space/has_grav/dangerous_research/medical)
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
index aa15bb27e8b98..35b18eff47ff8 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
@@ -122,7 +122,6 @@
/area/ruin/space/has_grav/garbagetruck/toystore)
"lm" = (
/obj/structure/spider/stickyweb,
-/obj/structure/spider/stickyweb/very_sticky,
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/toystore)
"mf" = (
@@ -182,7 +181,6 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/toystore)
"qX" = (
-/obj/structure/spider/stickyweb/very_sticky,
/obj/item/food/badrecipe/moldy,
/obj/structure/spider/stickyweb,
/obj/item/food/spidereggs{
diff --git a/_maps/RandomRuins/SpaceRuins/interdyne.dmm b/_maps/RandomRuins/SpaceRuins/interdyne.dmm
index 9c802b0be434c..46e22d19fb67b 100644
--- a/_maps/RandomRuins/SpaceRuins/interdyne.dmm
+++ b/_maps/RandomRuins/SpaceRuins/interdyne.dmm
@@ -1015,7 +1015,7 @@
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/has_grav/interdyne)
"PD" = (
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/structure/table/reinforced/rglass,
/turf/open/floor/mineral/plastitanium,
/area/ruin/space/has_grav/interdyne)
diff --git a/_maps/RandomRuins/SpaceRuins/meatderelict.dmm b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm
index 3e4bece11e8e5..96959954e2678 100644
--- a/_maps/RandomRuins/SpaceRuins/meatderelict.dmm
+++ b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm
@@ -484,7 +484,7 @@
/obj/effect/turf_decal/siding/blue{
dir = 6
},
-/obj/item/surgery_tray/full/deployed,
+/obj/effect/spawner/surgery_tray/full/deployed,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"kh" = (
@@ -728,8 +728,8 @@
/obj/effect/turf_decal/siding/purple{
dir = 1
},
-/obj/item/ammo_casing/a357/spent,
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
+/obj/item/ammo_casing/c357/spent,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"oQ" = (
@@ -887,7 +887,7 @@
/obj/effect/turf_decal/siding/purple{
dir = 1
},
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"rl" = (
@@ -1561,9 +1561,9 @@
/turf/open/indestructible/plating,
/area/ruin/space/has_grav/powered/biooutpost)
"DC" = (
-/obj/item/ammo_casing/a357/spent,
-/obj/item/ammo_casing/a357/spent,
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
+/obj/item/ammo_casing/c357/spent,
+/obj/item/ammo_casing/c357/spent,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"DJ" = (
diff --git a/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm b/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm
index c98a43e89c2ab..7a76e71debf6e 100644
--- a/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm
+++ b/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm
@@ -6,7 +6,7 @@
/area/ruin)
"dI" = (
/obj/item/grown/bananapeel,
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 9;
pixel_x = -13;
pixel_y = 10
@@ -78,19 +78,19 @@
},
/obj/effect/decal/cleanable/blood/gibs,
/obj/machinery/light/small/broken/directional/south,
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/turf/open/floor/iron/checker/airless,
/area/ruin)
"uc" = (
/obj/effect/decal/cleanable/blood/footprints{
dir = 4
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = -5;
dir = 5;
pixel_y = 6
},
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/obj/item/gps/spaceruin,
/turf/open/floor/plating/airless,
/area/ruin)
@@ -204,7 +204,7 @@
/obj/effect/mob_spawn/corpse/human/clown,
/obj/effect/decal/cleanable/blood/footprints,
/obj/effect/decal/cleanable/dirt,
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/turf/open/floor/plating/airless,
/area/ruin)
"Ij" = (
@@ -253,7 +253,7 @@
"Pq" = (
/obj/machinery/light/broken/directional/north,
/obj/structure/reagent_dispensers/watertank,
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/turf/open/floor/iron/checker/airless,
/area/ruin)
"Qb" = (
diff --git a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm
index 4b42f668c3377..85c2910d1fab8 100644
--- a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm
+++ b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm
@@ -210,8 +210,8 @@
"nF" = (
/obj/item/radio/intercom/directional/south,
/obj/effect/decal/cleanable/blood/old,
-/obj/item/ammo_casing/a357/match,
-/obj/item/ammo_casing/a357/match{
+/obj/item/ammo_casing/c357/match,
+/obj/item/ammo_casing/c357/match{
pixel_y = -4;
pixel_x = -7
},
@@ -306,7 +306,7 @@
/area/ruin/space/unpowered)
"uS" = (
/obj/machinery/newscaster/directional/south,
-/obj/item/ammo_casing/a357/match,
+/obj/item/ammo_casing/c357/match,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/unpowered)
"vi" = (
@@ -425,7 +425,7 @@
/turf/open/floor/mineral/plastitanium/red/airless,
/area/ruin/space/unpowered)
"Cv" = (
-/obj/item/ammo_casing/a357/match,
+/obj/item/ammo_casing/c357/match,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/unpowered)
"CC" = (
diff --git a/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm b/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm
index 6acec2ccc4393..7b0f8a6e8fbcc 100644
--- a/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm
+++ b/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm
@@ -147,8 +147,8 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space/prison_shuttle)
"O" = (
-/mob/living/basic/cockroach,
/obj/effect/turf_decal/tile/brown/fourcorners,
+/obj/effect/decal/cleanable/xenoblood/xsplatter,
/turf/open/floor/iron/dark/airless,
/area/ruin/space/prison_shuttle)
"P" = (
diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm
index 5377a113df53c..592b425385099 100644
--- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm
+++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm
@@ -4146,14 +4146,14 @@
"Eb" = (
/obj/structure/cable,
/obj/effect/mapping_helpers/burnt_floor,
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = -6;
pixel_y = 3
},
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = -5
},
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = 6;
dir = 9;
pixel_y = -3
@@ -5018,8 +5018,8 @@
/turf/open/floor/plating/airless,
/area/space/nearstation)
"IG" = (
-/obj/item/ammo_casing/a357,
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357,
+/obj/item/ammo_casing/c357{
pixel_x = 5;
pixel_y = 6
},
@@ -5893,8 +5893,8 @@
/turf/open/floor/plating,
/area/ruin/space/ks13/science/ordnance)
"Nk" = (
-/obj/effect/spawner/random/maintenance,
/obj/structure/lattice,
+/obj/effect/spawner/random/maintenance/no_decals,
/turf/template_noop,
/area/space/nearstation)
"Nl" = (
@@ -6330,11 +6330,11 @@
/turf/open/floor/iron/airless,
/area/ruin/space/ks13/hallway/aft)
"Pv" = (
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = 4;
pixel_y = -7
},
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = -5
},
/obj/structure/cable,
@@ -6847,12 +6847,12 @@
"Sk" = (
/obj/structure/cable,
/obj/effect/mapping_helpers/burnt_floor,
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = 6;
pixel_y = -4
},
-/obj/item/ammo_casing/a357,
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357,
+/obj/item/ammo_casing/c357{
pixel_x = -10;
pixel_y = 7;
dir = 9
@@ -7599,12 +7599,12 @@
/area/ruin/space/ks13/service/hydro)
"VH" = (
/obj/effect/mapping_helpers/burnt_floor,
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = 8;
dir = 8;
pixel_y = 6
},
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = 6;
pixel_y = -4
},
diff --git a/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm b/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm
index 71074aa4451fd..3534df8db024a 100644
--- a/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm
+++ b/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm
@@ -63,7 +63,7 @@
/obj/structure/chair/old{
dir = 1
},
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large/twenty_force,
/turf/open/floor/oldshuttle,
/area/ruin/space/has_grav/powered)
"o" = (
diff --git a/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm b/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm
index b31a11cba31ca..a358d59956e83 100644
--- a/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm
+++ b/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm
@@ -1,15 +1,15 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aj" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 12
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -7;
pixel_y = 6
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 4;
pixel_x = 14;
pixel_y = 14
@@ -45,40 +45,40 @@
/turf/template_noop,
/area/template_noop)
"bM" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = -1;
pixel_y = 5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -7;
pixel_y = 6
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = -5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 2
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 4;
pixel_x = 14;
pixel_y = 14
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = -5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = 12
@@ -168,7 +168,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"eI" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = -1;
pixel_y = 5
@@ -213,17 +213,17 @@
/turf/open/misc/asteroid/basalt/airless,
/area/ruin/space)
"gq" = (
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/obj/structure/barricade/wooden,
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"gx" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -7;
pixel_y = 6
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 2
},
@@ -280,41 +280,41 @@
/turf/open/floor/iron/dark/textured/airless,
/area/ruin/space)
"je" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 10;
pixel_y = 5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = 12
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -2;
pixel_y = -5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 2
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = 1
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 2;
pixel_y = 6;
dir = 1
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = -6
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_y = 13;
pixel_x = -5
@@ -322,7 +322,7 @@
/turf/open/floor/mineral/plastitanium/red/airless,
/area/ruin/space)
"jX" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9;
pixel_y = 9
@@ -354,7 +354,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"mC" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 4;
pixel_x = 14;
pixel_y = 14
@@ -392,7 +392,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"pl" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = -5
@@ -434,11 +434,11 @@
/area/ruin/space)
"qX" = (
/obj/effect/mapping_helpers/broken_floor,
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 2;
pixel_y = 12
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9;
pixel_y = 9
@@ -455,7 +455,7 @@
/area/ruin/space)
"rU" = (
/obj/effect/mapping_helpers/broken_floor,
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9
},
@@ -482,7 +482,7 @@
/area/ruin/space)
"su" = (
/obj/effect/mapping_helpers/broken_floor,
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = 12
@@ -541,7 +541,7 @@
/turf/open/misc/asteroid/basalt/airless,
/area/ruin/space)
"vA" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = -1;
pixel_y = 5
@@ -549,7 +549,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"vZ" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -2;
pixel_y = -5
@@ -588,7 +588,7 @@
/turf/open/floor/mineral/plastitanium/airless,
/area/ruin/space)
"xi" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 4;
pixel_x = 14;
pixel_y = 14
@@ -726,7 +726,7 @@
/area/ruin/space)
"Dm" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 12
},
@@ -786,7 +786,7 @@
/turf/open/misc/asteroid/basalt/airless,
/area/ruin/space)
"FQ" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 2
},
@@ -804,7 +804,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"GA" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 4;
pixel_x = 14;
pixel_y = 14
@@ -822,7 +822,7 @@
/area/ruin/space)
"HE" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 2;
pixel_y = 12
},
@@ -881,7 +881,7 @@
/turf/open/floor/mineral/plastitanium/airless,
/area/ruin/space)
"JP" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 2;
pixel_y = 12
},
@@ -897,11 +897,11 @@
/turf/open/floor/mineral/plastitanium/red/airless,
/area/ruin/space)
"Kd" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9;
pixel_y = 9
@@ -909,7 +909,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"Kp" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 10;
pixel_y = 5
@@ -940,14 +940,14 @@
/turf/open/floor/iron/dark/textured/airless,
/area/ruin/space)
"LM" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 2;
pixel_y = 12
},
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"LX" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = 12
@@ -973,7 +973,7 @@
/turf/open/floor/mineral/plastitanium/red/airless,
/area/ruin/space)
"Nc" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 10;
pixel_y = 5
@@ -1047,7 +1047,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"TH" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9
},
@@ -1065,7 +1065,7 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"Uy" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -7;
pixel_y = 6
@@ -1102,36 +1102,36 @@
/turf/open/floor/mineral/plastitanium/airless,
/area/ruin/space)
"Vn" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 4;
pixel_x = 14;
pixel_y = 14
},
-/obj/item/ammo_casing/a357/spent,
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent,
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 10;
pixel_y = 5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 10;
pixel_y = 5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -7;
pixel_y = 6
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 2;
pixel_y = 12
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = 9;
pixel_y = 9
@@ -1152,7 +1152,7 @@
/turf/open/floor/mineral/plastitanium/airless,
/area/ruin/space)
"VB" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 2
},
@@ -1209,40 +1209,40 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space)
"Zg" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 10;
pixel_y = 5
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = 7
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -4;
pixel_y = -7
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 2;
pixel_y = 12
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 1;
pixel_x = -1;
pixel_y = 8
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -2;
pixel_y = -4
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = -7;
pixel_y = 8
},
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_x = 5;
pixel_y = -4
},
@@ -1259,7 +1259,7 @@
/turf/open/floor/mineral/plastitanium/airless,
/area/ruin/space)
"ZP" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
dir = 8;
pixel_x = 2;
pixel_y = 1
diff --git a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
index 719088322f21e..922715ca8d7f3 100644
--- a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
+++ b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
@@ -701,7 +701,7 @@
/area/ruin/space/has_grav/the_outlet/employeesection)
"rF" = (
/obj/structure/table/reinforced/rglass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/reagent_containers/syringe/lethal/execution,
/turf/open/floor/iron/freezer,
/area/ruin/space/has_grav/the_outlet/researchrooms)
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm
index a8f52784b343a..c830fdc968fa1 100644
--- a/_maps/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/moonoutpost19.dmm
@@ -4131,7 +4131,7 @@
/area/awaymission/moonoutpost19/arrivals/shed)
"Bf" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = -2;
pixel_y = -7
},
@@ -6467,7 +6467,7 @@
"QZ" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = 11;
pixel_y = 8
},
@@ -7514,7 +7514,7 @@
/obj/item/stack/ore/glass{
pixel_x = 8
},
-/obj/item/ammo_casing/a357{
+/obj/item/ammo_casing/c357{
pixel_x = -10;
pixel_y = -7
},
diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm
index c2c7b24788d7c..42a23d57808db 100644
--- a/_maps/_basemap.dm
+++ b/_maps/_basemap.dm
@@ -11,7 +11,6 @@
#include "map_files\IceBoxStation\IceBoxStation.dmm"
#include "map_files\MetaStation\MetaStation.dmm"
#include "map_files\Mining\Lavaland.dmm"
- #include "map_files\NorthStar\north_star.dmm"
#include "map_files\tramstation\tramstation.dmm"
#include "map_files\NebulaStation\NebulaStation.dmm"
#include "map_files\wawastation\wawastation.dmm"
diff --git a/_maps/deathmatch/arena_station.dmm b/_maps/deathmatch/arena_station.dmm
index 50089df45e8a0..8009387c50258 100644
--- a/_maps/deathmatch/arena_station.dmm
+++ b/_maps/deathmatch/arena_station.dmm
@@ -79,7 +79,7 @@
/obj/structure/closet/crate/cardboard,
/obj/effect/turf_decal/tile/brown/fourcorners,
/obj/item/mail/junkmail,
-/obj/item/ammo_casing/a357,
+/obj/item/ammo_casing/c357,
/obj/item/reagent_containers/syringe/plasma,
/turf/open/indestructible,
/area/deathmatch)
diff --git a/_maps/deathmatch/species_warfare.dmm b/_maps/deathmatch/species_warfare.dmm
index e80485c2b5e5c..66e7e9b2275aa 100644
--- a/_maps/deathmatch/species_warfare.dmm
+++ b/_maps/deathmatch/species_warfare.dmm
@@ -23,7 +23,7 @@
dir = 1
},
/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/indestructible/white,
/area/deathmatch)
"bX" = (
@@ -228,7 +228,7 @@
"iM" = (
/obj/effect/turf_decal/tile/blue/half/contrasted,
/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/indestructible/white,
/area/deathmatch)
"iV" = (
diff --git a/_maps/doppler/deathmatch/cybersun_sim.dmm b/_maps/doppler/deathmatch/cybersun_sim.dmm
new file mode 100644
index 0000000000000..619a3405bdc99
--- /dev/null
+++ b/_maps/doppler/deathmatch/cybersun_sim.dmm
@@ -0,0 +1,978 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aQ" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"aZ" = (
+/obj/structure/fluff/fake_scrubber,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"bA" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/line{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"bM" = (
+/obj/effect/light_emitter{
+ set_cap = 2;
+ light_color = "#DEEFFF";
+ set_luminosity = 4
+ },
+/obj/effect/turf_decal/syndicateemblem/middle/middle,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"cB" = (
+/obj/structure/fluff/fake_vent,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"cG" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/line,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"ds" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/warning{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"dQ" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"eP" = (
+/obj/effect/turf_decal/stripes/red/corner{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"fS" = (
+/obj/effect/turf_decal/siding/dark/corner{
+ dir = 4
+ },
+/turf/closed/wall/r_wall/syndicate,
+/area/deathmatch)
+"gQ" = (
+/obj/structure/fluff/fake_camera{
+ dir = 4
+ },
+/obj/item/storage/medkit/civil_defense/stocked{
+ pixel_y = 3
+ },
+/obj/structure/rack,
+/turf/open/floor/engine,
+/area/deathmatch)
+"hm" = (
+/obj/machinery/light/floor,
+/obj/effect/turf_decal/siding/dark{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"hY" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/turf/open/floor/plating,
+/area/deathmatch)
+"hZ" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"iL" = (
+/obj/machinery/light/directional/east,
+/turf/open/floor/engine,
+/area/deathmatch)
+"iO" = (
+/obj/effect/turf_decal/siding/dark/corner,
+/turf/closed/wall/r_wall/syndicate,
+/area/deathmatch)
+"jp" = (
+/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
+/turf/open/floor/plating,
+/area/deathmatch)
+"jH" = (
+/obj/effect/turf_decal/syndicateemblem/middle/right,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"kB" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"kY" = (
+/obj/item/forging/reagent_weapon/axe{
+ pixel_y = -3
+ },
+/obj/item/forging/reagent_weapon/axe{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/structure/table/reinforced/ctf,
+/turf/open/floor/engine,
+/area/deathmatch)
+"lg" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"mq" = (
+/obj/structure/emergency_shield/timer,
+/obj/effect/light_emitter{
+ set_cap = 2;
+ light_color = "#DEEFFF";
+ set_luminosity = 4
+ },
+/obj/effect/turf_decal/siding/dark{
+ dir = 8
+ },
+/obj/effect/turf_decal/siding/dark{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"mv" = (
+/obj/effect/turf_decal/syndicateemblem/bottom/left,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"mH" = (
+/obj/effect/turf_decal/siding/dark/corner{
+ dir = 8
+ },
+/turf/closed/wall/r_wall/syndicate,
+/area/deathmatch)
+"ne" = (
+/obj/structure/emergency_shield/timer,
+/obj/effect/turf_decal/siding/dark{
+ dir = 8
+ },
+/obj/effect/turf_decal/siding/dark{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"nf" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/deathmatch)
+"nr" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"od" = (
+/obj/item/forging/reagent_weapon/spear{
+ pixel_x = 3
+ },
+/obj/item/forging/reagent_weapon/hammer{
+ pixel_x = -3
+ },
+/obj/structure/table/reinforced/ctf,
+/turf/open/floor/engine,
+/area/deathmatch)
+"of" = (
+/obj/structure/emergency_shield/timer,
+/obj/effect/light_emitter{
+ set_cap = 2;
+ light_color = "#DEEFFF";
+ set_luminosity = 4
+ },
+/obj/effect/turf_decal/siding/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/siding/dark{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"ot" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/warning,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"pi" = (
+/obj/effect/turf_decal/stripes/red/corner{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"pp" = (
+/obj/item/forging/reagent_weapon/dagger{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/forging/reagent_weapon/dagger{
+ pixel_y = -3
+ },
+/obj/structure/table/reinforced/ctf,
+/turf/open/floor/engine,
+/area/deathmatch)
+"pM" = (
+/obj/structure/emergency_shield/timer,
+/obj/effect/light_emitter{
+ set_cap = 2;
+ light_color = "#DEEFFF";
+ set_luminosity = 4
+ },
+/obj/effect/turf_decal/siding/dark{
+ dir = 1
+ },
+/obj/effect/turf_decal/siding/dark,
+/turf/open/floor/plating,
+/area/deathmatch)
+"qz" = (
+/obj/structure/lattice,
+/obj/structure/marker_beacon/burgundy,
+/turf/template_noop,
+/area/deathmatch)
+"qE" = (
+/obj/effect/turf_decal/stripes/red/line{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"qM" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"sn" = (
+/obj/item/forging/reagent_weapon/katana{
+ pixel_x = -6
+ },
+/obj/item/forging/reagent_weapon/sword{
+ pixel_x = 6
+ },
+/obj/structure/table/reinforced/ctf,
+/turf/open/floor/engine,
+/area/deathmatch)
+"sN" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"te" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"tf" = (
+/obj/structure/fluff/fake_camera{
+ dir = 9
+ },
+/obj/item/storage/medkit/civil_defense/stocked{
+ pixel_y = 3
+ },
+/obj/structure/rack,
+/turf/open/floor/engine,
+/area/deathmatch)
+"zA" = (
+/obj/effect/turf_decal/stripes/red/line{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"zZ" = (
+/obj/structure/emergency_shield/timer,
+/obj/effect/turf_decal/siding/dark{
+ dir = 1
+ },
+/obj/effect/turf_decal/siding/dark,
+/turf/open/floor/plating,
+/area/deathmatch)
+"AS" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"Bc" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"Bg" = (
+/obj/effect/turf_decal/syndicateemblem/bottom/right,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"BI" = (
+/obj/machinery/light/floor,
+/obj/effect/turf_decal/siding/dark{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"Cz" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"CG" = (
+/obj/machinery/light/directional/south,
+/turf/open/floor/engine,
+/area/deathmatch)
+"CW" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"Ec" = (
+/obj/structure/emergency_shield/timer,
+/obj/effect/turf_decal/siding/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/siding/dark{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"Fe" = (
+/obj/effect/turf_decal/stripes/red/line{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"Fw" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/warning{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"Gy" = (
+/obj/effect/landmark/deathmatch_player_spawn,
+/turf/open/floor/engine,
+/area/deathmatch)
+"HH" = (
+/turf/open/floor/engine,
+/area/deathmatch)
+"IG" = (
+/obj/effect/turf_decal/syndicateemblem/top/middle,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"IL" = (
+/obj/effect/turf_decal/syndicateemblem/bottom/middle,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"Ji" = (
+/obj/effect/turf_decal/syndicateemblem/top/left,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"Jy" = (
+/obj/machinery/light/floor,
+/obj/effect/turf_decal/siding/dark,
+/turf/open/floor/plating,
+/area/deathmatch)
+"Ke" = (
+/turf/open/ai_visible,
+/area/deathmatch)
+"KB" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"KD" = (
+/obj/structure/fluff/fake_camera{
+ dir = 10
+ },
+/obj/item/storage/medkit/civil_defense/stocked{
+ pixel_y = 3
+ },
+/obj/structure/rack,
+/turf/open/floor/engine,
+/area/deathmatch)
+"Mj" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"NM" = (
+/obj/effect/turf_decal/stripes/red/corner{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"NN" = (
+/obj/effect/turf_decal/stripes/red/corner,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"NR" = (
+/turf/closed/wall/r_wall/syndicate,
+/area/deathmatch)
+"Pu" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/line{
+ dir = 1
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"PI" = (
+/obj/machinery/light/directional/north,
+/turf/open/floor/engine,
+/area/deathmatch)
+"PK" = (
+/turf/template_noop,
+/area/deathmatch)
+"Re" = (
+/obj/effect/turf_decal/stripes/red/line,
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"Ro" = (
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"Rx" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"Tw" = (
+/obj/effect/turf_decal/syndicateemblem/middle/left,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"Un" = (
+/obj/effect/turf_decal/syndicateemblem/top/right,
+/turf/open/floor/mineral/plastitanium/red,
+/area/deathmatch)
+"Vi" = (
+/obj/machinery/light/directional/west,
+/turf/open/floor/engine,
+/area/deathmatch)
+"WB" = (
+/obj/structure/fluff/fake_camera,
+/obj/item/storage/medkit/civil_defense/stocked{
+ pixel_y = 3
+ },
+/obj/structure/rack,
+/turf/open/floor/engine,
+/area/deathmatch)
+"Xt" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/warning{
+ dir = 4
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+"Yl" = (
+/obj/effect/turf_decal/siding/dark/corner{
+ dir = 1
+ },
+/turf/closed/wall/r_wall/syndicate,
+/area/deathmatch)
+"YG" = (
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/effect/turf_decal/siding/dark,
+/turf/open/floor/plating,
+/area/deathmatch)
+"YZ" = (
+/obj/machinery/light/floor,
+/obj/effect/turf_decal/siding/dark{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/deathmatch)
+"Zf" = (
+/turf/closed/indestructible/syndicate,
+/area/deathmatch)
+"Zs" = (
+/obj/effect/turf_decal/trimline/dark_red/filled/line{
+ dir = 8
+ },
+/turf/open/floor/mineral/plastitanium,
+/area/deathmatch)
+
+(1,1,1) = {"
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+"}
+(2,1,1) = {"
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+NR
+NR
+NR
+NR
+NR
+NR
+NR
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+"}
+(3,1,1) = {"
+Ke
+Ke
+qz
+nf
+nf
+nf
+nf
+NR
+pp
+kY
+KD
+od
+sn
+Zf
+nf
+nf
+nf
+nf
+qz
+Ke
+Ke
+"}
+(4,1,1) = {"
+Ke
+Ke
+nf
+PK
+PK
+PK
+nf
+NR
+PI
+HH
+Gy
+HH
+CG
+Zf
+nf
+PK
+PK
+PK
+nf
+Ke
+Ke
+"}
+(5,1,1) = {"
+Ke
+Ke
+nf
+PK
+jp
+jp
+jp
+iO
+ne
+ne
+mq
+ne
+ne
+fS
+jp
+jp
+jp
+PK
+nf
+Ke
+Ke
+"}
+(6,1,1) = {"
+Ke
+Ke
+nf
+PK
+jp
+hY
+hY
+Jy
+qM
+ds
+Zs
+ds
+sN
+YZ
+hY
+hY
+jp
+PK
+nf
+Ke
+Ke
+"}
+(7,1,1) = {"
+Ke
+Ke
+nf
+nf
+jp
+hY
+hY
+YG
+Ro
+aZ
+Ro
+cB
+Ro
+Rx
+hY
+hY
+jp
+nf
+nf
+Ke
+Ke
+"}
+(8,1,1) = {"
+Ke
+NR
+NR
+NR
+iO
+hm
+aQ
+Cz
+Ro
+Ro
+KB
+Ro
+Ro
+AS
+aQ
+hm
+fS
+Zf
+Zf
+NR
+Ke
+"}
+(9,1,1) = {"
+Ke
+NR
+sn
+Vi
+zZ
+Mj
+Ro
+Ro
+NN
+qE
+qE
+qE
+NM
+Ro
+Ro
+lg
+zZ
+Vi
+pp
+NR
+Ke
+"}
+(10,1,1) = {"
+Ke
+NR
+od
+HH
+zZ
+Fw
+cB
+Ro
+Re
+Ji
+Tw
+mv
+Fe
+Ro
+aZ
+ot
+zZ
+HH
+kY
+NR
+Ke
+"}
+(11,1,1) = {"
+Ke
+NR
+tf
+Gy
+pM
+Pu
+Ro
+KB
+Re
+IG
+bM
+IL
+Fe
+KB
+Ro
+cG
+pM
+Gy
+WB
+NR
+Ke
+"}
+(12,1,1) = {"
+Ke
+NR
+kY
+HH
+zZ
+Fw
+aZ
+Ro
+Re
+Un
+jH
+Bg
+Fe
+Ro
+cB
+ot
+zZ
+HH
+od
+NR
+Ke
+"}
+(13,1,1) = {"
+Ke
+NR
+pp
+iL
+zZ
+hZ
+Ro
+Ro
+pi
+zA
+zA
+zA
+eP
+Ro
+Ro
+te
+zZ
+iL
+sn
+NR
+Ke
+"}
+(14,1,1) = {"
+Ke
+NR
+NR
+NR
+mH
+BI
+kB
+Bc
+Ro
+Ro
+KB
+Ro
+Ro
+nr
+kB
+BI
+Yl
+NR
+NR
+NR
+Ke
+"}
+(15,1,1) = {"
+Ke
+Ke
+nf
+nf
+jp
+hY
+hY
+YG
+Ro
+cB
+Ro
+aZ
+Ro
+Rx
+hY
+hY
+jp
+nf
+nf
+Ke
+Ke
+"}
+(16,1,1) = {"
+Ke
+Ke
+nf
+PK
+jp
+hY
+hY
+Jy
+CW
+Xt
+bA
+Xt
+dQ
+YZ
+hY
+hY
+jp
+PK
+nf
+Ke
+Ke
+"}
+(17,1,1) = {"
+Ke
+Ke
+nf
+PK
+jp
+jp
+jp
+mH
+Ec
+Ec
+of
+Ec
+Ec
+Yl
+jp
+jp
+jp
+PK
+nf
+Ke
+Ke
+"}
+(18,1,1) = {"
+Ke
+Ke
+nf
+PK
+PK
+PK
+nf
+NR
+PI
+HH
+Gy
+HH
+CG
+NR
+nf
+PK
+PK
+PK
+nf
+Ke
+Ke
+"}
+(19,1,1) = {"
+Ke
+Ke
+qz
+nf
+nf
+nf
+nf
+NR
+od
+sn
+gQ
+kY
+pp
+NR
+nf
+nf
+nf
+nf
+qz
+Ke
+Ke
+"}
+(20,1,1) = {"
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+NR
+NR
+NR
+NR
+NR
+NR
+NR
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+"}
+(21,1,1) = {"
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+Ke
+"}
diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm
index b42c05f4ea49b..de9e1338f2939 100644
--- a/_maps/map_files/Birdshot/birdshot.dmm
+++ b/_maps/map_files/Birdshot/birdshot.dmm
@@ -130,7 +130,7 @@
/obj/effect/turf_decal/siding/white,
/obj/machinery/light/small/directional/south,
/obj/structure/table/reinforced,
-/obj/item/surgery_tray/full/morgue,
+/obj/effect/spawner/surgery_tray/full/morgue,
/turf/open/floor/iron/small,
/area/station/medical/morgue)
"adL" = (
@@ -1666,7 +1666,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/firealarm/directional/west,
-/turf/open/floor/glass,
+/turf/open/floor/iron,
/area/station/command/heads_quarters/rd)
"aGy" = (
/obj/structure/flora/bush/large/style_random{
@@ -2837,6 +2837,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"bfe" = (
@@ -2858,6 +2859,7 @@
/obj/structure/disposalpipe/junction/flip{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"bfU" = (
@@ -3241,10 +3243,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/delivery/white,
/turf/closed/wall,
/area/station/maintenance/port/fore)
"bmT" = (
@@ -4959,6 +4957,10 @@
/obj/machinery/light/cold/directional/west,
/turf/open/floor/tram,
/area/station/security/tram)
+"bVr" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/small,
+/area/station/maintenance/department/engine)
"bVD" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -6737,6 +6739,7 @@
/area/space/nearstation)
"cCM" = (
/obj/structure/cable,
+/obj/structure/sink/kitchen/directional/east,
/turf/open/floor/iron/kitchen/small,
/area/station/service/kitchen)
"cCP" = (
@@ -6746,7 +6749,6 @@
/turf/open/floor/plating,
/area/station/maintenance/disposal/incinerator)
"cCV" = (
-/obj/effect/turf_decal/tile/brown/opposingcorners,
/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -7190,10 +7192,6 @@
"cKk" = (
/turf/closed/mineral/random/stationside,
/area/station/ai_monitored/turret_protected/aisat/maint)
-"cKm" = (
-/obj/machinery/camera/directional/west,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
"cKt" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -8485,6 +8483,7 @@
/obj/structure/rack/skeletal,
/obj/machinery/camera/autoname/directional/west,
/obj/structure/sign/poster/official/random/directional/north,
+/obj/structure/sign/poster/official/random/directional/west,
/turf/open/floor/iron/grimy,
/area/station/service/library/private)
"dgy" = (
@@ -10712,15 +10711,12 @@
/turf/open/floor/iron/white,
/area/station/medical/medbay/aft)
"dZa" = (
-/obj/structure/table/reinforced,
/obj/machinery/camera/directional/west,
/obj/effect/decal/cleanable/cobweb,
-/obj/item/retractor,
-/obj/item/hemostat,
-/obj/item/cautery,
/obj/machinery/camera/autoname/directional/north,
/obj/structure/sign/poster/official/random/directional/north,
/obj/machinery/status_display/ai/directional/west,
+/obj/effect/spawner/surgery_tray/full/deployed,
/turf/open/floor/iron/showroomfloor,
/area/station/medical/surgery/theatre)
"dZk" = (
@@ -10876,7 +10872,10 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
-/obj/machinery/door/window/right/directional/east,
+/obj/machinery/door/window/right/directional/east{
+ name = "Engineering Deliveries";
+ req_access = list("engineering")
+ },
/turf/open/floor/iron/smooth,
/area/station/engineering/main)
"ecn" = (
@@ -13995,13 +13994,13 @@
/turf/open/floor/iron/small,
/area/station/security/office)
"fhp" = (
-/obj/structure/table,
/obj/effect/spawner/random/food_or_drink/donkpockets{
pixel_y = 6
},
/obj/effect/turf_decal/siding{
dir = 8
},
+/obj/structure/table,
/turf/open/floor/iron/dark/textured_large,
/area/station/service/kitchen)
"fhT" = (
@@ -14979,6 +14978,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"fyZ" = (
@@ -15861,6 +15861,7 @@
dir = 1
},
/obj/machinery/power/apc/auto_name/directional/south,
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"fMg" = (
@@ -16212,7 +16213,7 @@
/area/station/maintenance/department/engine/atmos)
"fRI" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 8
+ dir = 4
},
/obj/machinery/portable_atmospherics/canister,
/turf/open/misc/asteroid,
@@ -17735,6 +17736,10 @@
},
/turf/open/floor/engine,
/area/station/engineering/supermatter/room)
+"gul" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron/small,
+/area/station/maintenance/department/engine)
"gun" = (
/obj/machinery/firealarm/directional/east,
/obj/effect/turf_decal/tile/red{
@@ -17874,10 +17879,6 @@
pixel_y = 8
},
/obj/item/clothing/mask/surgical,
-/obj/item/surgical_drapes{
- pixel_x = -1;
- pixel_y = 4
- },
/obj/machinery/status_display/evac/directional/west,
/turf/open/floor/iron/showroomfloor,
/area/station/medical/surgery/theatre)
@@ -19276,14 +19277,6 @@
/obj/machinery/light_switch/directional/east,
/turf/open/floor/iron/freezer,
/area/station/command/heads_quarters/captain/private)
-"gRH" = (
-/obj/machinery/button/door/directional/north{
- id = "Cabin4";
- name = "Cabin Bolt Control";
- normaldoorcontrol = 1
- },
-/turf/closed/wall,
-/area/station/service/abandoned_gambling_den)
"gRL" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -20068,6 +20061,11 @@
name = "Pharmacy Shutters Control";
req_access = list("pharmacy")
},
+/obj/item/reagent_containers/cup/bottle/multiver,
+/obj/item/reagent_containers/cup/bottle/epinephrine,
+/obj/item/reagent_containers/cup/bottle/formaldehyde,
+/obj/item/reagent_containers/cup/bottle/acidic_buffer,
+/obj/item/reagent_containers/cup/bottle/basic_buffer,
/turf/open/floor/iron/dark,
/area/station/medical/pharmacy)
"hdT" = (
@@ -21439,6 +21437,7 @@
/obj/effect/turf_decal/siding/wideplating/corner{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/station/engineering/atmos/pumproom)
"hBq" = (
@@ -24186,6 +24185,7 @@
pixel_y = 18
},
/obj/structure/extinguisher_cabinet/directional/east,
+/obj/item/circuitboard/mecha/ripley/main,
/turf/open/floor/iron/dark,
/area/station/science/robotics/lab)
"ivC" = (
@@ -25595,6 +25595,16 @@
},
/turf/open/floor/iron/dark,
/area/station/ai_monitored/security/armory)
+"iPx" = (
+/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{
+ dir = 1;
+ filter_type = list(/datum/gas/nitrogen)
+ },
+/obj/effect/turf_decal/bot{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/station/engineering/supermatter/room)
"iPy" = (
/obj/structure/cable,
/turf/open/floor/iron,
@@ -25873,7 +25883,7 @@
/area/station/hallway/primary/port)
"iUp" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 8
+ dir = 4
},
/turf/open/floor/circuit,
/area/station/tcommsat/server)
@@ -26328,6 +26338,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"jab" = (
@@ -28056,6 +28067,11 @@
dir = 8
},
/area/station/commons/storage/tools)
+"jEY" = (
+/obj/structure/cable,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/iron/small,
+/area/station/security/processing)
"jEZ" = (
/obj/structure/hedge,
/obj/effect/decal/cleanable/dirt,
@@ -28169,7 +28185,9 @@
},
/area/station/cargo/storage)
"jGK" = (
-/obj/structure/chair/wood,
+/obj/structure/chair/wood{
+ dir = 1
+ },
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -29342,7 +29360,7 @@
"jYr" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/machinery/mecha_part_fabricator{
- dir = 8
+ drop_direction = 8
},
/obj/effect/turf_decal/stripes/box,
/turf/open/floor/iron/dark,
@@ -29723,7 +29741,7 @@
/area/station/cargo/lobby)
"kgu" = (
/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/components/unary/passive_vent,
+/obj/machinery/atmospherics/components/unary/passive_vent/layer2,
/turf/open/space/basic,
/area/space/nearstation)
"kgw" = (
@@ -30695,6 +30713,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
cycle_id = "engine_airlock_2"
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/catwalk_floor,
/area/station/engineering/break_room)
"kux" = (
@@ -30773,7 +30792,7 @@
"kvO" = (
/obj/machinery/light/small/directional/north,
/obj/machinery/camera/directional/east{
- c_tag = "Prison Isolation Cell";
+ c_tag = "Prison Reflection Chamber";
network = list("ss13","prison","isolation")
},
/obj/structure/chair,
@@ -31360,9 +31379,7 @@
/obj/effect/turf_decal/siding/wideplating/corner{
dir = 8
},
-/obj/effect/turf_decal/siding/wideplating/corner{
- dir = 6
- },
+/obj/effect/turf_decal/siding/wideplating/corner,
/turf/open/floor/wood,
/area/station/engineering/atmos/office)
"kHL" = (
@@ -33919,7 +33936,7 @@
/obj/effect/turf_decal/tile/dark_red/opposingcorners,
/obj/machinery/airalarm/directional/north,
/obj/structure/rack,
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large,
/obj/item/wirecutters,
/obj/item/wrench,
/turf/open/floor/iron,
@@ -34864,7 +34881,7 @@
/area/station/tcommsat/server)
"lPO" = (
/obj/structure/table,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = -5
},
/obj/item/wirecutters{
@@ -35514,7 +35531,7 @@
"mae" = (
/obj/structure/cable,
/turf/closed/wall,
-/area/station/service/bar)
+/area/station/maintenance/central/greater)
"maf" = (
/turf/closed/wall/rust,
/area/station/hallway/primary/fore)
@@ -39349,10 +39366,6 @@
/obj/machinery/door/firedoor,
/turf/open/floor/iron/textured_half,
/area/station/commons/fitness/recreation/entertainment)
-"num" = (
-/obj/effect/turf_decal/sand/plating,
-/turf/closed/wall,
-/area/station/maintenance/port/lesser)
"nun" = (
/obj/structure/flora/bush/flowers_br/style_random{
pixel_x = -3;
@@ -40681,6 +40694,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"nSd" = (
@@ -41305,7 +41319,6 @@
/turf/open/floor/iron/smooth_large,
/area/station/maintenance/department/medical/central)
"ofx" = (
-/obj/effect/turf_decal/sand/plating,
/turf/closed/wall/r_wall,
/area/space/nearstation)
"ofU" = (
@@ -43687,6 +43700,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"oYj" = (
@@ -43761,7 +43775,7 @@
/area/station/science/ordnance/burnchamber)
"oZL" = (
/obj/structure/table,
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large,
/obj/item/stack/cable_coil,
/obj/machinery/light/small/directional/south,
/turf/open/floor/iron,
@@ -46106,6 +46120,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron/small,
/area/station/hallway/primary/port)
"pOQ" = (
@@ -47512,7 +47527,7 @@
/obj/machinery/door/airlock/maintenance{
name = "Atmospherics Maintenance"
},
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
+/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
/turf/open/floor/plating,
/area/station/maintenance/department/engine/atmos)
"qmz" = (
@@ -50253,7 +50268,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/item/radio/intercom/directional/west,
-/turf/open/floor/glass,
+/turf/open/floor/iron,
/area/station/command/heads_quarters/rd)
"rfP" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -50743,7 +50758,8 @@
"rqt" = (
/obj/machinery/airalarm/directional/north,
/obj/effect/decal/cleanable/dirt,
-/obj/structure/aquarium/lawyer,
+/obj/item/fish_tank/lawyer,
+/obj/structure/table/wood,
/turf/open/floor/iron/dark,
/area/station/service/lawoffice)
"rqw" = (
@@ -51162,6 +51178,11 @@
/obj/effect/turf_decal/tile/blue,
/turf/open/floor/iron/dark/side,
/area/station/hallway/primary/central/fore)
+"rxG" = (
+/obj/structure/cable,
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/iron/small,
+/area/station/security/processing)
"rxJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -51221,10 +51242,10 @@
pixel_y = 2
},
/obj/item/holosign_creator/robot_seat/restaurant,
-/obj/structure/table,
/obj/effect/turf_decal/siding{
dir = 9
},
+/obj/structure/table,
/turf/open/floor/iron/dark/textured_large,
/area/station/service/kitchen)
"rya" = (
@@ -52583,7 +52604,7 @@
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
"rVI" = (
-/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{
+/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse{
dir = 8
},
/turf/open/floor/iron,
@@ -53115,6 +53136,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/purple/fourcorners,
+/obj/machinery/airalarm/directional/north,
/turf/open/floor/iron,
/area/station/engineering/atmos)
"sfB" = (
@@ -54459,8 +54481,8 @@
/obj/machinery/modular_computer/preset/research{
dir = 1
},
-/obj/machinery/light/small/directional/south,
/obj/effect/turf_decal/siding/purple,
+/obj/machinery/light/cold/directional/south,
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/rd)
"sDj" = (
@@ -54601,13 +54623,7 @@
/turf/open/misc/sandy_dirt,
/area/station/security/tram)
"sGt" = (
-/obj/structure/table/reinforced,
-/obj/item/scalpel{
- pixel_y = 12
- },
-/obj/item/blood_filter,
-/obj/item/circular_saw,
-/obj/item/bonesetter,
+/obj/structure/closet/crate/freezer/surplus_limbs,
/turf/open/floor/iron/showroomfloor,
/area/station/medical/surgery/theatre)
"sGE" = (
@@ -55419,10 +55435,10 @@
/obj/effect/turf_decal/siding/wood{
dir = 8
},
-/obj/structure/sign/poster/official/random/directional/west,
/obj/structure/destructible/cult/item_dispenser/archives/library,
/obj/item/book/codex_gigas,
/obj/machinery/light/small/dim/directional/west,
+/obj/machinery/airalarm/directional/west,
/turf/open/floor/iron/grimy,
/area/station/service/library/private)
"sTR" = (
@@ -56594,7 +56610,6 @@
/turf/open/floor/plating,
/area/station/maintenance/central/lesser)
"tnh" = (
-/obj/effect/turf_decal/tile/brown/opposingcorners,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/siding/wideplating{
@@ -57388,6 +57403,9 @@
/obj/item/gun/energy/ionrifle{
pixel_y = 3
},
+/obj/item/gun/ballistic/automatic/battle_rifle{
+ pixel_y = 5
+ },
/obj/item/clothing/suit/hooded/ablative,
/turf/open/floor/iron/dark/small,
/area/station/ai_monitored/security/armory)
@@ -59074,7 +59092,9 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 8
},
-/obj/structure/chair/wood,
+/obj/structure/chair/wood{
+ dir = 1
+ },
/turf/open/floor/iron/small,
/area/station/service/barber)
"ucJ" = (
@@ -61586,6 +61606,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"uQT" = (
@@ -62426,15 +62447,12 @@
/turf/open/floor/iron/smooth_large,
/area/station/science/robotics/mechbay)
"vfI" = (
-/obj/machinery/microwave{
- pixel_y = 5
- },
/obj/machinery/light_switch/directional/north,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/table,
/obj/effect/turf_decal/siding/end,
+/obj/machinery/smartfridge/drying,
/turf/open/floor/iron/dark/textured_large,
/area/station/service/kitchen)
"vfK" = (
@@ -62863,12 +62881,13 @@
/turf/open/floor/light/colour_cycle/dancefloor_b,
/area/station/maintenance/starboard/central)
"vlB" = (
-/obj/machinery/atmospherics/pipe/smart/simple/general/visible{
- dir = 4
- },
/obj/effect/turf_decal/sand/plating,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/north,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Gas to Filter"
+ },
/turf/open/floor/plating,
/area/station/maintenance/hallway/abandoned_command)
"vlV" = (
@@ -65162,9 +65181,15 @@
/turf/open/floor/iron/dark,
/area/station/command/corporate_dock)
"vTP" = (
-/obj/structure/sink/kitchen/directional/east,
/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/kitchen/small,
+/obj/structure/table,
+/obj/machinery/microwave{
+ pixel_y = 5
+ },
+/obj/effect/turf_decal/siding/end{
+ dir = 4
+ },
+/turf/open/floor/iron/dark/textured_large,
/area/station/service/kitchen)
"vTV" = (
/turf/closed/wall/r_wall,
@@ -67829,7 +67854,7 @@
/obj/effect/spawner/random/maintenance,
/obj/structure/rack,
/turf/open/floor/plating,
-/area/station/service/bar)
+/area/station/maintenance/central/greater)
"wKO" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/camera/directional/east,
@@ -68042,7 +68067,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/light_switch/directional/west,
-/turf/open/floor/glass,
+/turf/open/floor/iron,
/area/station/command/heads_quarters/rd)
"wNU" = (
/obj/structure/lattice/catwalk,
@@ -69552,6 +69577,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/station/hallway/primary/port)
"xiT" = (
@@ -69832,7 +69858,7 @@
"xnC" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/glass,
+/turf/open/floor/iron,
/area/station/command/heads_quarters/rd)
"xnE" = (
/turf/closed/wall/r_wall,
@@ -84434,7 +84460,7 @@ eHN
uhq
tXl
vAD
-num
+fEC
aJq
aJq
aJq
@@ -87640,7 +87666,7 @@ wCc
dDB
wZs
dDB
-bSo
+dDB
aJq
aJq
aJq
@@ -87690,7 +87716,7 @@ blb
dDB
dDB
dDB
-tYT
+gcs
aJq
dDB
slY
@@ -88461,7 +88487,7 @@ blb
dDB
dDB
tYT
-blb
+gcs
dDB
dDB
dDB
@@ -90216,7 +90242,7 @@ jNV
guh
cBl
fJe
-aJb
+iPx
cay
fMB
maK
@@ -90993,7 +91019,7 @@ pMM
tIR
hCT
kAz
-cKm
+tIR
szg
tpW
pUM
@@ -91873,11 +91899,11 @@ wpO
huE
wpO
wpO
-iYY
+rxG
xKv
blb
xKv
-iYY
+jEY
wpO
wpO
huE
@@ -93817,7 +93843,7 @@ dDB
dDB
dDB
vxt
-nST
+bVr
evM
aOa
rtX
@@ -94074,9 +94100,9 @@ dDB
dDB
dDB
vxt
+bVr
nST
-nST
-nST
+gul
vxt
yfa
yfa
@@ -94588,9 +94614,9 @@ dDB
dDB
dDB
vxt
-gcs
-gcs
-gcs
+vxt
+vxt
+vxt
vxt
vxt
vxt
@@ -94845,10 +94871,10 @@ dDB
dDB
dDB
dDB
-bSo
-bSo
-bSo
-bSo
+dDB
+dDB
+aJq
+aJq
aJq
vxt
hVq
@@ -98003,8 +98029,8 @@ xRV
jVM
xjQ
jVM
-tGq
-tGq
+jVM
+jVM
xmt
xmt
xmt
@@ -100316,7 +100342,7 @@ jVM
jVM
jVM
jVM
-vkh
+jVM
lnD
fzw
bKO
@@ -100760,15 +100786,15 @@ aJq
aJq
aJq
aJq
-gcs
-blb
-blb
-blb
-blb
-blb
-blb
-blb
-blb
+aJq
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+aJq
aJq
aJq
yjV
@@ -101017,15 +101043,15 @@ aJq
aJq
aJq
aJq
-tYT
-tYT
-dDB
-dDB
-dDB
-dDB
-dDB
-dDB
-aJq
+gcs
+blb
+blb
+blb
+blb
+blb
+blb
+blb
+gcs
aJq
aJq
aJq
@@ -101344,7 +101370,7 @@ jgb
hRc
jVM
kXC
-vkh
+jVM
dxV
jDT
fOq
@@ -101601,7 +101627,7 @@ vGe
xno
jVM
kXC
-vkh
+jVM
vkh
kWF
wtw
@@ -102115,7 +102141,7 @@ xHD
xHD
jVM
jBu
-vkh
+jVM
vkh
vkh
vkh
@@ -108877,7 +108903,7 @@ fnz
ufn
yhH
tuT
-dDB
+blb
dDB
dDB
dDB
@@ -109134,10 +109160,10 @@ meN
rDj
tuT
tuT
-dDB
-dDB
-dDB
-dDB
+blb
+blb
+blb
+xxo
dDB
dDB
dDB
@@ -109378,11 +109404,11 @@ vtC
vtC
kxL
vtC
-blb
dDB
dDB
dDB
-blb
+dDB
+dDB
vtC
kxL
vtC
@@ -109390,8 +109416,8 @@ vtC
vtC
vtC
tuT
-dDB
-dDB
+blb
+blb
dDB
dDB
dDB
@@ -109629,25 +109655,25 @@ idp
tuT
tuT
tuT
-dDB
-dDB
+blb
+blb
blb
vtC
cWZ
vtC
blb
-dDB
-dDB
-dDB
+blb
+blb
+blb
blb
vtC
cWZ
vtC
-blb
dDB
dDB
dDB
dDB
+blb
dDB
dDB
dDB
@@ -109885,22 +109911,12 @@ aNX
idp
vtC
blb
-blb
-blb
-blb
-blb
dDB
dDB
dDB
-blb
-blb
-blb
-blb
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
@@ -109914,6 +109930,16 @@ dDB
dDB
dDB
dDB
+blb
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
dDB
dDB
dDB
@@ -110145,19 +110171,12 @@ blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
-blb
-blb
-blb
-blb
dDB
dDB
dDB
@@ -110167,6 +110186,13 @@ dDB
dDB
dDB
dDB
+blb
+blb
+dDB
+dDB
+dDB
+dDB
+dDB
dDB
dDB
dDB
@@ -110402,19 +110428,15 @@ blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
@@ -110422,6 +110444,10 @@ dDB
dDB
dDB
dDB
+blb
+dDB
+dDB
+dDB
dDB
dDB
dDB
@@ -110659,20 +110685,12 @@ blb
dDB
dDB
dDB
-blb
-blb
-blb
-blb
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
-esv
dDB
dDB
dDB
@@ -110680,6 +110698,14 @@ dDB
dDB
dDB
dDB
+esv
+dDB
+dDB
+blb
+dDB
+dDB
+dDB
+dDB
dDB
dDB
dDB
@@ -110916,19 +110942,15 @@ blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
@@ -110936,6 +110958,10 @@ dDB
dDB
dDB
dDB
+blb
+dDB
+dDB
+dDB
dDB
dDB
dDB
@@ -111173,19 +111199,12 @@ blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
-blb
-blb
-blb
-blb
-blb
dDB
dDB
dDB
@@ -111195,6 +111214,13 @@ dDB
dDB
dDB
dDB
+blb
+blb
+dDB
+dDB
+dDB
+dDB
+dDB
dDB
dDB
dDB
@@ -111427,22 +111453,12 @@ nBF
idp
vtC
blb
-blb
-blb
-blb
-blb
dDB
dDB
dDB
-blb
-blb
-blb
-blb
-blb
dDB
dDB
dDB
-blb
dDB
dDB
dDB
@@ -111456,6 +111472,16 @@ dDB
dDB
dDB
dDB
+blb
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
+dDB
dDB
dDB
dDB
@@ -111685,25 +111711,25 @@ idp
tuT
tuT
tuT
-dDB
-dDB
+blb
+blb
blb
vtC
ijI
vtC
blb
-dDB
-dDB
-dDB
+blb
+blb
+blb
blb
vtC
ijI
vtC
-blb
dDB
dDB
dDB
dDB
+blb
dDB
dDB
dDB
@@ -111948,11 +111974,11 @@ vtC
vtC
kxL
vtC
-blb
dDB
dDB
dDB
-blb
+dDB
+dDB
vtC
kxL
vtC
@@ -111960,8 +111986,8 @@ vtC
vtC
vtC
tuT
-dDB
-dDB
+blb
+blb
dDB
dDB
dDB
@@ -112218,10 +112244,10 @@ vJN
fhZ
tuT
tuT
-dDB
-dDB
-dDB
-dDB
+blb
+blb
+blb
+xxo
dDB
dDB
dDB
@@ -112475,7 +112501,7 @@ vbR
ufn
yhH
tuT
-dDB
+blb
dDB
dDB
dDB
@@ -114947,7 +114973,7 @@ aJq
aJq
aJq
wOp
-gRH
+wOp
wOp
wOp
nWk
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 3cc15f7deffa7..a690aede2a2f6 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -44890,7 +44890,8 @@
/area/station/hallway/primary/fore)
"lhp" = (
/obj/structure/sign/poster/official/report_crimes/directional/south,
-/obj/structure/aquarium/lawyer,
+/obj/item/fish_tank/lawyer,
+/obj/structure/table/wood,
/turf/open/floor/wood,
/area/station/service/lawoffice)
"lhC" = (
@@ -53108,6 +53109,9 @@
"nmT" = (
/obj/structure/rack,
/obj/item/gun/energy/ionrifle,
+/obj/item/gun/ballistic/automatic/battle_rifle{
+ pixel_y = 3
+ },
/obj/item/clothing/suit/hooded/ablative,
/obj/item/gun/energy/temperature/security,
/obj/structure/window/reinforced/spawner/directional/south,
@@ -59893,7 +59897,7 @@
/area/station/service/abandoned_gambling_den/gaming)
"pcJ" = (
/obj/machinery/mecha_part_fabricator{
- dir = 4
+ drop_direction = 4
},
/obj/effect/turf_decal/bot_red,
/obj/effect/turf_decal/tile/neutral/full,
@@ -75219,7 +75223,7 @@
/area/station/service/abandoned_gambling_den/gaming)
"sOp" = (
/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/structure/window/reinforced/spawner/directional/west,
/obj/item/clothing/gloves/latex,
/obj/item/clothing/suit/apron/surgical,
@@ -79127,7 +79131,7 @@
dir = 4
},
/obj/structure/table/reinforced,
-/obj/item/surgery_tray/full/morgue,
+/obj/effect/spawner/surgery_tray/full/morgue,
/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
dir = 4
},
@@ -94583,7 +94587,7 @@
/area/station/cargo/storage)
"xES" = (
/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/gloves/latex,
/obj/item/clothing/suit/apron/surgical,
/obj/effect/turf_decal/tile/neutral/fourcorners,
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index 5a4a74216c43a..aa3df4dfd8a93 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -803,7 +803,7 @@
dir = 4
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"anP" = (
/obj/structure/table,
/obj/machinery/light_switch/directional/north,
@@ -841,6 +841,32 @@
"aom" = (
/obj/machinery/pdapainter/engineering,
/obj/effect/turf_decal/tile/neutral/full,
+/obj/machinery/button/door/directional/west{
+ id = "Engineering";
+ name = "Engineering Lockdown Control";
+ pixel_y = -8;
+ req_access = list("engineering")
+ },
+/obj/machinery/button/door/directional/west{
+ id = "engstorage";
+ name = "Engineering Secure Storage Control";
+ pixel_x = -36;
+ pixel_y = 4;
+ req_access = list("engine_equip")
+ },
+/obj/machinery/button/door/directional/west{
+ id = "atmos";
+ name = "Atmospherics Lockdown Control";
+ pixel_y = 4;
+ req_access = list("atmospherics")
+ },
+/obj/machinery/button/door/directional/west{
+ id = "ceprivacy";
+ name = "Privacy Shutter Control";
+ pixel_y = -8;
+ req_access = list("engineering");
+ pixel_x = -36
+ },
/turf/open/floor/iron/dark/smooth_large,
/area/station/command/heads_quarters/ce)
"aon" = (
@@ -3301,7 +3327,7 @@
dir = 10
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"aWc" = (
/obj/structure/railing{
dir = 8
@@ -3977,7 +4003,7 @@
desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease";
name = "hyper-reinforced wall"
},
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"bff" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/iron,
@@ -4309,7 +4335,6 @@
"bjK" = (
/obj/machinery/light/directional/north,
/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/keycard_auth/wall_mounted/directional/north,
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/ce)
"bjL" = (
@@ -4803,7 +4828,7 @@
/obj/structure/window/reinforced/spawner/directional/north,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"bqt" = (
/obj/machinery/airalarm/directional/west,
/turf/open/floor/circuit,
@@ -5478,7 +5503,7 @@
"byB" = (
/obj/effect/spawner/random/engineering/tracking_beacon,
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"byH" = (
/obj/machinery/atmospherics/pipe/smart/simple/green/visible,
/turf/open/floor/iron/dark,
@@ -7944,7 +7969,8 @@
/turf/open/floor/iron/dark,
/area/station/service/hydroponics/garden)
"cgB" = (
-/obj/structure/aquarium/lawyer,
+/obj/item/fish_tank/lawyer,
+/obj/structure/table/wood,
/turf/open/floor/wood,
/area/station/service/lawoffice)
"cgC" = (
@@ -9869,7 +9895,7 @@
dir = 9
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"cJC" = (
/obj/structure/closet,
/obj/effect/spawner/random/maintenance/four,
@@ -15789,7 +15815,7 @@
/area/station/security/prison/rec)
"evT" = (
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"ewi" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
@@ -18927,7 +18953,7 @@
pixel_x = -4;
pixel_y = 3
},
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/effect/turf_decal/tile/blue/half/contrasted{
dir = 1
},
@@ -25884,7 +25910,7 @@
/area/station/science/xenobiology)
"hvt" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/item/surgery_tray/full/morgue,
+/obj/effect/spawner/surgery_tray/full/morgue,
/obj/structure/table/reinforced,
/obj/machinery/requests_console/auto_name/directional/north,
/obj/effect/turf_decal/bot_white,
@@ -26432,7 +26458,7 @@
"hDA" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"hDG" = (
/obj/docking_port/stationary/random/icemoon{
dir = 4;
@@ -30113,7 +30139,7 @@
dir = 10
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"iJK" = (
/obj/structure/lattice/catwalk,
/obj/structure/railing,
@@ -30157,7 +30183,7 @@
dir = 1
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"iKd" = (
/obj/structure/window/reinforced/spawner/directional/south,
/obj/effect/turf_decal/siding/white,
@@ -38592,7 +38618,7 @@
dir = 6
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"lhu" = (
/obj/machinery/camera/directional/north{
c_tag = "Xenobiology Lab Access";
@@ -41086,7 +41112,7 @@
dir = 9
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"lRf" = (
/obj/machinery/teleport/station,
/turf/open/floor/plating,
@@ -42492,7 +42518,7 @@
dir = 1
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"mpH" = (
/obj/effect/landmark/event_spawn,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -42609,7 +42635,7 @@
pixel_x = -4;
pixel_y = 3
},
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/effect/turf_decal/tile/blue/half/contrasted{
dir = 1
},
@@ -42887,7 +42913,7 @@
"mvE" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"mvG" = (
/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{
dir = 8
@@ -44017,7 +44043,7 @@
dir = 5
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"mNi" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -50593,7 +50619,7 @@
dir = 8
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"oDg" = (
/obj/structure/chair/stool/directional/west,
/obj/effect/decal/cleanable/dirt,
@@ -51249,7 +51275,7 @@
dir = 6
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"oLz" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
@@ -55070,7 +55096,7 @@
/area/station/medical/treatment_center)
"pRa" = (
/turf/closed/wall,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"pRj" = (
/turf/closed/wall,
/area/station/maintenance/port/aft)
@@ -58067,7 +58093,7 @@
dir = 5
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"qKQ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
@@ -60263,8 +60289,8 @@
/area/station/engineering/atmos/storage)
"rqF" = (
/obj/machinery/door/poddoor{
- id = "Secure Storage";
- name = "Secure Storage"
+ id = "engstorage";
+ name = "Engineering Secure Storage Lockdown"
},
/turf/open/floor/plating,
/area/station/engineering/engine_smes)
@@ -62768,6 +62794,14 @@
/obj/machinery/firealarm/directional/west,
/turf/open/floor/iron,
/area/station/science/ordnance)
+"sdp" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/preopen{
+ id = "atmos";
+ name = "Atmospherics Blast Door"
+ },
+/turf/open/floor/plating,
+/area/station/engineering/atmos)
"sdr" = (
/obj/structure/transit_tube/horizontal,
/obj/effect/turf_decal/weather/snow/corner{
@@ -65787,7 +65821,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/blue,
-/mob/living/simple_animal/bot/floorbot,
+/mob/living/basic/bot/repairbot,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat/atmos)
"sUE" = (
@@ -70994,7 +71028,7 @@
dir = 4
},
/turf/open/floor/plating/icemoon,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"uyW" = (
/obj/machinery/washing_machine,
/obj/effect/turf_decal/siding/blue{
@@ -77430,6 +77464,9 @@
"wyF" = (
/obj/structure/rack,
/obj/item/gun/energy/ionrifle,
+/obj/item/gun/ballistic/automatic/battle_rifle{
+ pixel_y = 3
+ },
/obj/item/gun/energy/temperature/security,
/obj/item/clothing/suit/hooded/ablative,
/obj/effect/turf_decal/tile/red/half/contrasted{
@@ -79885,7 +79922,7 @@
name = "BOMB RANGE"
},
/turf/closed/wall,
-/area/station/science/ordnance/bomb)
+/area/station/science/ordnance/bomb/planet)
"xgK" = (
/obj/structure/table,
/obj/item/transfer_valve{
@@ -245994,7 +246031,7 @@ keP
cRO
guU
ayq
-hpI
+sdp
bID
iKh
rOU
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 68433b5278535..6b4adfe0d4896 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -9670,7 +9670,7 @@
/obj/effect/turf_decal/tile/blue/fourcorners,
/obj/machinery/status_display/evac/directional/west,
/obj/machinery/digital_clock/directional/south,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/white,
/area/station/medical/surgery/theatre)
"dyr" = (
@@ -11327,7 +11327,7 @@
},
/area/station/engineering/atmos)
"ecD" = (
-/obj/item/bot_assembly/floorbot{
+/obj/item/bot_assembly/repairbot{
created_name = "FloorDiffBot";
desc = "Why won't it work?";
name = "FloorDiffBot"
@@ -11421,6 +11421,9 @@
"eew" = (
/obj/structure/rack,
/obj/item/gun/energy/ionrifle,
+/obj/item/gun/ballistic/automatic/battle_rifle{
+ pixel_y = 3
+ },
/obj/item/gun/energy/temperature/security,
/obj/item/clothing/suit/hooded/ablative,
/obj/effect/turf_decal/tile/red/half/contrasted{
@@ -12775,7 +12778,7 @@
/obj/effect/turf_decal/tile/blue/half/contrasted{
dir = 1
},
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/gloves/latex,
/obj/item/clothing/suit/apron/surgical,
/turf/open/floor/iron/white,
@@ -15055,7 +15058,7 @@
/obj/structure/table/glass,
/obj/effect/turf_decal/tile/blue/fourcorners,
/obj/machinery/status_display/evac/directional/west,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/white,
/area/station/medical/surgery/theatre)
"fpj" = (
@@ -20217,7 +20220,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/disposalpipe/segment,
-/obj/item/radio/intercom/directional/east,
/obj/effect/turf_decal/trimline/brown/filled/line,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
@@ -34053,7 +34055,6 @@
/turf/open/floor/iron/dark,
/area/station/science/ordnance)
"mhM" = (
-/obj/structure/disposalpipe/segment,
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
/obj/structure/desk_bell{
@@ -43417,7 +43418,7 @@
dir = 4
},
/obj/machinery/mecha_part_fabricator{
- dir = 4
+ drop_direction = 4
},
/obj/structure/noticeboard/directional/west,
/turf/open/floor/iron,
@@ -45638,7 +45639,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
-/mob/living/simple_animal/bot/floorbot,
+/mob/living/basic/bot/repairbot,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat_interior)
"qiY" = (
@@ -47643,6 +47644,7 @@
/obj/structure/railing{
dir = 8
},
+/obj/item/radio/intercom/directional/south,
/turf/open/floor/iron,
/area/station/cargo/miningoffice)
"qTz" = (
@@ -51130,7 +51132,7 @@
dir = 4
},
/obj/machinery/mecha_part_fabricator{
- dir = 4
+ drop_direction = 4
},
/turf/open/floor/iron,
/area/station/science/robotics/lab)
@@ -58054,9 +58056,6 @@
/turf/open/floor/iron/white,
/area/station/command/heads_quarters/cmo)
"uyP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/structure/table,
/obj/machinery/light/directional/east,
/obj/item/radio/intercom/directional/east,
@@ -59701,7 +59700,8 @@
name = "Lawyer Requests Console"
},
/obj/machinery/newscaster/directional/west,
-/obj/structure/aquarium/lawyer,
+/obj/item/fish_tank/lawyer,
+/obj/structure/table/wood,
/turf/open/floor/wood,
/area/station/service/lawoffice)
"uZP" = (
@@ -61159,7 +61159,7 @@
dir = 8
},
/obj/machinery/light/small/directional/north,
-/obj/item/surgery_tray/full/morgue,
+/obj/effect/spawner/surgery_tray/full/morgue,
/turf/open/floor/iron/dark/smooth_edge{
dir = 8
},
@@ -65418,6 +65418,9 @@
/obj/effect/mapping_helpers/airlock/access/any/service/maintenance,
/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/mapping_helpers/airlock/unres{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/station/maintenance/disposal)
"wXF" = (
diff --git a/_maps/map_files/Mining/Iceland.dmm b/_maps/map_files/Mining/Iceland.dmm
index ae9b356b5f008..a2c9174fbdfaa 100644
--- a/_maps/map_files/Mining/Iceland.dmm
+++ b/_maps/map_files/Mining/Iceland.dmm
@@ -21,9 +21,8 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 5
},
-/turf/open/floor/iron/white/smooth_corner{
- dir = 4
- },
+/obj/machinery/vending/wallmed/directional/north,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/medical)
"ag" = (
/obj/machinery/door/airlock/external/glass{
@@ -34,7 +33,7 @@
},
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/effect/turf_decal/trimline/blue/filled/mid_joiner,
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"am" = (
/obj/structure/sign/poster/official/random/directional/west,
@@ -60,16 +59,15 @@
/obj/item/mining_scanner,
/obj/item/flashlight,
/obj/item/clothing/glasses/meson,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/storage/public)
"av" = (
-/obj/machinery/computer/arcade/orion_trail{
- dir = 4
- },
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/entertainment,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"ay" = (
-/turf/closed/wall/ice,
+/turf/closed/wall/prefab_plastic,
/area/icemoon/underground/explored)
"aB" = (
/obj/machinery/shower/directional/east,
@@ -86,7 +84,7 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"aL" = (
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/middle)
"aM" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
@@ -101,7 +99,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"aN" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -111,7 +109,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"aO" = (
/obj/effect/decal/cleanable/dirt,
@@ -149,7 +147,7 @@
},
/area/mine/laborcamp/production)
"bc" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
@@ -182,7 +180,9 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/edge,
+/obj/structure/cable,
+/obj/machinery/biogenerator/medstation/directional/north,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"by" = (
/obj/effect/decal/cleanable/dirt,
@@ -202,18 +202,14 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/middle)
"bD" = (
/obj/structure/fence/corner,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"bH" = (
-/obj/structure/table,
-/obj/item/book/manual/chef_recipes{
- pixel_x = -3;
- pixel_y = -5
- },
+/obj/machinery/biogenerator/organic_printer,
/obj/machinery/light/small/directional/north,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/smooth,
@@ -225,13 +221,8 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 4
- },
/obj/structure/sign/poster/official/corporate_perks_vacation/directional/west,
-/turf/open/floor/iron/edge{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"bL" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -246,27 +237,35 @@
/obj/machinery/door/airlock/external{
name = "Lavaland Shuttle Airlock"
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"bW" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
/obj/machinery/mining_weather_monitor/directional/north,
-/turf/open/floor/iron/dark/smooth_edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
+"bX" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"cb" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/south,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"cc" = (
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"ce" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -279,12 +278,13 @@
name = "Mining External Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"ch" = (
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/mine/maintenance/public/south)
"ci" = (
@@ -308,12 +308,10 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/red/filled/line,
/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"ck" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/condiment/peppermill{
pixel_x = 3
@@ -345,21 +343,27 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/maintenance/service)
+"cs" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/laborcamp/security/maintenance)
"cw" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/production)
"cy" = (
/obj/structure/bed/medical/emergency,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white/smooth_corner{
- dir = 8
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/medical)
"cC" = (
/obj/machinery/door/airlock/external/glass{
@@ -371,42 +375,37 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"cE" = (
-/obj/effect/spawner/structure/window,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/storage/public)
"cF" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
/obj/item/camera,
-/turf/open/floor/iron/edge,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"cJ" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "Processing Area"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Station Stairs"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/supply/mining_station,
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"cK" = (
-/obj/structure/chair/sofa/corp/right{
- dir = 1
- },
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/effect/turf_decal/siding/red{
dir = 1
},
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/obj/machinery/biogenerator/food_replicator,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"cM" = (
/obj/structure/closet/emcloset,
@@ -422,9 +421,7 @@
/obj/effect/turf_decal/trimline/red/filled/mid_joiner{
dir = 8
},
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/lounge)
"cQ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -439,14 +436,11 @@
},
/area/mine/laborcamp/quarters)
"cR" = (
-/obj/structure/cable,
/obj/machinery/airalarm/directional/east,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"cU" = (
/obj/structure/lattice/catwalk/mining,
@@ -470,10 +464,16 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"cW" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/living/north)
"cX" = (
-/turf/open/floor/plating/snowed/icemoon,
+/obj/machinery/power/apc/auto_name/directional/south,
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 6
+ },
+/obj/machinery/seed_extractor,
+/obj/structure/cable,
+/turf/open/floor/iron/colony,
/area/mine/lounge)
"da" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -486,37 +486,46 @@
/turf/open/floor/iron/smooth_edge,
/area/mine/laborcamp/quarters)
"db" = (
-/obj/structure/table,
-/obj/item/storage/box/donkpockets{
- pixel_x = -5;
- pixel_y = 7
- },
-/obj/item/storage/box/donkpockets/donkpocketspicy,
/obj/effect/turf_decal/siding/wood{
dir = 5
},
-/turf/open/floor/iron/white,
+/obj/machinery/oven/range_frontier,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
+"df" = (
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Shuttle Lounge"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/lounge)
"dh" = (
/obj/machinery/mech_bay_recharge_port{
dir = 2
},
-/turf/open/floor/plating,
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"di" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/structure/railing{
+ dir = 4
+ },
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
"dk" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/production/lower)
"dr" = (
-/obj/machinery/door/airlock{
- name = "Labor Camp Library"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Enrichment Center"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -528,7 +537,7 @@
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random/structure/steam_vent,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/production)
"dw" = (
/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{
@@ -550,7 +559,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
cycle_id = "lavaland_public_west"
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"dz" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -562,7 +571,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 10
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"dB" = (
/obj/structure/disposalpipe/segment,
@@ -581,6 +590,7 @@
dir = 1
},
/obj/structure/lattice/catwalk/mining,
+/obj/machinery/camera/autoname/directional/north,
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
"dJ" = (
@@ -591,9 +601,21 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"dK" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/eva)
+"dN" = (
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 10
+ },
+/obj/structure/table/greyscale,
+/obj/item/reagent_containers/cup/bottle/nutrient/ez,
+/obj/item/cultivator,
+/obj/item/shovel/spade,
+/obj/item/secateurs,
+/obj/item/reagent_containers/cup/watering_can,
+/turf/open/floor/iron/colony,
+/area/mine/lounge)
"dP" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -601,13 +623,13 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security)
"dQ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"dV" = (
/obj/structure/railing/corner{
@@ -638,6 +660,15 @@
"eb" = (
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
+"ed" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/living_quarters)
"ee" = (
/obj/machinery/shower/directional/south,
/obj/machinery/door/window/right/directional/south,
@@ -665,16 +696,11 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 4
- },
/obj/machinery/light/directional/west,
-/turf/open/floor/iron/edge{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"eA" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/public/south)
"eC" = (
/obj/machinery/shower/directional/west,
@@ -682,25 +708,19 @@
/turf/open/floor/iron/freezer,
/area/mine/living_quarters)
"eD" = (
-/obj/structure/table,
-/obj/machinery/microwave{
- pixel_y = 6
- },
/obj/effect/turf_decal/siding/wood{
dir = 1
},
-/turf/open/floor/iron/white/smooth_edge,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/food_or_drink/donkpockets,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"eH" = (
/obj/structure/disposalpipe/junction/yjunction{
dir = 1
},
-/obj/machinery/power/apc/auto_name/directional/south,
/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/lounge)
"eI" = (
/obj/machinery/power/apc/auto_name/directional/north,
@@ -716,25 +736,26 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 4
},
-/turf/open/floor/iron/edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"eP" = (
-/obj/structure/chair/sofa/left/brown,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/machinery/power/rtg/old_station,
+/obj/structure/railing{
+ dir = 6
},
-/turf/open/floor/iron/checker,
-/area/mine/cafeteria)
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"eQ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/production)
"eR" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/laborcamp/production)
"eT" = (
@@ -746,11 +767,17 @@
/obj/structure/sign/poster/official/work_for_a_future/directional/west,
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/quarters)
-"eW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/port_gen/pacman{
- anchored = 1
+"eV" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/structure/railing{
+ dir = 5
},
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
+"eW" = (
+/obj/structure/cable,
+/obj/machinery/power/terminal,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"eX" = (
@@ -765,7 +792,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"fb" = (
/obj/structure/lattice/catwalk/mining,
@@ -777,7 +804,7 @@
/turf/open/floor/iron/smooth_large,
/area/mine/laborcamp/production)
"ff" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/laborcamp/production)
"fg" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -799,9 +826,8 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"fk" = (
-/obj/machinery/door/airlock/public/glass{
- id_tag = "cellblock1";
- name = "Labor Camp Operations"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Mineral Processing"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -824,11 +850,8 @@
/turf/open/floor/iron/dark,
/area/mine/laborcamp)
"fv" = (
-/obj/machinery/vending/cigarette,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/obj/machinery/vending/dinnerware,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"fw" = (
/turf/closed/mineral/random/labormineral/ice,
@@ -848,12 +871,12 @@
dir = 1
},
/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"fD" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
+/obj/structure/railing,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"fH" = (
@@ -861,16 +884,21 @@
dir = 1
},
/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/turf_decal/siding/yellow{
- dir = 1
- },
-/turf/open/floor/iron/corner,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"fI" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/mine/maintenance/service)
+"fJ" = (
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 4
+ },
+/obj/machinery/biogenerator,
+/obj/structure/cable,
+/turf/open/floor/iron/colony,
+/area/mine/lounge)
"fL" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -882,7 +910,7 @@
/obj/effect/turf_decal/trimline/green/filled/warning{
dir = 1
},
-/turf/open/floor/iron/edge,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"fM" = (
/obj/structure/sink/kitchen/directional/west{
@@ -905,12 +933,9 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"fS" = (
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/red/filled/line,
/mob/living/simple_animal/bot/secbot/beepsky/ofitser,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"fU" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
@@ -920,9 +945,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"fX" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -930,8 +953,15 @@
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random/structure/steam_vent,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
+"gb" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/railing,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"gd" = (
/obj/structure/marker_beacon/yellow,
/obj/effect/turf_decal/stripes/corner,
@@ -949,16 +979,11 @@
/turf/open/floor/iron/smooth_edge,
/area/mine/laborcamp/quarters)
"gg" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/living/south)
"gh" = (
/obj/effect/decal/cleanable/glass,
-/obj/structure/grille/broken,
-/obj/item/shard{
- pixel_x = -6;
- pixel_y = -5
- },
-/obj/effect/spawner/random/trash/graffiti,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/laborcamp)
"gl" = (
@@ -985,7 +1010,7 @@
/turf/open/floor/iron/dark/smooth_corner,
/area/mine/production/middle)
"gp" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/tank/internals/emergency_oxygen{
pixel_x = 5;
pixel_y = 3
@@ -994,40 +1019,31 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 9
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"gq" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/rack,
-/obj/item/stock_parts/power_store/cell/high{
- pixel_x = 6;
- pixel_y = 7
- },
-/obj/item/stock_parts/power_store/cell/high{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/stock_parts/power_store/cell/high{
- pixel_x = 3
- },
+/obj/machinery/power/smes/battery_pack/large/precharged,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"gs" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/storage/crayons,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/quarters)
"gx" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/mine/hydroponics)
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"gz" = (
/obj/machinery/light/small/directional/east,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet,
+/turf/open/floor/iron/colony/white,
/area/mine/living_quarters)
"gA" = (
/obj/structure/railing/corner{
@@ -1048,7 +1064,7 @@
/obj/item/kirbyplants/random,
/obj/machinery/airalarm/directional/north,
/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"gE" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -1066,9 +1082,7 @@
/obj/machinery/power/apc/auto_name/directional/south,
/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"gK" = (
/obj/machinery/door/airlock/external/glass{
@@ -1081,13 +1095,10 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"gP" = (
-/obj/structure/cable,
/obj/effect/turf_decal/siding/wood{
dir = 4
},
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"gQ" = (
/obj/structure/marker_beacon/yellow,
@@ -1104,13 +1115,14 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
cycle_id = "lavaland_mining_low"
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/lower)
"gU" = (
/obj/machinery/conveyor{
dir = 6;
id = "mining_disposals"
},
+/obj/item/trash/empty_food_tray,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"gW" = (
@@ -1118,32 +1130,29 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"gZ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
-/obj/structure/cable,
/obj/machinery/light/directional/south,
/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"hd" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Labor Camp Shuttle Security Airlock"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Labor Camp Shuttle Guard Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/obj/effect/decal/cleanable/dirt,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp)
"he" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/laborcamp/security)
@@ -1157,7 +1166,7 @@
/obj/effect/turf_decal/trimline/blue/filled/warning{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony/bolts,
/area/mine/storage/public)
"hj" = (
/obj/structure/sink/directional/east,
@@ -1173,10 +1182,10 @@
/obj/effect/turf_decal/trimline/purple/filled/warning{
dir = 1
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"ho" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/living_quarters)
"hr" = (
@@ -1187,19 +1196,16 @@
/turf/open/floor/iron/freezer,
/area/mine/laborcamp)
"ht" = (
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"hx" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/labor)
"hy" = (
/obj/structure/disposaloutlet,
@@ -1215,26 +1221,18 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/white,
+/obj/machinery/vending/deforest_medvend,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/medical)
"hD" = (
/obj/structure/disposalpipe/junction{
dir = 1
},
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"hE" = (
-/obj/machinery/button/door/directional/north{
- id = "miningdorm2";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/carpet,
+/turf/open/floor/iron/colony/white,
/area/mine/living_quarters)
"hF" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -1247,7 +1245,6 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"hK" = (
-/obj/machinery/seed_extractor,
/obj/machinery/camera/autoname/directional/east{
network = list("mine")
},
@@ -1255,13 +1252,23 @@
dir = 6
},
/obj/effect/turf_decal/trimline/blue/filled/warning,
-/turf/open/floor/iron/dark,
+/obj/structure/closet/crate/hydroponics,
+/obj/item/seeds/korta_nut,
+/obj/item/seeds/potato,
+/obj/item/seeds/lavaland/fireblossom,
+/obj/item/seeds/lavaland/inocybe,
+/obj/item/seeds/lavaland/polypore,
+/obj/item/seeds/lavaland/porcini,
+/obj/item/seeds/lavaland/seraka,
+/obj/item/seeds/lavaland/cactus,
+/obj/item/seeds/soya,
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"hR" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"hT" = (
/obj/structure/fence{
@@ -1280,26 +1287,25 @@
/obj/effect/turf_decal/trimline/blue/filled/warning{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony/bolts,
/area/mine/storage/public)
"hW" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/reagent_containers/cup/bowl,
/obj/item/kitchen/spoon,
/turf/open/floor/iron/checker,
/area/mine/laborcamp)
"hY" = (
-/obj/machinery/door/airlock/public/glass{
- id_tag = "gulag1";
- name = "Cell 1"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Prisoner Bunk"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/quarters)
"ia" = (
-/obj/machinery/door/airlock/medical/glass{
- name = "Infirmary"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Emergency Clinic"
},
/obj/effect/turf_decal/tile/blue/fourcorners,
/turf/open/floor/iron/white/side{
@@ -1307,14 +1313,11 @@
},
/area/mine/medical)
"ib" = (
-/obj/effect/turf_decal/siding/yellow{
- dir = 1
- },
-/turf/open/floor/iron/large,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"ie" = (
-/obj/machinery/door/airlock/hydroponics{
- name = "Xenobotany"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Native Hydroponics"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/disposalpipe/segment,
@@ -1323,9 +1326,7 @@
/obj/effect/turf_decal/tile/green/opposingcorners{
dir = 1
},
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"ii" = (
/obj/structure/marker_beacon/yellow,
@@ -1345,16 +1346,13 @@
/obj/item/mining_scanner,
/obj/item/flashlight,
/obj/item/clothing/glasses/meson,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/storage/public)
"io" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security)
"ip" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -1364,7 +1362,7 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"iu" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/living_quarters)
"iw" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -1373,15 +1371,6 @@
/obj/machinery/airalarm/directional/east,
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/quarters)
-"ix" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
-/area/mine/living_quarters)
"iB" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -1393,31 +1382,22 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 4
},
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/mechbay)
"iD" = (
/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/tank/internals/emergency_oxygen{
pixel_x = 5;
pixel_y = 3
},
/obj/item/tank/internals/emergency_oxygen,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/storage/public)
"iH" = (
-/obj/structure/table,
-/obj/item/kitchen/fork{
- pixel_x = -7;
- pixel_y = 4
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/food_or_drink/dinner,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"iN" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -1426,7 +1406,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/edge,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"iX" = (
/obj/effect/decal/cleanable/dirt,
@@ -1439,20 +1419,17 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/production)
"iZ" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"jc" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/laborcamp/security)
"jd" = (
@@ -1466,7 +1443,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/middle)
"jf" = (
/obj/item/lighter/greyscale{
@@ -1487,17 +1464,17 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"jj" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Maintenance"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/turf/open/floor/plating,
/area/mine/maintenance/public/north)
"jm" = (
-/obj/machinery/door/airlock/public/glass{
+/obj/machinery/door/airlock/colony_prefab{
name = "Showers"
},
/obj/structure/cable,
@@ -1510,7 +1487,7 @@
/turf/open/floor/iron/freezer,
/area/mine/laborcamp)
"jq" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/paper_bin,
/obj/item/pen,
/obj/structure/cable,
@@ -1518,7 +1495,7 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 6
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"jr" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -1527,7 +1504,8 @@
dir = 1
},
/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"js" = (
/obj/structure/railing{
@@ -1541,9 +1519,7 @@
dir = 9
},
/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"jA" = (
/obj/structure/cable,
@@ -1573,7 +1549,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/middle)
"jQ" = (
/obj/structure/cable,
@@ -1584,15 +1560,14 @@
/turf/open/floor/iron/dark/smooth_edge,
/area/mine/production/middle)
"jS" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/item/radio/intercom/directional/west,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/obj/structure/chair/plastic,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
+"jT" = (
+/obj/structure/railing/corner,
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"jU" = (
/obj/machinery/conveyor{
dir = 4;
@@ -1601,14 +1576,11 @@
/turf/open/floor/plating,
/area/mine/laborcamp/production)
"jW" = (
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"jX" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
@@ -1616,18 +1588,25 @@
},
/turf/open/floor/iron/dark/smooth_edge,
/area/mine/production/middle)
+"jZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/blue/filled/line,
+/turf/open/floor/iron/colony,
+/area/mine/lounge)
"ka" = (
-/obj/structure/table,
/obj/machinery/newscaster/directional/north,
-/obj/item/plate/large,
-/obj/item/kitchen/fork,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/food_or_drink/refreshing_beverage,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
+"kf" = (
+/obj/item/trash/can/food/chap,
+/turf/open/floor/plating/snowed/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"kg" = (
-/turf/closed/wall/r_wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/laborcamp)
"kn" = (
/obj/effect/turf_decal/delivery,
@@ -1644,22 +1623,22 @@
},
/area/mine/laborcamp)
"kt" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/laborcamp/security)
"ku" = (
-/obj/machinery/button/door/directional/north{
- id = "miningdorm1";
- normaldoorcontrol = 1;
- specialfunctions = 4
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing{
+ dir = 5
},
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/carpet,
-/area/mine/living_quarters)
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"kv" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"kx" = (
/turf/closed/mineral/random/snow/high_chance,
@@ -1671,7 +1650,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"kD" = (
/obj/structure/railing,
@@ -1680,9 +1659,8 @@
"kE" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/mine/maintenance/labor)
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/laborcamp/security/maintenance)
"kF" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply,
/turf/open/floor/plating,
@@ -1703,7 +1681,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
cycle_id = "lavaland_living_east"
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"kJ" = (
/obj/structure/ladder,
@@ -1713,7 +1691,7 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"kK" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
@@ -1722,30 +1700,24 @@
pixel_y = 5
},
/obj/item/camera_film,
-/turf/open/floor/iron/edge,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"kL" = (
-/obj/machinery/door/airlock/glass{
- name = "Canteen"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Cafeteria-Bunks"
},
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/tile/bar/opposingcorners{
dir = 1
},
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"kR" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
/obj/machinery/mining_weather_monitor/directional/west,
-/turf/open/floor/iron/checker,
+/obj/structure/chair/plastic,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"kV" = (
/obj/machinery/atmospherics/components/tank/air{
@@ -1755,25 +1727,38 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"kY" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/cafeteria)
+"kZ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/machinery/power/rtg/old_station,
+/obj/structure/railing{
+ dir = 9
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
+"la" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/colony/white/texture,
+/area/mine/lounge)
"lb" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 6
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"ld" = (
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"lg" = (
/obj/machinery/computer/order_console/mining,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony,
/area/mine/eva)
"lh" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -1784,10 +1769,11 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"li" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/gps/mining{
pixel_x = 5;
pixel_y = 5
@@ -1805,9 +1791,7 @@
pixel_y = -2
},
/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/eva)
"lo" = (
/obj/structure/disposalpipe/segment{
@@ -1824,12 +1808,16 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/living_quarters)
+"ls" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/space_heater/wall_mounted/directional/south,
+/turf/open/floor/iron/dark/textured_edge{
dir = 1
},
-/area/mine/living_quarters)
+/area/mine/production/middle)
"lt" = (
/obj/structure/railing{
dir = 6
@@ -1837,20 +1825,15 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"lx" = (
-/obj/machinery/button/door/directional/east{
- id = "labor";
- name = "Labor Camp Lockdown";
- req_access = list("brig")
- },
/obj/machinery/light/small/directional/west,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp)
"ly" = (
/obj/structure/railing/corner{
dir = 1
},
-/turf/closed/wall/ice,
+/turf/closed/wall/prefab_plastic,
/area/icemoon/underground/explored)
"lC" = (
/obj/machinery/airalarm/directional/east,
@@ -1868,8 +1851,8 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"lJ" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Labor Camp Storage"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Security Supply"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -1889,13 +1872,14 @@
/turf/open/floor/iron/dark/textured_large,
/area/mine/production)
"lN" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Maintenance"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
+/obj/effect/mapping_helpers/airlock/unres,
/turf/open/floor/plating,
/area/mine/maintenance/living/south)
"lO" = (
@@ -1918,14 +1902,13 @@
dir = 8
},
/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"lV" = (
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 6
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"lX" = (
/obj/structure/sink/directional/east,
@@ -1943,21 +1926,23 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/hydroponics)
"mn" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/effect/turf_decal/trimline/blue/filled/corner{
dir = 1
},
-/obj/effect/turf_decal/siding/yellow,
-/turf/open/floor/iron/corner{
- dir = 1
- },
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
+"mx" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/space_heater,
+/turf/open/floor/plating,
+/area/mine/maintenance/service)
"my" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Maintenance"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -1967,7 +1952,7 @@
/obj/effect/mapping_helpers/airlock/unres{
dir = 1
},
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"mA" = (
/obj/structure/fence{
@@ -1980,9 +1965,8 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/red/filled/line,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security)
"mF" = (
/obj/structure/railing/corner/end/flip{
@@ -2013,6 +1997,15 @@
/obj/item/cigbutt,
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
+"mM" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"mN" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -2026,9 +2019,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/white/smooth_corner{
- dir = 4
- },
+/turf/open/floor/iron/colony/white,
/area/mine/medical)
"mP" = (
/obj/machinery/hydroponics/constructable,
@@ -2044,14 +2035,13 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony,
/area/mine/lounge)
"mT" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/machinery/power/apc/auto_name/directional/south,
/obj/structure/cable,
/obj/item/pickaxe,
@@ -2062,7 +2052,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 10
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/eva)
"mU" = (
/obj/structure/rack,
@@ -2075,9 +2065,8 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"ni" = (
-/obj/machinery/power/port_gen/pacman{
- anchored = 1
- },
+/obj/structure/rack,
+/obj/item/stack/sheet/mineral/plasma/five,
/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/maintenance/service)
@@ -2085,7 +2074,7 @@
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/tile/brown/fourcorners,
/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"nl" = (
/obj/structure/fence{
@@ -2094,37 +2083,29 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"nm" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/production)
"np" = (
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
-"nq" = (
-/obj/structure/falsewall,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/mine/laborcamp)
"nv" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 8
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"nx" = (
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 10
},
/obj/machinery/mining_weather_monitor/directional/south,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"nA" = (
/obj/effect/turf_decal/bot,
@@ -2155,7 +2136,7 @@
/turf/open/floor/iron/dark,
/area/mine/laborcamp)
"nN" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/spawner/random/trash/food_packaging,
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random/trash/food_packaging,
@@ -2201,32 +2182,45 @@
dir = 4
},
/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
+/turf/open/floor/iron/colony,
+/area/mine/laborcamp/security)
+"ob" = (
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Cafeteria"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/tile/bar/opposingcorners{
dir = 1
},
-/area/mine/laborcamp/security)
+/turf/open/floor/iron/colony,
+/area/mine/cafeteria)
"oc" = (
-/obj/machinery/power/terminal{
- dir = 4
- },
+/obj/item/flatpacked_machine/fuel_generator,
/obj/structure/cable,
-/obj/machinery/light/small/directional/north,
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/mine/maintenance/service)
-"oe" = (
-/obj/structure/chair/sofa/corner/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
+"od" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron/colony/white/bolts,
+/area/mine/lounge)
+"og" = (
+/obj/machinery/door/poddoor/shutters/colony_fabricator{
+ id = 12
},
-/turf/open/floor/iron/checker,
-/area/mine/cafeteria)
-"oh" = (
-/obj/effect/spawner/structure/window,
/turf/open/floor/plating,
-/area/mine/eva)
+/area/mine/maintenance/service)
+"oh" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/lattice/catwalk,
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"oi" = (
/obj/effect/turf_decal/trimline/brown/filled/corner{
dir = 4
@@ -2234,18 +2228,17 @@
/obj/structure/railing/corner{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 4
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"ol" = (
/obj/structure/railing,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"om" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/mine/laborcamp)
+/obj/structure/lattice/catwalk,
+/obj/structure/railing,
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"op" = (
/obj/machinery/camera/autoname/directional/south{
network = list("mine")
@@ -2253,8 +2246,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 6
},
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"oq" = (
/obj/structure/cable,
@@ -2266,9 +2258,7 @@
dir = 4
},
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"ou" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -2296,7 +2286,7 @@
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
"oA" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/storage)
"oI" = (
/obj/structure/bed,
@@ -2314,9 +2304,7 @@
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"oM" = (
/obj/structure/fence,
@@ -2335,7 +2323,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
cycle_id = "lavaland_living_west"
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/cafeteria)
"oT" = (
/obj/structure/chair/comfy/lime{
@@ -2348,9 +2336,8 @@
/turf/open/floor/plating,
/area/mine/laborcamp)
"pc" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/spawner/random/food_or_drink/donkpockets,
-/obj/effect/spawner/random/food_or_drink/condiment,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/smooth_edge{
dir = 8
@@ -2382,11 +2369,14 @@
/turf/open/floor/iron/white,
/area/mine/laborcamp/production)
"ps" = (
+/obj/structure/lattice/catwalk,
/obj/structure/cable,
-/obj/machinery/power/smes/full,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/mine/maintenance/service)
+/obj/machinery/power/rtg/old_station,
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"pu" = (
/obj/item/chair/stool{
pixel_x = -2;
@@ -2411,24 +2401,23 @@
/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{
dir = 1
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/cafeteria)
"py" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/airalarm/directional/west,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 10
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"pB" = (
-/obj/machinery/biogenerator,
/obj/effect/turf_decal/trimline/green/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/obj/machinery/hydroponics/constructable,
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"pE" = (
/obj/effect/spawner/random/trash/hobo_squat,
@@ -2454,7 +2443,7 @@
/turf/open/floor/iron/freezer,
/area/mine/living_quarters)
"pK" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/eva)
"pL" = (
/obj/structure/toilet{
@@ -2524,20 +2513,16 @@
dir = 1
},
/obj/effect/turf_decal/siding/red,
-/turf/open/floor/iron/edge,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"qg" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"qh" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/decal/cleanable/dirt,
/obj/item/paper_bin,
/obj/item/pen,
@@ -2549,12 +2534,12 @@
},
/area/mine/laborcamp/quarters)
"ql" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/production/middle)
"qo" = (
-/obj/machinery/door/airlock/glass{
- name = "Equipment Storage"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Expedition Supplies"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -2563,18 +2548,19 @@
dir = 1
},
/obj/effect/turf_decal/tile/brown/opposingcorners,
-/turf/open/floor/iron/dark/side,
+/turf/open/floor/iron/colony,
/area/mine/storage/public)
"qp" = (
-/obj/machinery/door/airlock/glass{
- name = "Canteen"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Cafeteria-Bunks"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/tile/bar/opposingcorners{
dir = 1
},
-/turf/open/floor/iron/checker,
+/obj/structure/cable,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"qq" = (
/obj/structure/fence{
@@ -2586,6 +2572,13 @@
/obj/structure/railing/corner,
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
+"qt" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/machinery/space_heater,
+/turf/open/floor/iron/colony,
+/area/mine/production)
"qw" = (
/obj/structure/bed,
/obj/effect/decal/cleanable/dirt,
@@ -2607,32 +2600,31 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"qA" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/machinery/airalarm/directional/east,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 6
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"qE" = (
/obj/structure/fence/door,
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"qH" = (
-/obj/machinery/door/airlock{
- id_tag = "miningbathroomprivate";
- name = "Restroom"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Private Shower"
},
/obj/effect/turf_decal/siding/white{
dir = 8
},
-/turf/open/floor/iron/freezer,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"qN" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/mine/cafeteria)
@@ -2644,12 +2636,14 @@
"qQ" = (
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
+"qU" = (
+/obj/structure/lattice/catwalk,
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"qV" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/decal/cleanable/dirt,
/obj/item/paper,
/obj/item/pen,
@@ -2665,12 +2659,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 4
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 8
- },
-/turf/open/floor/iron/edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"ra" = (
/obj/structure/marker_beacon/teal,
@@ -2701,15 +2690,17 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp)
"rp" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/production)
+"rr" = (
+/obj/machinery/camera/autoname/directional/west,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"rv" = (
/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"rw" = (
/obj/structure/reagent_dispensers/watertank,
@@ -2720,7 +2711,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 9
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"rz" = (
/obj/machinery/shower/directional/west,
@@ -2734,7 +2725,7 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"rF" = (
-/turf/closed/wall/r_wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/labor)
"rG" = (
/obj/structure/railing/corner{
@@ -2756,10 +2747,10 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp)
"rU" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/storage/public)
"rX" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/laborcamp)
"rY" = (
@@ -2769,23 +2760,17 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/warning,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/lounge)
"rZ" = (
/obj/structure/cable,
-/obj/machinery/power/port_gen/pacman{
- anchored = 1
- },
-/obj/effect/decal/cleanable/dirt,
+/obj/machinery/power/smes/battery_pack/large/precharged,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"se" = (
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/eva)
"sf" = (
/obj/structure/closet/secure_closet/brig,
@@ -2803,12 +2788,25 @@
},
/turf/open/floor/iron/checker,
/area/mine/laborcamp)
+"sj" = (
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"sk" = (
/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/area/mine/maintenance/living/south)
"so" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 10
},
@@ -2820,9 +2818,8 @@
pixel_x = -6;
pixel_y = 4
},
-/turf/open/floor/iron/white/smooth_corner{
- dir = 8
- },
+/obj/effect/spawner/random/medical/supplies,
+/turf/open/floor/iron/colony/white,
/area/mine/medical)
"st" = (
/obj/structure/chair/stool/directional/north,
@@ -2841,15 +2838,12 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"sx" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/light/small/directional/west,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"sy" = (
/obj/structure/bonfire,
@@ -2860,6 +2854,7 @@
/obj/structure/sign/departments/medbay/alt/directional/north,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/north,
+/obj/machinery/space_heater,
/turf/open/floor/iron/smooth_edge,
/area/mine/laborcamp/production)
"sI" = (
@@ -2891,21 +2886,9 @@
/turf/open/floor/iron/dark,
/area/mine/laborcamp)
"sW" = (
-/obj/structure/table,
-/obj/item/reagent_containers/cup/glass/bottle/beer{
- pixel_x = 7;
- pixel_y = 5
- },
-/obj/item/reagent_containers/cup/glass/bottle/beer{
- pixel_x = -1;
- pixel_y = 9
- },
-/obj/item/reagent_containers/cup/glass/bottle/beer{
- pixel_x = -8
- },
-/turf/open/floor/iron/white/smooth_edge{
- dir = 1
- },
+/obj/machinery/griddle/frontier_tabletop,
+/obj/structure/table/greyscale,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"sX" = (
/obj/machinery/mechpad,
@@ -2913,7 +2896,7 @@
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"tc" = (
/obj/structure/bed{
@@ -2923,7 +2906,7 @@
dir = 4
},
/obj/machinery/airalarm/directional/north,
-/turf/open/floor/carpet,
+/turf/open/floor/iron/colony/white,
/area/mine/living_quarters)
"te" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -2931,37 +2914,39 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
-/turf/open/floor/iron/edge{
- dir = 4
- },
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"tg" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Air Tanks"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
+/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"th" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/production/lower)
"ti" = (
-/obj/structure/table,
+/obj/machinery/vending/clothing,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"tj" = (
/obj/structure/railing/corner{
dir = 1
},
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/production/lower)
+"tk" = (
+/obj/machinery/camera/autoname/directional/east,
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"tr" = (
/obj/structure/closet/secure_closet/brig,
/obj/effect/decal/cleanable/dirt,
@@ -2975,11 +2960,9 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"tx" = (
-/obj/structure/chair/wood/wings{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/obj/structure/chair/plastic,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"tz" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -2994,7 +2977,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
},
-/turf/open/floor/iron/white/smooth_corner,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/medical)
"tC" = (
/obj/structure/railing/corner/end{
@@ -3011,36 +2994,51 @@
/area/icemoon/underground/explored)
"tG" = (
/obj/machinery/light/small/directional/west,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"tL" = (
/obj/machinery/light/small/directional/east,
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"tM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/mine/storage)
+/obj/machinery/vending/assist,
+/turf/open/floor/iron/colony,
+/area/mine/living_quarters)
+"tT" = (
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/structure/table/greyscale,
+/obj/item/gps/mining,
+/obj/item/gps/mining{
+ pixel_x = -4;
+ pixel_y = -2
+ },
+/obj/item/gps/mining{
+ pixel_x = -4;
+ pixel_y = -2
+ },
+/obj/item/gps/mining,
+/turf/open/floor/iron/colony,
+/area/mine/storage/public)
"tV" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/mine/storage)
"tW" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"tX" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"tZ" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/sustenance/labor_camp,
+/obj/machinery/biogenerator/foodricator,
+/obj/structure/table/greyscale,
/turf/open/floor/iron/smooth_edge{
dir = 8
},
@@ -3052,11 +3050,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"uj" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -3064,15 +3058,15 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"uk" = (
-/obj/machinery/door/airlock/glass{
- name = "Games Room"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Lounge"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/tile/bar/opposingcorners{
dir = 1
},
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"ul" = (
/obj/item/crowbar/large/emergency,
@@ -3085,32 +3079,39 @@
"ut" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"uu" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"uv" = (
-/obj/structure/table,
/obj/effect/turf_decal/siding/wood{
dir = 1
},
-/turf/open/floor/iron/white/smooth_edge,
+/obj/structure/table/greyscale,
+/obj/item/cutting_board,
+/obj/item/knife,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"ux" = (
-/obj/machinery/door/airlock{
- id_tag = "miningdorm1";
- name = "Room 1"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Bunk B"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
+"uA" = (
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 8
+ },
+/turf/open/floor/iron/colony,
+/area/mine/lounge)
"uC" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/siding/wideplating_new{
@@ -3126,10 +3127,14 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"uI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/mine/maintenance/labor)
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/machinery/power/rtg/old_station,
+/obj/structure/railing{
+ dir = 10
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"uM" = (
/obj/structure/fence{
dir = 8
@@ -3137,18 +3142,16 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"uN" = (
-/obj/structure/chair/sofa/corp{
- dir = 4
- },
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
/obj/effect/turf_decal/siding/red{
dir = 4
},
-/turf/open/floor/iron/edge{
+/obj/structure/chair/sofa/corp/left{
dir = 4
},
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"uO" = (
/obj/structure/railing{
@@ -3156,6 +3159,13 @@
},
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
+"uR" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing,
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"uT" = (
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/components/unary/passive_vent/layer2{
@@ -3172,19 +3182,20 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security)
"vb" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white/smooth_corner,
+/turf/open/floor/iron/colony/white,
/area/mine/medical)
"vc" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Power"
},
/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
+/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"vd" = (
@@ -3194,14 +3205,11 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"ve" = (
-/obj/structure/cable,
-/obj/machinery/power/terminal{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/labor)
"vf" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -3214,9 +3222,8 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"vh" = (
-/obj/machinery/door/airlock/public/glass{
- id_tag = "cellblock1";
- name = "Labor Camp Cellblock"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Sleeping Quarters"
},
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -3230,14 +3237,9 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 4
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 8
- },
/obj/structure/sign/poster/official/high_class_martini/directional/east,
/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"vk" = (
/obj/effect/spawner/random/trash/garbage{
@@ -3257,10 +3259,10 @@
dir = 9
},
/obj/machinery/mining_weather_monitor/directional/north,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"vp" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/mine/hydroponics)
@@ -3268,7 +3270,7 @@
/obj/structure/bed/medical/emergency,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/medical)
"vz" = (
/obj/structure/ladder,
@@ -3277,15 +3279,7 @@
"vA" = (
/obj/machinery/light/small/directional/west,
/obj/structure/rack,
-/obj/item/chair,
-/obj/item/chair{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/chair{
- pixel_x = 6;
- pixel_y = 6
- },
+/obj/effect/spawner/random/engineering/toolbox,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"vB" = (
@@ -3300,13 +3294,12 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"vD" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/laborcamp/security/maintenance)
"vF" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Mining Maintenance"
},
-/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/all/supply/mining_station,
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
/turf/open/floor/plating,
@@ -3342,7 +3335,7 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"vO" = (
/obj/effect/decal/cleanable/dirt,
@@ -3354,15 +3347,16 @@
/turf/open/floor/iron/dark,
/area/mine/laborcamp)
"vQ" = (
-/obj/machinery/door/airlock{
- id_tag = "miningdorm2";
- name = "Room 2"
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/structure/railing{
+ dir = 8
},
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
-/area/mine/living_quarters)
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"vS" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
@@ -3370,12 +3364,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/lounge)
"vU" = (
/obj/structure/ore_box,
@@ -3398,14 +3389,18 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"wb" = (
-/obj/structure/chair{
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
dir = 8
},
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
+/obj/structure/railing{
+ dir = 4
},
-/turf/open/floor/iron/checker,
-/area/mine/cafeteria)
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"wf" = (
/obj/structure/closet/emcloset,
/turf/open/floor/iron/dark/textured_edge{
@@ -3413,22 +3408,20 @@
},
/area/mine/production/middle)
"wg" = (
-/obj/structure/chair/sofa/corp{
- dir = 1
- },
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/effect/turf_decal/siding/red{
dir = 1
},
-/turf/open/floor/iron/edge{
+/obj/structure/chair/sofa/corp/right{
dir = 1
},
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"wl" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"wo" = (
/obj/structure/railing/corner,
@@ -3438,25 +3431,13 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 4
},
-/turf/open/floor/iron/edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"wq" = (
-/obj/structure/table/wood,
-/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
- pixel_x = 6;
- pixel_y = 5
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/mine/cafeteria)
+/obj/machinery/power/smes/full,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/mine/laborcamp/security/maintenance)
"wr" = (
/obj/item/seeds/plump,
/obj/machinery/hydroponics/soil,
@@ -3466,10 +3447,8 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark/smooth_edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"wu" = (
/obj/machinery/hydroponics/constructable,
@@ -3480,14 +3459,19 @@
/obj/item/seeds/onion,
/turf/open/floor/iron/dark,
/area/mine/laborcamp)
-"wA" = (
-/obj/structure/cable,
+"wv" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/mine/maintenance/public/south)
+"wA" = (
+/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment{
dir = 10
},
+/obj/structure/cable,
+/obj/structure/closet/radiation,
/turf/open/floor/plating,
/area/mine/laborcamp/security/maintenance)
"wE" = (
@@ -3502,21 +3486,10 @@
/turf/open/floor/iron/dark/textured_large,
/area/mine/production/middle)
"wJ" = (
-/obj/structure/table/wood/poker,
-/obj/item/toy/cards/deck{
- pixel_x = -6;
- pixel_y = -1
- },
-/obj/item/toy/cards/deck/cas/black{
- pixel_x = -6;
- pixel_y = 10
- },
-/obj/item/toy/cards/deck/cas{
- pixel_x = 6;
- pixel_y = 8
- },
/obj/machinery/airalarm/directional/east,
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/entertainment/money_small,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"wM" = (
/obj/item/seeds/banana,
@@ -3543,9 +3516,7 @@
},
/obj/effect/turf_decal/trimline/purple/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/warning,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"xe" = (
/turf/closed/mineral/random/snow,
@@ -3557,19 +3528,18 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"xi" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/paper,
/obj/item/pen,
-/turf/open/floor/carpet,
+/turf/open/floor/iron/colony/white,
/area/mine/living_quarters)
"xn" = (
/obj/effect/spawner/random/vending/colavend,
/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"xr" = (
/obj/structure/sink/directional/east,
-/obj/item/reagent_containers/cup/bucket,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 4
},
@@ -3577,7 +3547,7 @@
dir = 10
},
/obj/effect/turf_decal/trimline/blue/filled/warning,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"xt" = (
/obj/structure/railing{
@@ -3604,10 +3574,10 @@
/turf/open/floor/plating,
/area/mine/laborcamp/production)
"xB" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/public/north)
"xD" = (
-/turf/closed/wall/r_wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/service/comms)
"xF" = (
/obj/machinery/door/airlock/external/glass{
@@ -3626,7 +3596,7 @@
/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
dir = 4
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"xG" = (
/turf/open/floor/plating/snowed/icemoon,
@@ -3634,8 +3604,8 @@
"xI" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Telecommunications Relay"
},
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms,
@@ -3644,7 +3614,7 @@
"xJ" = (
/obj/machinery/vending/coffee,
/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"xN" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -3653,17 +3623,14 @@
/obj/machinery/door/airlock/external{
name = "Lavaland Shuttle Airlock"
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"xO" = (
-/obj/effect/spawner/random/vending/snackvend,
+/obj/machinery/chem_master/condimaster,
/obj/machinery/camera/autoname/directional/east{
network = list("mine")
},
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"xQ" = (
/obj/structure/table,
@@ -3684,15 +3651,12 @@
/area/icemoon/underground/explored)
"xU" = (
/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/structure/table,
-/obj/item/gps/mining,
-/obj/item/gps/mining{
- pixel_x = -4;
- pixel_y = -2
- },
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/obj/structure/table/greyscale,
+/obj/item/climbing_hook/emergency,
+/obj/item/climbing_hook/emergency,
+/obj/item/climbing_hook/emergency,
+/obj/item/climbing_hook/emergency,
+/turf/open/floor/iron/colony,
/area/mine/storage/public)
"xX" = (
/obj/structure/gulag_vent/ice,
@@ -3724,17 +3688,13 @@
/obj/effect/turf_decal/trimline/red/filled/mid_joiner{
dir = 4
},
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"yf" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"yh" = (
/obj/machinery/door/airlock/external/glass{
@@ -3747,11 +3707,11 @@
/turf/open/floor/iron/dark/textured_large,
/area/mine/laborcamp/security)
"yj" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/hydroponics)
"yl" = (
-/obj/machinery/door/airlock/glass{
- name = "Arrival Lounge"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Expedition Lounge"
},
/obj/structure/disposalpipe/segment{
dir = 4
@@ -3781,7 +3741,7 @@
/turf/open/floor/plating,
/area/mine/laborcamp/production)
"yv" = (
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/lower)
"yC" = (
/obj/structure/bed{
@@ -3814,7 +3774,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 5
},
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"yM" = (
/obj/structure/ore_box,
@@ -3825,21 +3785,18 @@
/turf/open/floor/iron/dark/textured_large,
/area/mine/production/middle)
"yN" = (
-/obj/structure/cable,
/obj/structure/disposalpipe/segment{
dir = 6
},
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"yR" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"yT" = (
/obj/effect/turf_decal/stripes/line{
@@ -3848,20 +3805,21 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"yV" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/production/middle)
"yX" = (
-/obj/effect/spawner/structure/window,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/hydroponics)
"zc" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Maintenance"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
+/obj/effect/mapping_helpers/airlock/unres,
/turf/open/floor/plating,
/area/mine/maintenance/public/south)
"zd" = (
@@ -3870,24 +3828,32 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"zf" = (
-/obj/machinery/door/airlock{
- name = "Restroom"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Community Showers"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/freezer,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
+"zg" = (
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"zh" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"zi" = (
/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/firecloset/full,
/turf/open/floor/plating,
/area/mine/laborcamp/security/maintenance)
"zj" = (
@@ -3950,7 +3916,7 @@
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"zD" = (
/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{
@@ -3970,7 +3936,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"zH" = (
/obj/structure/sign/directions/arrival/directional/south{
@@ -3978,7 +3944,7 @@
},
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"zJ" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
@@ -3987,9 +3953,7 @@
/obj/structure/railing{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"zK" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -4061,7 +4025,7 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"Am" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/maintenance/living/north)
"Ao" = (
@@ -4080,8 +4044,18 @@
dir = 4
},
/obj/effect/mapping_helpers/airlock/access/any/supply/mining_station,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
+"Aq" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing,
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"Aw" = (
/obj/structure/railing/corner{
dir = 8
@@ -4107,16 +4081,15 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp)
"AI" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Security Post Power"
},
/obj/effect/mapping_helpers/airlock/access/all/security/brig,
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"AJ" = (
/turf/closed/wall,
@@ -4129,7 +4102,7 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"AN" = (
/obj/effect/decal/cleanable/dirt,
@@ -4142,14 +4115,12 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"AV" = (
-/obj/structure/closet/secure_closet/freezer/fridge/all_access,
-/obj/item/reagent_containers/cup/glass/bottle/beer,
-/obj/item/reagent_containers/cup/glass/bottle/beer,
-/obj/item/reagent_containers/cup/glass/bottle/beer,
-/obj/effect/spawner/random/food_or_drink/booze,
-/turf/open/floor/iron/white,
+/obj/machinery/chem_dispenser/frontier_appliance,
+/obj/structure/table/greyscale,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"AX" = (
+/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/area/mine/laborcamp/security/maintenance)
"Bb" = (
@@ -4159,7 +4130,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"Bd" = (
/obj/structure/railing/corner,
@@ -4170,7 +4141,7 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"Bp" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/production/lower)
"Bs" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -4179,7 +4150,8 @@
dir = 1
},
/obj/machinery/light/directional/north,
-/turf/open/floor/iron/edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"By" = (
/obj/machinery/door/poddoor/preopen{
@@ -4214,14 +4186,13 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/underground/explored)
"BR" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"BS" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/maintenance/public/south)
"BT" = (
@@ -4248,6 +4219,11 @@
/obj/structure/sign/poster/official/report_crimes/directional/west,
/turf/open/floor/iron/smooth,
/area/mine/laborcamp)
+"BX" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"BY" = (
/obj/structure/railing{
dir = 6
@@ -4255,6 +4231,7 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Ce" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/plating,
/area/mine/maintenance/public/south)
"Cf" = (
@@ -4263,27 +4240,24 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"Cg" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
/obj/effect/turf_decal/trimline/brown/filled/corner,
-/turf/open/floor/iron/dark/smooth_corner,
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"Cm" = (
-/obj/machinery/door/airlock/glass{
- name = "Canteen"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Cafeteria"
},
/obj/effect/turf_decal/tile/bar/opposingcorners{
dir = 1
},
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"Ct" = (
/turf/open/misc/asteroid/snow/icemoon,
@@ -4295,8 +4269,8 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"Cz" = (
-/obj/machinery/door/airlock/medical/glass{
- name = "Infirmary"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Prisoner Clinic"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -4323,16 +4297,16 @@
/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{
dir = 8
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"CD" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/labor)
"CE" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/mecha_parts/mecha_equipment/drill{
pixel_y = -2
},
@@ -4343,7 +4317,7 @@
dir = 6
},
/obj/effect/turf_decal/trimline/brown/filled/warning,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"CI" = (
/obj/structure/sign/directions/supply/directional/east{
@@ -4354,16 +4328,14 @@
dir = 4
},
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"CM" = (
/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"CO" = (
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"CQ" = (
/obj/machinery/recharge_station,
@@ -4371,11 +4343,11 @@
dir = 5
},
/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"CS" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Emergency Clinic Maintenance"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -4398,7 +4370,7 @@
/obj/structure/cable,
/obj/effect/spawner/random/trash/mess,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"CZ" = (
/obj/structure/railing{
@@ -4415,7 +4387,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 10
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"Di" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
@@ -4438,13 +4410,13 @@
/turf/open/floor/iron/smooth_large,
/area/mine/laborcamp)
"Dl" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Labor Camp Shuttle Security Airlock"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Labor Camp Shuttle Guard Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp)
"Dn" = (
/obj/structure/cable,
@@ -4458,7 +4430,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/middle)
"Dv" = (
/turf/closed/mineral/random/labormineral/ice,
@@ -4472,7 +4444,7 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Dz" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/medical)
"DF" = (
/obj/structure/cable,
@@ -4483,7 +4455,7 @@
/area/mine/maintenance/service/comms)
"DI" = (
/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/cafeteria)
"DK" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -4515,7 +4487,8 @@
/obj/effect/turf_decal/tile/bar/opposingcorners{
dir = 1
},
-/turf/open/floor/iron/checker,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/cafeteria)
"DY" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -4525,11 +4498,15 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"DZ" = (
-/obj/effect/turf_decal/siding/yellow/corner{
- dir = 8
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing,
+/obj/structure/railing{
+ dir = 1
},
-/turf/open/floor/iron/large,
-/area/mine/lounge)
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"Ec" = (
/obj/docking_port/stationary{
dir = 2;
@@ -4542,12 +4519,16 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Ee" = (
-/obj/machinery/power/smes/full,
+/obj/structure/lattice/catwalk,
/obj/structure/cable,
-/turf/open/floor/plating,
-/area/mine/maintenance/labor)
+/obj/machinery/power/rtg/old_station,
+/obj/structure/railing{
+ dir = 5
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"Eg" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/mine/maintenance/living/north)
@@ -4566,14 +4547,12 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Eq" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Labor Camp Monitoring"
- },
+/obj/machinery/door/airlock/colony_prefab,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp/security)
"Ev" = (
/obj/structure/cable,
@@ -4583,8 +4562,8 @@
/turf/open/floor/circuit,
/area/mine/maintenance/service/comms)
"Ex" = (
-/obj/machinery/door/airlock{
- name = "Unisex Restroom"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Bathroom"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/siding/white{
@@ -4594,7 +4573,7 @@
/area/mine/laborcamp/quarters)
"Ey" = (
/obj/structure/closet/crate,
-/obj/effect/spawner/random/maintenance/two,
+/obj/effect/spawner/random/structure/closet_empty/crate/with_loot,
/turf/open/floor/plating,
/area/mine/storage)
"Ez" = (
@@ -4615,12 +4594,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 4
- },
-/turf/open/floor/iron/edge{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"EG" = (
/obj/effect/decal/cleanable/dirt,
@@ -4649,9 +4623,7 @@
},
/obj/machinery/light/directional/south,
/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"EQ" = (
/turf/open/floor/iron/smooth_edge{
@@ -4661,6 +4633,7 @@
"ER" = (
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/east,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"EU" = (
@@ -4682,25 +4655,17 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"Fc" = (
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"Fd" = (
-/obj/structure/chair/sofa/right/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/obj/structure/chair/plastic,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"Ff" = (
/turf/open/floor/glass/reinforced,
@@ -4710,15 +4675,16 @@
/turf/open/lava/plasma/ice_moon,
/area/icemoon/underground/explored)
"Fp" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/machinery/recharger,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Fs" = (
/obj/effect/spawner/random/maintenance/two,
+/obj/item/trash/can/food/peaches,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Fv" = (
@@ -4739,14 +4705,19 @@
},
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
+"Fy" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random/structure/steam_vent,
+/turf/open/floor/plating,
+/area/mine/maintenance/public/south)
"FD" = (
/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/turf_decal/siding/yellow{
- dir = 8
- },
-/turf/open/floor/iron/corner,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"FH" = (
+/obj/structure/sign/warning/radiation,
/turf/closed/wall/ice,
/area/icemoon/surface/outdoors/nospawn)
"FL" = (
@@ -4758,7 +4729,7 @@
/obj/structure/railing/corner{
dir = 4
},
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/production/middle)
"FT" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -4773,14 +4744,16 @@
/obj/effect/turf_decal/siding/red{
dir = 8
},
-/turf/open/floor/iron/edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"FX" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/maintenance/production)
+"FZ" = (
+/obj/machinery/camera/autoname/directional/south,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"Gb" = (
/obj/structure/lattice/catwalk/mining,
/obj/structure/railing{
@@ -4794,7 +4767,7 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/quarters)
"Ge" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/laborcamp/quarters)
"Gf" = (
/obj/machinery/door/airlock/external/glass{
@@ -4806,7 +4779,7 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"Gj" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/plating,
@@ -4824,11 +4797,21 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security)
+"Gn" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 1
+ },
+/obj/structure/railing,
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"Gr" = (
-/obj/effect/spawner/random/trash/botanical_waste,
-/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/green/filled/line,
/turf/open/floor/iron/dark,
/area/mine/laborcamp)
@@ -4839,8 +4822,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 10
},
-/obj/item/radio/intercom/prison/directional/south,
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"Gz" = (
/obj/machinery/shower/directional/west,
@@ -4857,7 +4839,8 @@
/obj/effect/turf_decal/trimline/green/filled/warning{
dir = 1
},
-/turf/open/floor/iron/edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"GD" = (
/obj/machinery/computer/shuttle/labor/one_way,
@@ -4870,13 +4853,11 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"GH" = (
-/obj/machinery/door/airlock/glass{
- name = "Arrival Lounge"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Expedition Lounge"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -4889,15 +4870,14 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"GW" = (
/obj/structure/chair/office{
dir = 1
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/laborcamp/security)
"GZ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -4911,7 +4891,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/labor)
"Hb" = (
/obj/structure/cable,
@@ -4919,7 +4899,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random/structure/steam_vent,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/labor)
"Hc" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -4941,29 +4921,33 @@
/obj/machinery/power/apc/auto_name/directional/north,
/turf/open/floor/plating,
/area/mine/maintenance/public/north)
+"Hl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random/structure/closet_empty/crate/with_loot,
+/turf/open/floor/plating,
+/area/mine/storage)
"Hp" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony,
/area/mine/eva)
"Hs" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"Hw" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/structure/disposalpipe/segment,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 8
},
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
+/obj/structure/railing{
+ dir = 4
},
-/area/mine/lounge)
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"Hx" = (
/obj/structure/railing/corner{
dir = 4
@@ -4971,15 +4955,14 @@
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
"Hz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/toilet/secret{
- dir = 4
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing{
+ dir = 8
},
-/obj/effect/mob_spawn/corpse/human/skeleton,
-/obj/item/clothing/under/rank/cargo/miner/lavaland,
-/obj/item/storage/backpack/duffelbag/explorer,
-/turf/open/floor/plating,
-/area/mine/living_quarters)
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"HA" = (
/obj/machinery/airalarm/directional/south,
/obj/machinery/camera/autoname/directional/west{
@@ -4999,9 +4982,7 @@
/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/warning,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"HC" = (
/obj/structure/tank_holder/extinguisher,
@@ -5010,25 +4991,25 @@
},
/area/mine/production/lower)
"HD" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/red/filled/end{
dir = 8
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"HF" = (
/obj/structure/railing/corner{
dir = 4
},
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/production/lower)
"HG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/space_heater,
-/turf/open/floor/plating,
-/area/mine/maintenance/service)
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/lattice/catwalk,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"HI" = (
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/south,
@@ -5039,7 +5020,8 @@
dir = 4
},
/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
+/obj/machinery/space_heater,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"HP" = (
/obj/machinery/computer/mech_bay_power_console{
@@ -5051,10 +5033,18 @@
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
+"HR" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"HS" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -5065,10 +5055,8 @@
},
/area/mine/laborcamp)
"HT" = (
-/obj/structure/chair/stool{
- dir = 8
- },
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/obj/structure/chair/plastic,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"HX" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -5085,8 +5073,11 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/quarters)
"Ia" = (
-/turf/closed/wall/r_wall,
-/area/mine/laborcamp/security)
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/cafeteria)
"Ic" = (
/obj/structure/chair/stool/directional/south,
/obj/effect/turf_decal/siding/wideplating_new{
@@ -5094,8 +5085,15 @@
},
/turf/open/floor/iron/checker,
/area/mine/laborcamp)
+"Ie" = (
+/obj/machinery/button/door{
+ id = 12;
+ name = "Ventilation Shutters";
+ req_one_access = null
+ },
+/turf/closed/wall/prefab_plastic,
+/area/mine/maintenance/service)
"If" = (
-/obj/structure/cable,
/obj/machinery/light/small/directional/north,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -5119,14 +5117,17 @@
/turf/open/floor/carpet/royalblue,
/area/mine/living_quarters)
"Is" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"It" = (
-/obj/effect/spawner/structure/window,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/medical)
"Ix" = (
@@ -5135,7 +5136,7 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp)
"Iy" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/storage/medkit/emergency{
pixel_x = -3
},
@@ -5143,7 +5144,6 @@
/turf/open/floor/iron/white,
/area/mine/laborcamp/production)
"IA" = (
-/obj/structure/cable,
/obj/structure/closet,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -5178,9 +5178,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/eva)
"IN" = (
/turf/open/genturf,
@@ -5194,9 +5192,7 @@
dir = 8
},
/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"IV" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -5208,7 +5204,7 @@
/obj/effect/turf_decal/trimline/blue/filled/warning{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony/bolts,
/area/mine/storage/public)
"IW" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -5219,7 +5215,8 @@
/obj/effect/turf_decal/trimline/purple/filled/warning{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"Je" = (
/obj/machinery/door/airlock/maintenance{
@@ -5249,15 +5246,14 @@
/turf/open/floor/plating,
/area/mine/maintenance/service)
"Ji" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/security{
- name = "Labor Camp Gate Monitoring"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Storage and Power"
},
/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Jl" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -5265,23 +5261,22 @@
/obj/effect/turf_decal/trimline/brown/filled/corner{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 1
- },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"Jn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plating,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"Jp" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/eva)
"Jt" = (
/obj/machinery/disposal/bin,
@@ -5291,12 +5286,13 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
},
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"Ju" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured_large,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/mechbay)
"Jv" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -5333,7 +5329,7 @@
dir = 5
},
/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"JB" = (
/obj/structure/railing/corner,
@@ -5351,14 +5347,23 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"JE" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/maintenance/labor)
+"JF" = (
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Public Supply Hall"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/lounge)
"JG" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"JH" = (
/obj/structure/stairs/south,
@@ -5384,9 +5389,7 @@
/obj/effect/turf_decal/trimline/red/filled/mid_joiner{
dir = 8
},
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/lounge)
"JK" = (
/obj/structure/flora/grass/both/style_random,
@@ -5402,14 +5405,15 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"JN" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Security Post Power"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"JP" = (
/obj/structure/disposalpipe/segment{
@@ -5419,9 +5423,7 @@
dir = 1
},
/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"JS" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -5440,7 +5442,7 @@
/area/mine/laborcamp/production)
"JZ" = (
/obj/structure/displaycase,
-/turf/open/floor/carpet/executive,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"Ka" = (
/obj/structure/railing{
@@ -5455,21 +5457,19 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/eva)
"Kf" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"Kh" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp/security)
"Ki" = (
/obj/machinery/door/airlock/external/glass{
@@ -5482,8 +5482,7 @@
/turf/open/floor/iron/dark/textured_large,
/area/mine/production)
"Kk" = (
-/obj/structure/girder,
-/turf/open/misc/asteroid/snow/icemoon,
+/turf/closed/wall/prefab_plastic,
/area/icemoon/surface/outdoors/nospawn)
"Kn" = (
/obj/machinery/telecomms/relay/preset/mining,
@@ -5501,7 +5500,7 @@
/obj/item/mining_scanner,
/obj/item/flashlight,
/obj/item/clothing/glasses/meson,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/storage/public)
"Kp" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -5517,10 +5516,10 @@
/area/mine/laborcamp)
"Kv" = (
/obj/machinery/mineral/processing_unit_console,
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/laborcamp/production)
"Kw" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/storage/medkit/regular,
/turf/open/floor/iron/white,
/area/mine/laborcamp/production)
@@ -5536,11 +5535,6 @@
/turf/open/floor/plating,
/area/mine/laborcamp/production)
"KC" = (
-/obj/machinery/button/door/directional/north{
- id = "miningdorm3";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/siding/yellow{
dir = 1
@@ -5557,22 +5551,19 @@
},
/area/mine/production/middle)
"KJ" = (
-/obj/item/kirbyplants/random,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 9
},
/obj/effect/turf_decal/siding/red/corner,
/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron,
+/obj/machinery/biogenerator/organic_printer,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"KL" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"KV" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/machinery/light/directional/east,
/obj/item/stack/package_wrap,
/obj/item/hand_labeler,
@@ -5580,7 +5571,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 6
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/eva)
"KW" = (
/obj/structure/disposalpipe/segment{
@@ -5589,10 +5580,10 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
},
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"Le" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/production)
"Lf" = (
@@ -5624,16 +5615,14 @@
/obj/effect/turf_decal/trimline/red/filled/mid_joiner{
dir = 8
},
-/turf/open/floor/iron/dark/textured_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"Li" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"Lk" = (
/obj/structure/cable,
@@ -5673,9 +5662,7 @@
/obj/effect/turf_decal/trimline/red/filled/mid_joiner{
dir = 4
},
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"Ls" = (
/obj/structure/lattice/catwalk/mining,
@@ -5696,9 +5683,14 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Ly" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/mine/storage/public)
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/machinery/power/rtg/old_station,
+/obj/structure/railing{
+ dir = 8
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"Lz" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/portable_atmospherics/canister/oxygen,
@@ -5708,19 +5700,16 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 1
- },
-/turf/open/floor/iron/large,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"LF" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"LG" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/storage/medkit/emergency{
pixel_x = 3;
pixel_y = 6
@@ -5734,9 +5723,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 9
},
-/turf/open/floor/iron/white/smooth_corner{
- dir = 1
- },
+/turf/open/floor/iron/colony/white,
/area/mine/medical)
"LI" = (
/obj/structure/flora/tree/pine/style_random,
@@ -5751,31 +5738,30 @@
},
/area/mine/laborcamp/quarters)
"LK" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Maintenance"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
+/obj/effect/mapping_helpers/airlock/unres{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/mine/maintenance/public/north)
"LM" = (
-/obj/structure/chair/sofa/corp/left{
- dir = 4
- },
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
/obj/effect/turf_decal/siding/red{
dir = 4
},
-/turf/open/floor/iron/edge{
- dir = 4
- },
+/obj/structure/table/greyscale,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"LO" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/storage/box/bandages{
pixel_y = 6
},
@@ -5811,9 +5797,9 @@
/turf/open/floor/iron/smooth_edge,
/area/mine/laborcamp)
"Mc" = (
-/obj/structure/chair/wood/wings,
/obj/machinery/light/small/directional/east,
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/obj/machinery/vending/games,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"Me" = (
/obj/machinery/shower/directional/west,
@@ -5832,9 +5818,7 @@
/obj/effect/turf_decal/trimline/red/filled/mid_joiner{
dir = 4
},
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/lounge)
"Mr" = (
/obj/effect/decal/cleanable/dirt,
@@ -5850,7 +5834,7 @@
/obj/effect/turf_decal/siding/red/corner{
dir = 4
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"Mu" = (
/obj/machinery/disposal/bin,
@@ -5860,7 +5844,7 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"My" = (
/obj/machinery/light/small/directional/east,
@@ -5884,7 +5868,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 9
},
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"MH" = (
/obj/machinery/door/airlock/external/glass{
@@ -5902,7 +5886,7 @@
/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{
dir = 8
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"MI" = (
/obj/structure/fence/door/opened,
@@ -5916,17 +5900,24 @@
dir = 8
},
/obj/machinery/airalarm/directional/east,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"MM" = (
/obj/structure/railing/corner{
dir = 1
},
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/production/middle)
+"MN" = (
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"MQ" = (
/obj/structure/railing/corner{
dir = 4
@@ -5942,7 +5933,7 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"MS" = (
-/turf/open/floor/carpet/executive,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/lounge)
"MW" = (
/obj/structure/cable,
@@ -5970,7 +5961,7 @@
name = "Mining External Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/production)
"Ne" = (
/obj/machinery/light/small/directional/west,
@@ -5997,12 +5988,10 @@
/obj/effect/turf_decal/trimline/red/filled/mid_joiner{
dir = 8
},
-/turf/open/floor/iron/dark/textured_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"Ni" = (
-/obj/effect/spawner/structure/window,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/mechbay)
"Nl" = (
@@ -6020,14 +6009,14 @@
name = "Mining External Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"No" = (
/obj/structure/tank_dispenser/oxygen,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/eva)
"Nq" = (
/obj/effect/turf_decal/bot,
@@ -6054,16 +6043,12 @@
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/turf/open/floor/plating,
/area/mine/maintenance/public/south)
"Nw" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"Nz" = (
/obj/effect/turf_decal/bot,
@@ -6088,27 +6073,27 @@
"NE" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock{
- id_tag = "miningdorm3";
- name = "Luxury Room"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Bunk C"
},
/obj/effect/mapping_helpers/airlock/access/any/supply/mining_station,
/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"NG" = (
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 10
},
-/obj/machinery/computer/order_console/mining,
-/turf/open/floor/iron/dark,
+/obj/machinery/vending/deforest_medvend,
+/turf/open/floor/iron/colony,
/area/mine/production)
"NL" = (
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/underground/explored)
"NM" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/laborcamp/security/maintenance)
"NR" = (
@@ -6127,14 +6112,13 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/turf_decal/trimline/blue/filled/end,
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"NU" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/production)
"NV" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"NX" = (
@@ -6158,7 +6142,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/eva)
"Og" = (
/obj/machinery/power/apc/auto_name/directional/west,
@@ -6173,42 +6157,36 @@
/obj/item/flashlight,
/obj/item/clothing/glasses/meson,
/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/storage/public)
"Oh" = (
/obj/machinery/computer/security/labor,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Oj" = (
/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/obj/structure/closet/secure_closet/freezer/fridge/all_access,
+/obj/effect/spawner/random/food_or_drink/cake_ingredients,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"Ok" = (
-/obj/structure/table,
-/obj/machinery/cell_charger{
- pixel_y = 3
- },
+/obj/structure/table/greyscale,
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 10
},
-/turf/open/floor/iron/dark,
+/obj/machinery/cell_charger_multi/directional/west,
+/obj/item/stock_parts/power_store/cell/high/empty,
+/obj/item/stock_parts/power_store/cell/high/empty,
+/obj/item/stock_parts/power_store/cell/high/empty,
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"Om" = (
-/obj/item/kirbyplants/random,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/siding/yellow/corner{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/mine/lounge)
+/obj/structure/marker_beacon/burgundy,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/underground/explored)
"Ot" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 8
@@ -6228,10 +6206,18 @@
/obj/effect/turf_decal/trimline/red/filled/corner{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 4
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/laborcamp/security)
+"OD" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing,
+/obj/structure/railing{
+ dir = 10
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"OH" = (
/obj/item/storage/fancy/cigarettes/cigpack_robust{
pixel_x = -8;
@@ -6248,18 +6234,16 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp)
"OM" = (
-/obj/structure/table,
/obj/machinery/power/apc/auto_name/directional/east,
/obj/structure/cable,
/obj/effect/turf_decal/trimline/green/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/obj/machinery/hydroponics/constructable,
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"ON" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/maintenance/service)
"OO" = (
/obj/machinery/seed_extractor,
@@ -6275,39 +6259,51 @@
/turf/open/floor/iron/smooth_edge,
/area/mine/laborcamp/quarters)
"OT" = (
-/obj/structure/cable,
-/turf/open/floor/iron/white/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/cafeteria)
"OU" = (
/turf/closed/mineral/random/snow,
/area/icemoon/surface/outdoors/labor_camp)
+"OW" = (
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 5
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"OZ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/trimline/purple/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/warning,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/mechbay)
"Pc" = (
-/obj/structure/closet/crate/grave,
-/turf/open/misc/asteroid/snow/icemoon,
+/obj/structure/railing/corner{
+ dir = 8
+ },
+/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Pd" = (
/obj/structure/marker_beacon/teal,
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
+"Ph" = (
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 6
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"Pi" = (
/obj/machinery/light/small/directional/south,
/obj/effect/turf_decal/trimline/red/filled/line,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Pk" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -6321,16 +6317,14 @@
/obj/structure/cable,
/obj/effect/turf_decal/trimline/green/filled/line,
/obj/effect/turf_decal/trimline/blue/filled/warning,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"Pm" = (
-/obj/effect/spawner/structure/window,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/cafeteria)
"Po" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/paper/guides/jobs/security/labor_camp,
/obj/structure/cable,
/obj/machinery/camera/autoname/directional/south{
@@ -6340,7 +6334,7 @@
dir = 10
},
/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Pp" = (
/obj/item/toy/beach_ball,
@@ -6369,9 +6363,7 @@
dir = 4
},
/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/lounge)
"PD" = (
/obj/effect/decal/cleanable/dirt,
@@ -6401,8 +6393,18 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
+"PK" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"PL" = (
/obj/machinery/recycler{
dir = 8
@@ -6415,7 +6417,7 @@
/area/icemoon/surface/outdoors/nospawn)
"PR" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/executive,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/lounge)
"PS" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -6425,10 +6427,10 @@
dir = 1
},
/obj/effect/turf_decal/siding/red,
-/turf/open/floor/iron/edge,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"PT" = (
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/mechbay)
"PV" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -6439,7 +6441,7 @@
/obj/effect/turf_decal/trimline/green/filled/warning{
dir = 1
},
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"PW" = (
/obj/structure/cable,
@@ -6448,17 +6450,14 @@
},
/obj/effect/turf_decal/trimline/red/filled/line,
/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"PY" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/spawner/random/entertainment/toy,
/turf/open/floor/iron/checker,
/area/mine/laborcamp)
"Qa" = (
-/obj/item/kirbyplants/random,
/obj/machinery/airalarm/directional/east,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
@@ -6466,7 +6465,9 @@
/obj/effect/turf_decal/siding/red/corner{
dir = 1
},
-/turf/open/floor/iron,
+/obj/structure/table/greyscale,
+/obj/machinery/biogenerator/foodricator,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"Qb" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -6482,17 +6483,17 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"Qi" = (
-/obj/machinery/door/airlock/research/glass{
- name = "Mining Station Mech Bay"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Exosuit Bay"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/mapping_helpers/airlock/access/any/supply/mining_station,
-/obj/effect/turf_decal/tile/brown/opposingcorners,
/obj/effect/turf_decal/tile/purple/opposingcorners{
dir = 1
},
-/turf/open/floor/iron/dark,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/mechbay)
"Qq" = (
/obj/structure/ore_vent/starter_resources{
@@ -6509,7 +6510,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
cycle_id = "lavaland_mining_mid"
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production/middle)
"Qx" = (
/obj/structure/stairs/south,
@@ -6532,9 +6533,8 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"QG" = (
-/obj/machinery/door/airlock/public/glass{
- id_tag = "gulag2";
- name = "Cell 2"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Prisoner Bunk"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -6555,28 +6555,29 @@
/obj/structure/railing{
dir = 4
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"QN" = (
-/obj/structure/girder,
-/turf/open/floor/plating/snowed/icemoon,
-/area/icemoon/surface/outdoors/nospawn)
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/iron/colony,
+/area/mine/lounge)
"QP" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/executive,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"QR" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/obj/structure/chair/plastic,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"QT" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"QV" = (
/obj/structure/railing{
@@ -6589,18 +6590,18 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"QX" = (
-/turf/closed/wall,
+/turf/closed/wall/prefab_plastic,
/area/mine/mechbay)
"Ra" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "Mining Station EVA"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Mining EVA"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/supply/mining_station,
/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/eva)
"Rd" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -6612,15 +6613,11 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 10
},
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"Re" = (
/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"Rf" = (
/obj/effect/decal/cleanable/dirt,
@@ -6637,7 +6634,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"Rl" = (
/obj/structure/flora/rock/icy/style_random,
@@ -6650,9 +6647,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"Rs" = (
/obj/structure/fence/corner{
@@ -6664,8 +6659,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 9
},
-/obj/effect/turf_decal/siding/yellow/corner,
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"Ru" = (
/obj/structure/sink/kitchen/directional/east{
@@ -6688,6 +6682,7 @@
"Rw" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/toolcloset,
+/obj/effect/spawner/random/engineering/flashlight,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"Ry" = (
@@ -6702,8 +6697,8 @@
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
"RD" = (
-/turf/closed/wall,
-/area/mine/maintenance/labor)
+/turf/open/floor/plating/snowed/smoothed/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"RF" = (
/obj/structure/railing/corner{
dir = 1
@@ -6719,10 +6714,7 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"RG" = (
-/obj/machinery/door/airlock/public/glass{
- id_tag = "cellblock1";
- name = "Labor Camp Operations"
- },
+/obj/structure/window/fulltile/colony_fabricator,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/smooth,
@@ -6773,14 +6765,18 @@
/turf/open/floor/iron/dark/textured_large,
/area/mine/production)
"RY" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/mine/production)
-"RZ" = (
-/obj/structure/table,
-/obj/machinery/microwave{
- pixel_y = 6
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/structure/railing{
+ dir = 1
},
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
+"RZ" = (
+/obj/structure/table/greyscale,
+/obj/machinery/microwave/frontier_printed,
/turf/open/floor/iron/smooth_edge{
dir = 8
},
@@ -6798,8 +6794,7 @@
/area/mine/laborcamp/production)
"Sm" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/siding/yellow,
-/turf/open/floor/iron/large,
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"Sn" = (
/obj/machinery/hydroponics/constructable,
@@ -6807,7 +6802,7 @@
/obj/effect/turf_decal/trimline/green/filled/line{
dir = 9
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"Sq" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
@@ -6816,9 +6811,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/white/smooth_corner{
- dir = 1
- },
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/medical)
"Sr" = (
/obj/item/cigbutt,
@@ -6828,19 +6821,13 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/warning,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/lounge)
"St" = (
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Sz" = (
/obj/machinery/hydroponics/constructable,
@@ -6848,20 +6835,16 @@
/obj/effect/turf_decal/trimline/green/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"SA" = (
-/obj/machinery/door/airlock/glass{
- name = "Arrival Lounge"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Public Supply Hall"
},
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"SB" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -6872,22 +6855,14 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
-/turf/open/floor/iron/dark/smooth_edge,
-/area/mine/laborcamp/security)
-"SD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/end{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/mine/lounge)
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/laborcamp/security)
"SG" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp/security)
"SL" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -6899,15 +6874,25 @@
},
/turf/open/floor/iron/smooth_large,
/area/mine/laborcamp)
-"SO" = (
-/obj/structure/chair/stool{
- dir = 8
+"SN" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Labor Camp External Airlock"
},
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/carpet/neon/simple/red/nodots,
-/area/mine/cafeteria)
+/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
+ cycle_id = "lavaland_gulag_east"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/effect/mapping_helpers/airlock/access/any/security/brig,
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/maintenance/labor)
+"SO" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"SP" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/lounge)
"SQ" = (
@@ -6915,16 +6900,19 @@
dir = 4
},
/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"Tc" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/mine/cafeteria)
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing{
+ dir = 10
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"Te" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/window/fulltile/colony_fabricator,
/turf/open/floor/plating,
/area/mine/laborcamp/quarters)
"Tf" = (
@@ -6934,27 +6922,23 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony,
/area/mine/eva)
"Ti" = (
/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/structure/table,
-/obj/item/paper/fluff/stations/lavaland/orm_notice,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/obj/structure/closet/xenoarch,
+/turf/open/floor/iron/colony,
/area/mine/production)
"To" = (
-/obj/structure/table,
-/obj/machinery/reagentgrinder,
/obj/effect/turf_decal/siding/wood{
dir = 4
},
-/turf/open/floor/iron/white,
+/obj/structure/table/greyscale,
+/obj/machinery/microwave/frontier_printed,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"Tp" = (
-/obj/structure/closet/crate,
-/obj/effect/spawner/random/maintenance,
+/obj/effect/spawner/random/structure/closet_empty/crate/with_loot,
/turf/open/floor/plating,
/area/mine/storage)
"Tr" = (
@@ -6968,13 +6952,13 @@
name = "Mining External Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/production)
"Ts" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"Tu" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -6987,13 +6971,18 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/mine/maintenance/living/north)
+"TA" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"TD" = (
/obj/effect/turf_decal/trimline/brown/filled/corner{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 1
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/production)
"TF" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7002,13 +6991,11 @@
/obj/effect/turf_decal/trimline/purple/filled/corner{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/mechbay)
"TJ" = (
/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"TN" = (
/obj/structure/ore_box,
@@ -7019,15 +7006,13 @@
},
/area/mine/production/lower)
"TQ" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/storage/toolbox/mechanical{
pixel_x = -2;
pixel_y = 4
},
/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/eva)
"TR" = (
/obj/structure/fence/cut/large{
@@ -7042,31 +7027,33 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security)
"TV" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Utility Storage"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/turf/open/floor/plating,
/area/mine/maintenance/service)
"TW" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Storage"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Power and Storage"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/mapping_helpers/airlock/access/all/security/brig,
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/mine/laborcamp/security/maintenance)
"Ua" = (
/obj/structure/railing/corner{
dir = 8
},
-/turf/closed/wall/ice,
+/turf/closed/wall/prefab_plastic,
/area/icemoon/underground/explored)
"Ub" = (
/obj/item/kirbyplants/random,
@@ -7089,7 +7076,8 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"Uj" = (
/obj/structure/railing/corner{
@@ -7110,7 +7098,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/living/north)
"Up" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -7118,14 +7106,21 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/edge,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/living_quarters)
"Uq" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
+"Ur" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/camera/autoname/directional/north,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"Us" = (
/obj/machinery/shower/directional/south,
/turf/open/floor/iron/dark/textured_edge,
@@ -7137,10 +7132,9 @@
/turf/open/floor/iron/smooth_edge,
/area/mine/laborcamp)
"Uu" = (
-/obj/machinery/door/airlock/security{
- name = "Labor Camp Break Room"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Break Lounge"
},
-/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/obj/effect/turf_decal/tile/red/fourcorners,
/turf/open/floor/iron/dark,
@@ -7166,21 +7160,17 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/quarters)
"UQ" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 9
},
/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"US" = (
-/obj/structure/table/wood,
-/obj/item/toy/cards/deck,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"UV" = (
/obj/machinery/door/airlock/external/glass{
@@ -7193,7 +7183,7 @@
/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"UZ" = (
/obj/structure/chair/stool/directional/west,
@@ -7218,14 +7208,14 @@
/area/icemoon/surface/outdoors/nospawn)
"Ve" = (
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp)
"Vf" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp)
"Vh" = (
/obj/machinery/door/airlock/external/glass{
@@ -7241,7 +7231,7 @@
/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
dir = 4
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"Vi" = (
/obj/structure/cable,
@@ -7263,15 +7253,13 @@
/turf/open/floor/iron/dark,
/area/mine/laborcamp)
"Vn" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Maintenance"
- },
+/obj/machinery/door/airlock/colony_prefab,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/all/supply/mining_station,
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/maintenance/production)
"Vp" = (
/obj/structure/ore_box,
@@ -7293,21 +7281,26 @@
/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/turf/open/floor/plating,
/area/mine/maintenance/labor)
-"Vt" = (
+"Vs" = (
+/obj/structure/lattice/catwalk,
/obj/structure/cable,
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
+"Vt" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"Vw" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"Vy" = (
/obj/structure/cable,
@@ -7315,7 +7308,7 @@
/area/mine/production/middle)
"Vz" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/executive,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"VD" = (
/obj/structure/railing,
@@ -7326,7 +7319,7 @@
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
"VF" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/decal/cleanable/dirt,
/obj/item/plate,
/obj/item/kitchen/fork,
@@ -7340,12 +7333,11 @@
/turf/open/floor/iron/checker,
/area/mine/laborcamp)
"VJ" = (
-/obj/structure/closet/crate,
/obj/item/food/mint,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/storage)
"VK" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7382,30 +7374,30 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/laborcamp)
"VZ" = (
/obj/machinery/power/apc/auto_name/directional/south,
/obj/structure/cable,
/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/structure/table,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/obj/structure/table/greyscale,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"Wb" = (
/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"We" = (
/obj/machinery/light/small/directional/north,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/mine/storage)
"Wg" = (
-/obj/structure/girder,
-/turf/open/floor/plating/snowed/icemoon,
-/area/mine/lounge)
+/obj/machinery/airalarm/directional/south,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/mine/maintenance/service)
"Wl" = (
/obj/machinery/door/airlock/external/glass{
name = "Mining External Airlock"
@@ -7414,17 +7406,25 @@
cycle_id = "lavaland_mining_west"
},
/obj/effect/mapping_helpers/airlock/access/any/supply/mining_station,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"Wm" = (
/obj/structure/cable,
/obj/effect/turf_decal/trimline/red/filled/corner{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 1
- },
+/turf/open/floor/iron/colony/bolts,
/area/mine/laborcamp/security)
+"Wn" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/railing{
+ dir = 8
+ },
+/turf/open/openspace/icemoon/keep_below,
+/area/icemoon/surface/outdoors/nospawn)
"Wr" = (
/obj/structure/flora/grass/both/style_random,
/turf/open/misc/asteroid/snow/icemoon,
@@ -7435,13 +7435,13 @@
/obj/effect/turf_decal/trimline/green/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony,
/area/mine/hydroponics)
"Wx" = (
-/obj/machinery/computer/arcade/battle{
- dir = 4
- },
-/turf/open/floor/carpet/neon/simple/red/nodots,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/entertainment/lighter,
+/obj/machinery/light/small/blacklight/directional/west,
+/turf/open/floor/iron/colony/bolts,
/area/mine/cafeteria)
"Wy" = (
/obj/structure/lattice/catwalk/mining,
@@ -7454,7 +7454,7 @@
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"WD" = (
/obj/structure/railing{
@@ -7473,7 +7473,7 @@
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 5
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/mechbay)
"WK" = (
/obj/structure/chair/sofa/corp{
@@ -7482,12 +7482,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 4
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 8
- },
-/turf/open/floor/iron/edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"WN" = (
/obj/structure/railing{
@@ -7509,12 +7504,11 @@
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/underground/explored)
"WU" = (
-/obj/machinery/space_heater,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/storage)
"WV" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -7536,14 +7530,14 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"WX" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Storage"
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Mining Station Production Storage"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/effect/mapping_helpers/airlock/access/any/supply/mining_station,
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/storage)
"Xd" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -7556,9 +7550,7 @@
network = list("mine")
},
/obj/effect/turf_decal/trimline/brown/filled/line,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"Xe" = (
/obj/structure/marker_beacon/burgundy,
@@ -7568,13 +7560,16 @@
/turf/open/floor/plating/snowed/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"Xg" = (
-/obj/structure/table,
/obj/machinery/light/directional/west,
-/obj/effect/spawner/random/food_or_drink/booze,
/obj/effect/turf_decal/siding/wood{
dir = 1
},
-/turf/open/floor/iron/white,
+/obj/structure/cable,
+/obj/structure/table/greyscale,
+/obj/item/kitchen/rollingpin,
+/obj/effect/spawner/random/food_or_drink/condiment,
+/obj/machinery/reagentgrinder,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"Xi" = (
/obj/structure/chair/comfy/teal{
@@ -7586,12 +7581,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
-/obj/effect/turf_decal/siding/yellow{
- dir = 4
- },
-/turf/open/floor/iron/edge{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"Xj" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7600,9 +7590,7 @@
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/production)
"Xn" = (
/obj/structure/stairs/east,
@@ -7615,22 +7603,21 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/turf/open/floor/iron/edge,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"Xs" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/lounge)
"Xt" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/highsecurity{
- name = "Labor Camp Service Gate";
- security_level = 4
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Security Post Maintenance"
},
/obj/effect/mapping_helpers/airlock/access/any/security/brig,
/turf/open/floor/plating,
@@ -7662,7 +7649,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 5
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"XB" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7673,9 +7660,7 @@
/obj/effect/turf_decal/siding/yellow/corner{
dir = 4
},
-/turf/open/floor/iron/edge{
- dir = 4
- },
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/lounge)
"XC" = (
/obj/structure/stairs/south,
@@ -7688,12 +7673,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/machinery/light/directional/south,
-/turf/open/floor/iron/edge{
- dir = 1
- },
+/turf/open/floor/iron/colony,
/area/mine/lounge)
"XH" = (
/obj/structure/disposalpipe/segment{
@@ -7717,25 +7699,27 @@
pixel_x = 32;
pixel_y = 0
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"XQ" = (
/mob/living/basic/mining/ice_whelp,
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
"XT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
-/area/mine/production)
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Shuttle Lounge"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/lounge)
"XV" = (
/obj/machinery/light/small/directional/north,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/iron/textured_large,
+/turf/open/floor/iron/colony/white/texture,
/area/mine/living_quarters)
"XW" = (
/obj/item/kirbyplants/random,
@@ -7746,17 +7730,15 @@
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/iron/colony,
/area/mine/mechbay)
"XZ" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/storage/fancy/donut_box,
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Ya" = (
/obj/machinery/vending/security{
@@ -7765,7 +7747,7 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 10
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Yb" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7776,33 +7758,36 @@
/obj/structure/disposalpipe/segment{
dir = 5
},
-/turf/open/floor/plating,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security/maintenance)
"Yc" = (
-/obj/structure/reagent_dispensers/beerkeg,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 1
- },
+/obj/structure/table/greyscale,
+/obj/item/food/canned/tomatoes,
+/obj/item/plate/oven_tray,
+/turf/open/floor/iron/colony/white/bolts,
/area/mine/cafeteria)
"Ye" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 8
},
-/obj/structure/cable,
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 8
- },
+/turf/open/floor/iron/colony,
/area/mine/production)
"Yf" = (
-/obj/effect/turf_decal/siding/yellow,
-/turf/open/floor/iron/large,
-/area/mine/lounge)
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/railing{
+ dir = 1
+ },
+/obj/structure/railing,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"Yg" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/bolts,
/area/mine/eva)
"Yk" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
@@ -7816,10 +7801,10 @@
"Yl" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/brown/fourcorners,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/production)
"Ym" = (
-/turf/closed/wall/ice,
+/turf/closed/wall/prefab_plastic,
/area/mine/lounge)
"Yn" = (
/obj/machinery/conveyor{
@@ -7845,7 +7830,7 @@
/turf/open/openspace/icemoon/keep_below,
/area/icemoon/surface/outdoors/nospawn)
"Yr" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/effect/decal/cleanable/dirt,
/obj/item/toy/cards/deck,
/turf/open/floor/iron/checker,
@@ -7855,10 +7840,10 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 6
},
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"Yv" = (
-/obj/structure/table,
+/obj/structure/table/greyscale,
/obj/item/paper,
/obj/item/pen,
/turf/open/floor/iron/smooth_edge{
@@ -7886,6 +7871,14 @@
/obj/structure/barricade/wooden,
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/nospawn)
+"YN" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 1
+ },
+/turf/open/floor/catwalk_floor/colony_fabricator,
+/area/mine/living_quarters)
"YQ" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
@@ -7906,7 +7899,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/open/floor/iron/dark/textured_large,
+/turf/open/floor/iron/colony/texture,
/area/mine/production)
"YY" = (
/obj/structure/rack,
@@ -7919,29 +7912,24 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"Zb" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
+/obj/machinery/door/airlock/colony_prefab{
+ name = "Bunk A"
},
-/turf/open/floor/iron,
-/area/mine/lounge)
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/tile/blue/fourcorners,
+/turf/open/floor/iron/colony/white/texture,
+/area/mine/living_quarters)
"Zh" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"Zj" = (
-/obj/structure/chair/sofa/middle/brown,
-/obj/effect/turf_decal/tile/bar/opposingcorners{
- dir = 1
- },
/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/checker,
+/obj/structure/table/greyscale,
+/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage,
+/turf/open/floor/iron/colony,
/area/mine/cafeteria)
"Zl" = (
/obj/structure/cable,
@@ -7949,20 +7937,17 @@
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
-/turf/open/floor/iron/dark/smooth_edge,
+/turf/open/floor/catwalk_floor/colony_fabricator,
/area/mine/laborcamp/security)
"Zn" = (
/obj/machinery/light/directional/east,
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 6
},
-/turf/open/floor/iron,
+/turf/open/floor/iron/colony/white,
/area/mine/cafeteria)
"Zp" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/structure/steam_vent,
/turf/open/floor/plating,
/area/mine/laborcamp/security/maintenance)
"Zq" = (
@@ -7975,8 +7960,10 @@
/turf/open/floor/iron/smooth,
/area/mine/laborcamp/production)
"Zt" = (
-/turf/closed/wall,
-/area/mine/laborcamp)
+/obj/structure/flora/grass/both/style_random,
+/obj/machinery/camera/autoname/directional/west,
+/turf/open/misc/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors/nospawn)
"Zv" = (
/obj/structure/closet/secure_closet/personal/cabinet,
/obj/effect/turf_decal/siding/yellow{
@@ -8012,9 +7999,7 @@
/obj/effect/turf_decal/siding/red{
dir = 8
},
-/turf/open/floor/iron/edge{
- dir = 8
- },
+/turf/open/floor/iron/colony/white,
/area/mine/lounge)
"ZH" = (
/obj/structure/closet/secure_closet/labor_camp_security,
@@ -8022,7 +8007,7 @@
dir = 9
},
/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/dark,
+/turf/open/floor/iron/colony,
/area/mine/laborcamp/security)
"ZM" = (
/turf/open/lava/plasma/ice_moon,
@@ -8035,6 +8020,7 @@
pixel_y = 24
},
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/mine/maintenance/living/north)
"ZT" = (
@@ -30364,12 +30350,12 @@ Nr
pU
pU
pU
+Om
pU
pU
pU
pU
-pU
-pU
+Om
pU
pU
ZM
@@ -31906,12 +31892,12 @@ Nr
pU
pU
pU
+Om
pU
pU
pU
pU
-pU
-pU
+Om
pU
pU
ZM
@@ -48608,7 +48594,7 @@ Nr
Nr
Nr
pU
-pU
+Om
pU
pU
pU
@@ -49893,7 +49879,7 @@ Nr
Nr
pU
Wr
-pU
+Om
pU
pU
pU
@@ -96157,12 +96143,12 @@ Nr
Nr
Nr
pU
-pU
+Om
Bd
uO
uO
sI
-pU
+Om
pU
pU
NL
@@ -96928,12 +96914,12 @@ Nr
Nr
Nr
pU
-pU
+Om
mF
pU
pU
tC
-pU
+Om
pU
NL
NL
@@ -114932,7 +114918,7 @@ ge
ge
pU
lE
-pU
+Om
NL
NL
NL
@@ -115698,7 +115684,7 @@ yV
Us
aL
bC
-wf
+ls
yV
pU
pU
@@ -116217,7 +116203,7 @@ Wr
Wr
pU
pU
-pU
+Om
pU
pU
pU
@@ -116723,10 +116709,10 @@ pU
pU
pU
pU
+Om
pU
pU
-pU
-pU
+Om
pU
pU
pU
@@ -152973,11 +152959,11 @@ Dv
Dv
aK
aK
-aK
+SO
tL
aK
pV
-aK
+SO
aK
Dv
Dv
@@ -155548,7 +155534,7 @@ fe
JV
ff
jU
-uq
+eR
sf
UN
Ge
@@ -155805,7 +155791,7 @@ eo
Zr
Yn
xz
-uq
+eR
OS
LJ
QG
@@ -156054,14 +156040,14 @@ Lw
eb
eb
eb
-Zt
-Zt
-om
+kg
+kg
+rX
RG
fk
gh
-Zt
-Zt
+kg
+kg
Ge
gf
cQ
@@ -156309,9 +156295,9 @@ xG
xG
rX
rX
-Zt
+kg
rX
-Zt
+kg
Ub
Tu
MW
@@ -156823,9 +156809,9 @@ xG
xG
rX
rX
-Zt
+kg
rX
-Zt
+kg
rS
Kp
Xy
@@ -157350,9 +157336,9 @@ jA
Ix
OK
tr
-Zt
+kg
pE
-Zt
+kg
aK
aK
Dv
@@ -157607,7 +157593,7 @@ Vi
AC
pH
zr
-Zt
+kg
EG
rX
aK
@@ -157861,14 +157847,14 @@ RZ
tZ
EQ
Tu
-Zt
-Zt
+kg
+kg
jm
-Zt
-Zt
-RD
-RD
-RD
+kg
+kg
+rF
+rF
+rF
Dv
Dv
Dv
@@ -158111,22 +158097,22 @@ aK
eb
eb
eb
-Zt
+kg
Vm
mP
XJ
fo
Rf
DV
-Zt
+kg
pO
hr
Ru
-Zt
+kg
IA
VO
-RD
-RD
+rF
+rF
Dv
aK
eb
@@ -158368,22 +158354,22 @@ fP
eb
eb
eb
-Zt
+kg
nI
sU
cq
Di
fg
PG
-Zt
+kg
ee
hr
hr
Je
hx
-uI
+CD
Mr
-RD
+rF
Dv
eb
eb
@@ -158632,15 +158618,15 @@ vO
Gr
tE
ro
-Zt
-Zt
+kg
+kg
Gz
rz
-Zt
+kg
If
-kE
+ve
Mr
-RD
+rF
Dv
Dv
Dv
@@ -158890,14 +158876,14 @@ oN
Jf
Jf
WF
-Zt
-Zt
-Zt
-Zt
-Ee
+kg
+kg
+kg
+kg
+YJ
ve
-RD
-RD
+rF
+rF
Dv
Dv
Dv
@@ -159147,13 +159133,13 @@ BH
XW
Sr
Rf
-nq
+kg
oT
kg
rF
rF
Hb
-RD
+rF
Dv
Dv
Dv
@@ -159408,9 +159394,9 @@ kg
xQ
kg
CD
-Vq
+SN
Ha
-RD
+rF
Dv
Dv
Dv
@@ -159667,7 +159653,7 @@ kg
Vq
rF
YJ
-RD
+rF
Dv
Dv
Dv
@@ -159924,7 +159910,7 @@ aK
dJ
rF
JE
-RD
+rF
aK
Dv
Dv
@@ -162482,16 +162468,16 @@ eb
aK
aK
aK
-Ia
+kt
he
he
-Ia
+kt
TT
gZ
-Ia
-Ia
-Ia
-Ia
+kt
+kt
+kt
+kt
Jn
tG
vD
@@ -162500,7 +162486,7 @@ vD
dJ
aK
aK
-Pc
+aK
aK
eb
eb
@@ -162738,19 +162724,19 @@ eb
eb
aK
aK
-Ia
-Ia
+kt
+kt
vn
Po
-Ia
+kt
Gm
fS
he
ZH
Ya
-Ia
+kt
wA
-zh
+cs
UV
zh
eX
@@ -163005,15 +162991,15 @@ io
lJ
aN
Pi
-Ia
+kt
Zp
+kE
vD
vD
vD
-vD
-dJ
+Ur
+aK
aK
-Pc
aK
aK
fP
@@ -163262,17 +163248,17 @@ St
he
qy
qA
-Ia
-Is
+kt
+wq
Is
NM
dJ
dJ
dJ
-aK
-aK
-aK
-aK
+aD
+aD
+aD
+aD
aK
aK
eb
@@ -163516,21 +163502,21 @@ IU
he
Zl
PW
-Ia
-Ia
-Ia
-Ia
+kt
+kt
+kt
+kt
kt
AI
kt
-Ae
+HG
aK
aK
-Pc
aK
-Pc
aK
-Pc
+aK
+aD
+aK
aK
eb
eb
@@ -163766,11 +163752,11 @@ Ps
eb
eb
aK
-Ia
-Ia
+kt
+kt
Fp
jq
-Ia
+kt
np
lV
Uu
@@ -163780,19 +163766,19 @@ py
Ji
HD
jc
-Ae
+HG
aK
aK
aK
fP
aK
+aD
aK
aK
-aK
-eb
-eb
-eb
-eb
+kZ
+Ly
+Ly
+uI
eb
eb
eb
@@ -164024,10 +164010,10 @@ eb
eb
aK
aK
-Ia
+kt
he
he
-Ia
+kt
ci
ci
kt
@@ -164037,19 +164023,19 @@ Ys
kt
HO
jc
-Ae
+HG
aK
eb
eb
aK
-Pc
-aK
-aK
aK
-eb
-eb
-eb
-eb
+eV
+Vs
+vQ
+BX
+qU
+qU
+om
eb
eb
eb
@@ -164291,11 +164277,11 @@ kt
jc
jc
jc
-Ia
-Ia
-Ia
+kt
+kt
+kt
Xt
-Ia
+kt
eb
eb
eb
@@ -164303,10 +164289,10 @@ aK
aK
aK
eb
-eb
-eb
-eb
-eb
+Ee
+ps
+ps
+eP
eb
eb
eb
@@ -164551,14 +164537,14 @@ aK
eb
aK
aK
-dJ
+Yf
aK
aK
aK
eb
eb
aK
-aK
+FH
eb
eb
eb
@@ -164783,10 +164769,10 @@ fP
aK
aK
aK
+SO
aK
aK
-aK
-aK
+SO
eb
eb
eb
@@ -164808,9 +164794,9 @@ aK
eb
eb
eb
-dJ
-dJ
-dJ
+ku
+mM
+OD
aK
aK
eb
@@ -165067,7 +165053,7 @@ eb
eb
eb
eb
-dJ
+Aq
aK
fP
eb
@@ -165324,7 +165310,7 @@ eb
eb
eb
eb
-VK
+DZ
eb
eb
eb
@@ -165554,7 +165540,7 @@ aK
aK
fP
aK
-aK
+SO
aK
eb
eb
@@ -165581,7 +165567,7 @@ eb
eb
eb
eb
-VK
+DZ
eb
eb
eb
@@ -165838,7 +165824,7 @@ eb
eb
eb
eb
-VK
+DZ
eb
eb
eb
@@ -166095,7 +166081,7 @@ eb
eb
eb
eb
-VK
+DZ
eb
eb
eb
@@ -166352,7 +166338,7 @@ eb
eb
eb
eb
-VK
+DZ
eb
eb
aK
@@ -166571,11 +166557,11 @@ ZY
aK
aK
aK
-AJ
-AJ
-AJ
-AJ
-AJ
+Kk
+Kk
+Kk
+Kk
+Kk
aK
aK
aK
@@ -166609,11 +166595,11 @@ eb
eb
eb
eb
-dJ
+Aq
aK
eb
fP
-Kk
+aK
aK
aK
aK
@@ -166866,11 +166852,11 @@ eb
aK
aK
aK
-dJ
+Aq
+aK
aK
aK
aK
-Kk
aK
aK
aK
@@ -167087,7 +167073,7 @@ aK
aK
mA
su
-xG
+kf
PL
Sd
aK
@@ -167107,8 +167093,8 @@ eb
aK
aK
kY
-Tc
-Tc
+Pm
+Pm
kY
aK
eb
@@ -167122,13 +167108,13 @@ eb
aK
aK
fP
-Kk
-dJ
-dJ
-dJ
-dJ
-dJ
-dJ
+aK
+ku
+Hz
+Hz
+Hz
+Hz
+OD
aK
aK
eb
@@ -167368,7 +167354,7 @@ gD
zH
kY
kY
-Tc
+Pm
kY
RF
RB
@@ -167385,7 +167371,7 @@ fP
aK
aK
Kk
-dJ
+TA
fP
fP
eb
@@ -167619,7 +167605,7 @@ eb
eb
aK
fP
-Tc
+Pm
xn
ry
te
@@ -167632,17 +167618,17 @@ ol
eb
eb
eb
-aK
-Zq
+FZ
+Ym
SP
SP
-Zq
+Ym
SP
SP
SP
SP
-Zq
-dJ
+Ym
+TA
aK
fP
eb
@@ -167858,8 +167844,8 @@ aK
Qz
ON
rw
-eW
-HG
+mx
+mx
vA
ON
ON
@@ -167876,7 +167862,7 @@ eb
aK
fP
fP
-Tc
+Pm
xJ
XA
eK
@@ -167893,14 +167879,14 @@ Ka
SP
JI
cM
-Zq
+Ym
KJ
LM
uN
Mt
SP
fD
-QN
+xG
eb
eb
eb
@@ -168136,10 +168122,10 @@ kY
kY
kY
Cm
-qp
+ob
kY
kY
-Tc
+Pm
kY
xt
pq
@@ -168156,7 +168142,7 @@ Ff
Ff
wg
SP
-VK
+uR
eb
eb
eb
@@ -168393,7 +168379,7 @@ kY
kR
jS
KL
-DW
+Ia
Xg
qQ
AV
@@ -168414,7 +168400,7 @@ Ff
cK
SP
fD
-QN
+xG
eb
eb
eb
@@ -168626,8 +168612,8 @@ aK
aK
aK
Qz
-ON
-ni
+og
+eW
rZ
ni
ON
@@ -168650,18 +168636,18 @@ kY
ka
iH
KL
-DW
+Ia
uv
OT
Yc
-Tc
+Pm
fP
eb
eb
eb
IH
Vp
-Zq
+Ym
Me
PA
Zq
@@ -168670,8 +168656,8 @@ Zz
FT
Qa
SP
-dJ
-dJ
+gx
+Tc
eb
eb
eb
@@ -168883,10 +168869,10 @@ aK
aK
aK
Qz
-ON
+og
oc
sO
-Hs
+Wg
ON
Hs
xD
@@ -168900,18 +168886,18 @@ eb
fP
aK
aK
-Tc
+Pm
+HT
HT
-SO
Pm
-wb
-wb
+Fd
+Fd
Nw
-DW
+Ia
eD
OT
sW
-Tc
+Pm
eb
eb
eb
@@ -168925,10 +168911,10 @@ yj
yj
GH
yl
-Zq
-Zq
-Zq
-dJ
+Ym
+Ym
+Ym
+TA
eb
eb
eb
@@ -169140,8 +169126,8 @@ aK
Ue
AA
gB
-ON
-ps
+og
+eW
gq
ER
vc
@@ -169157,35 +169143,35 @@ eb
aK
aK
fP
-Tc
+Pm
tX
ut
uk
Zh
Zh
DW
-DW
+Ia
db
gP
To
-Tc
+Pm
aK
eb
eb
eb
eb
aK
-gx
+yX
Sn
Sz
xr
yX
PV
-Gx
-Zq
-cX
-Wg
-dJ
+QN
+uA
+dN
+Ym
+TA
aK
eb
eb
@@ -169396,7 +169382,7 @@ aK
aK
Qz
ON
-ON
+Ie
ON
ON
ON
@@ -169414,11 +169400,11 @@ eb
eb
aK
fP
-Tc
+Pm
QR
tx
Pm
-oe
+Fd
Fd
DW
yN
@@ -169426,12 +169412,12 @@ Re
hD
Oj
qN
-RL
-RL
-dB
-dB
-dB
-RL
+oh
+oh
+Hw
+Hw
+Hw
+oh
vp
Wt
mf
@@ -169439,11 +169425,11 @@ Pl
ie
fL
eH
-Zq
+fJ
cX
-Wg
-dJ
-dJ
+Ym
+gx
+Tc
eb
eb
eb
@@ -169689,7 +169675,7 @@ eb
eb
eb
eb
-gx
+yX
pB
OM
hK
@@ -169700,7 +169686,7 @@ rU
rU
rU
rU
-dJ
+TA
eb
eb
eb
@@ -169932,8 +169918,8 @@ kY
kY
kY
kY
-eP
-wq
+Fd
+Fd
DW
qg
kY
@@ -169942,7 +169928,7 @@ kY
kY
gg
gg
-RM
+EU
eb
eb
eb
@@ -169956,8 +169942,8 @@ XD
rU
Og
Ko
-Ly
-dJ
+cE
+TA
eb
eb
eb
@@ -170200,9 +170186,9 @@ PH
hF
WV
VK
-VK
-VK
-Xw
+wb
+wb
+sj
Xw
Dz
LG
@@ -170213,8 +170199,8 @@ Ss
cE
hV
xU
-Ly
-dJ
+cE
+TA
eb
eb
eb
@@ -170456,11 +170442,11 @@ GZ
gg
sk
gg
-RM
+Ph
eb
eb
eb
-VK
+bX
Dz
mO
vb
@@ -170470,8 +170456,8 @@ HB
qo
IV
iD
-Ly
-zU
+cE
+gb
aK
eb
eb
@@ -170696,7 +170682,7 @@ eb
eb
eb
eb
-eb
+tk
aK
cW
cW
@@ -170722,13 +170708,13 @@ Dz
hB
vu
It
-Xp
+yf
rY
cE
hi
-xU
-Ly
-dJ
+tT
+cE
+TA
fP
eb
eb
@@ -170946,13 +170932,13 @@ kV
kV
ON
Ae
-fP
+Zt
fP
eb
eb
eb
eb
-RM
+RY
cW
Am
cW
@@ -170962,7 +170948,7 @@ iu
tc
xi
iu
-Up
+ed
Cf
NE
In
@@ -170979,14 +170965,14 @@ Dz
Sq
cy
It
-Xp
-Hw
+yf
+jZ
cE
aq
ij
-Ly
-dJ
-dJ
+cE
+gx
+Tc
eb
eb
eb
@@ -171204,11 +171190,11 @@ ON
ON
Ae
Ae
+PK
di
di
-di
-VK
-VK
+wb
+wb
VK
Nn
kv
@@ -171216,9 +171202,9 @@ ce
Li
kv
iu
-ku
+hE
gz
-ux
+Zb
Uf
lq
iu
@@ -171243,8 +171229,8 @@ rU
rU
rU
eA
-dJ
-aK
+gx
+Nl
eb
eb
eb
@@ -171466,7 +171452,7 @@ eb
eb
eb
eb
-RM
+MN
cW
Am
cW
@@ -171493,9 +171479,9 @@ Dz
CS
Dz
Dz
-GH
+JF
SA
-Zq
+Ym
ch
sR
QH
@@ -171724,7 +171710,7 @@ eb
eb
eb
eb
-aK
+rr
aK
cW
cW
@@ -171750,12 +171736,12 @@ iB
Pk
Pk
LK
-SD
+yf
NT
zc
ou
-ou
-ou
+Fy
+wv
Nv
BS
eA
@@ -171989,8 +171975,8 @@ Li
iu
hE
gz
-vQ
-Uf
+ux
+YN
JP
iu
IS
@@ -172001,15 +171987,15 @@ fP
eb
eb
aK
-Zq
+Ym
jj
-Zq
-Zq
-Zq
-Zq
-GH
-yl
-Zq
+Ym
+Ym
+Ym
+Ym
+df
+XT
+Ym
pg
Ce
PD
@@ -172248,7 +172234,7 @@ iu
iu
iu
iN
-ix
+iZ
iu
Zw
UD
@@ -172257,16 +172243,16 @@ aK
aK
eb
eb
-Zq
-Zq
+Ym
+Ym
Rt
bK
Xi
ez
EE
XB
-Zb
-Zq
+Gx
+Ym
eA
eA
eA
@@ -172763,8 +172749,8 @@ qO
iu
yH
KW
+tM
iu
-Hz
iu
aK
aK
@@ -172773,8 +172759,8 @@ eb
aK
SP
cF
-Yf
-Vz
+ib
+od
JZ
JZ
PR
@@ -173034,10 +173020,10 @@ Sm
Vz
MS
MS
-PR
+la
fH
Jt
-Zq
+Ym
aK
fP
xe
@@ -173287,14 +173273,14 @@ RM
aK
SP
ti
-DZ
+ib
FD
vi
WK
qW
-Om
-Zq
-Zq
+zF
+Ym
+Ym
aK
fP
eb
@@ -173523,8 +173509,8 @@ eb
eb
eb
eb
-aK
-fP
+RD
+RD
cW
cW
cW
@@ -173542,15 +173528,15 @@ aK
RM
eb
eb
-Zq
+Ym
JA
wp
zF
-Zq
+Ym
SP
SP
SP
-Zq
+Ym
aK
aK
eb
@@ -173781,14 +173767,14 @@ eb
eb
eb
eb
-fP
-fP
-aK
-RM
-RM
-oy
+RD
+RD
+RD
+OW
+zg
oy
-RM
+HR
+zg
js
Jz
eb
@@ -173799,11 +173785,11 @@ eb
RM
eb
eb
-Zq
+Ym
SP
bL
SP
-Zq
+Ym
eb
eb
eb
@@ -174043,7 +174029,7 @@ eb
eb
eb
eb
-oy
+Gn
eb
eb
js
@@ -174300,7 +174286,7 @@ eb
eb
eb
eb
-oy
+Gn
eb
eb
js
@@ -174556,10 +174542,10 @@ eb
eb
eb
eb
-RM
-oy
+Yq
oy
-RM
+Wn
+Gb
js
Jz
eb
@@ -176094,8 +176080,8 @@ aK
xe
oA
Ey
-tV
-tM
+Hl
+WU
QX
sX
ht
@@ -176866,7 +176852,7 @@ oA
Lz
tV
tV
-tM
+WU
QX
dh
WJ
@@ -177368,7 +177354,7 @@ aK
aK
aK
aK
-aK
+SO
aK
aK
eb
@@ -177380,7 +177366,7 @@ Lh
Nh
NU
Yl
-XT
+dQ
NU
ld
nk
@@ -177627,7 +177613,7 @@ aK
aK
aK
aK
-Aw
+Pc
aa
Gb
cU
@@ -177884,7 +177870,7 @@ aK
aK
aK
aK
-Pq
+jT
pq
pq
pq
@@ -178139,8 +178125,8 @@ aK
aK
aK
aK
-aK
-aK
+SO
+RD
aK
eb
eb
@@ -178151,15 +178137,15 @@ Lq
ye
NU
NU
-RY
+Le
cJ
-RY
+Le
NU
pK
pK
-oh
+dK
Ra
-oh
+dK
pK
NU
aK
@@ -178412,7 +178398,7 @@ gW
Xj
QT
NG
-pK
+dK
No
Hp
Kc
@@ -178669,7 +178655,7 @@ TD
Vw
wl
Ti
-pK
+dK
lg
se
Yg
@@ -178919,7 +178905,7 @@ eb
eb
aK
aK
-NU
+Le
QI
zJ
oi
@@ -179176,13 +179162,13 @@ eb
eb
aK
aK
-NU
+Le
rH
rH
fV
dQ
Cg
-lb
+qt
pK
Ob
IL
@@ -180209,7 +180195,7 @@ aK
aK
hG
aK
-aK
+RD
hT
dY
eb
diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm
index 7a3b22d254f9e..7fda323c9ce19 100644
--- a/_maps/map_files/NebulaStation/NebulaStation.dmm
+++ b/_maps/map_files/NebulaStation/NebulaStation.dmm
@@ -423,7 +423,7 @@
"adt" = (
/obj/machinery/defibrillator_mount/directional/south,
/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/effect/turf_decal/box/white/corners{
dir = 4
},
@@ -545,7 +545,7 @@
id = "cmoprivacy2";
req_access = list("cmo")
},
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/white/herringbone,
/area/station/command/heads_quarters/cmo)
"aer" = (
@@ -770,6 +770,7 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/railing/corner/end/flip,
/turf/open/floor/iron/dark/small,
/area/station/maintenance/central)
"afN" = (
@@ -10568,6 +10569,9 @@
"bDU" = (
/obj/structure/rack,
/obj/item/gun/energy/ionrifle,
+/obj/item/gun/ballistic/automatic/battle_rifle{
+ pixel_y = 3
+ },
/obj/item/clothing/suit/hooded/ablative,
/obj/item/gun/energy/temperature/security,
/obj/effect/turf_decal/bot/right,
@@ -11757,8 +11761,6 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/trimline/dark/warning,
/obj/effect/turf_decal/trimline/dark/warning{
dir = 1
},
@@ -11769,6 +11771,9 @@
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
/obj/machinery/camera/autoname/directional/west,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
"bMP" = (
@@ -12152,6 +12157,19 @@
},
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
+"bPJ" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/cup/glass/mug/britcup{
+ pixel_x = -7;
+ pixel_y = 9
+ },
+/obj/item/reagent_containers/cup/glass/coffee{
+ pixel_y = 5;
+ pixel_x = 7
+ },
+/obj/machinery/digital_clock/directional/south,
+/turf/open/floor/iron/dark/small,
+/area/station/hallway/secondary/entry)
"bPN" = (
/obj/effect/turf_decal/siding/dark{
dir = 8
@@ -12752,6 +12770,7 @@
/turf/open/floor/iron/dark/textured,
/area/station/engineering/atmos)
"bUo" = (
+/obj/structure/cable,
/turf/open/floor/iron/solarpanel/airless,
/area/station/solars/port/aft)
"bUs" = (
@@ -13469,9 +13488,6 @@
},
/turf/open/floor/plating,
/area/station/maintenance/port/central)
-"bZE" = (
-/turf/open/floor/glass/reinforced,
-/area/space/nearstation)
"bZJ" = (
/obj/effect/turf_decal/siding/wideplating_new/dark{
dir = 8
@@ -14494,6 +14510,7 @@
name = "Auxillary Base Shutters";
dir = 8
},
+/obj/effect/turf_decal/box,
/turf/open/floor/iron/dark/textured_half{
dir = 1
},
@@ -23916,6 +23933,13 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron/dark,
/area/station/command/teleporter)
+"dAP" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/mecha_part_fabricator{
+ drop_direction = 1
+ },
+/turf/open/floor/iron/dark,
+/area/station/science/robotics/lab)
"dAT" = (
/obj/effect/spawner/random/entertainment/toy_figure{
pixel_y = 37;
@@ -24499,10 +24523,6 @@
/area/station/service/lawoffice)
"dFs" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "qmprivacy";
- name = "Privacy Shutters"
- },
/obj/machinery/door/poddoor/preopen{
id = "hosprivacy";
name = "HoS Privacy Blast Door"
@@ -27286,13 +27306,6 @@
/turf/open/floor/engine/hull/reinforced,
/area/space/nearstation)
"eaQ" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/structure/sign/warning/secure_area/directional/west,
-/obj/effect/turf_decal/trimline/dark/corner{
- dir = 1
- },
/obj/effect/turf_decal/siding/thinplating_new/corner{
dir = 1
},
@@ -42497,6 +42510,12 @@
},
/turf/open/floor/iron/dark,
/area/station/command/gateway)
+"gnG" = (
+/obj/effect/turf_decal/siding/thinplating_new{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/station/hallway/primary/central)
"gnK" = (
/obj/machinery/airalarm/directional/south,
/obj/structure/railing{
@@ -56446,6 +56465,9 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/disposalpipe/segment,
+/obj/structure/railing/corner/end/flip{
+ dir = 1
+ },
/turf/open/floor/iron/dark/small,
/area/station/maintenance/central)
"isi" = (
@@ -56556,7 +56578,7 @@
"isM" = (
/obj/machinery/defibrillator_mount/directional/south,
/obj/structure/table/glass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/effect/turf_decal/box/white/corners{
dir = 1
},
@@ -60206,10 +60228,6 @@
/area/station/cargo/storage)
"iUM" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "qmprivacy";
- name = "Privacy Shutters"
- },
/obj/machinery/door/poddoor/preopen{
id = "hosprivacy";
name = "HoS Privacy Blast Door"
@@ -62219,7 +62237,7 @@
/obj/structure/table/reinforced,
/obj/effect/turf_decal/trimline/red/corner,
/obj/effect/turf_decal/siding/thinplating_new/dark/corner,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/dark/side{
dir = 9
},
@@ -62774,7 +62792,7 @@
/obj/structure/table/glass,
/obj/structure/window/reinforced/spawner/directional/north,
/obj/machinery/digital_clock/directional/east,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/dark/small,
/area/station/science/robotics/augments)
"jqo" = (
@@ -63101,18 +63119,15 @@
/area/station/engineering/supermatter/room/upper)
"jsw" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/dark/warning{
- dir = 4
- },
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 4
},
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/turf_decal/trimline/dark/line{
+ dir = 4
+ },
/turf/open/floor/iron/dark/small,
/area/station/maintenance/central)
"jsz" = (
@@ -63639,6 +63654,7 @@
dir = 8
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/firealarm/directional/north,
/turf/open/floor/iron/dark/side{
dir = 8
},
@@ -64531,7 +64547,7 @@
/area/station/engineering/supermatter/room/upper)
"jBX" = (
/obj/structure/table/reinforced,
-/obj/item/surgery_tray/full/morgue,
+/obj/effect/spawner/surgery_tray/full/morgue,
/obj/effect/turf_decal/siding/dark/corner{
dir = 8
},
@@ -68969,9 +68985,6 @@
/turf/open/floor/plating/airless,
/area/station/science/ordnance/bomb)
"kki" = (
-/obj/structure/railing{
- dir = 4
- },
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 4
},
@@ -72856,6 +72869,18 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/dark,
/area/station/security/brig)
+"kJJ" = (
+/obj/structure/rack,
+/obj/effect/decal/cleanable/oil,
+/obj/effect/turf_decal/bot_white,
+/obj/item/clothing/suit/hazardvest,
+/obj/item/clothing/suit/hazardvest,
+/obj/item/tank/internals/emergency_oxygen,
+/obj/item/tank/internals/emergency_oxygen,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/mask/breath,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/maintenance/central)
"kJO" = (
/obj/effect/turf_decal/tile/red/anticorner/contrasted{
dir = 8
@@ -75533,9 +75558,6 @@
/obj/structure/railing{
dir = 8
},
-/obj/effect/turf_decal/trimline/dark/warning{
- dir = 8
- },
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 8
},
@@ -75543,6 +75565,9 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/trimline/dark/line{
+ dir = 8
+ },
/turf/open/floor/iron/dark/small,
/area/station/maintenance/central)
"lhV" = (
@@ -78630,6 +78655,12 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/dark,
/area/station/medical/virology)
+"lFB" = (
+/obj/structure/chair/sofa/bench/solo{
+ dir = 4
+ },
+/turf/open/floor/iron/dark/small,
+/area/station/hallway/secondary/entry)
"lFM" = (
/obj/effect/turf_decal/tile/purple,
/obj/structure/railing/corner/end/flip,
@@ -78774,6 +78805,11 @@
/obj/structure/cable,
/turf/open/floor/iron/dark,
/area/station/science/xenobiology)
+"lGG" = (
+/obj/effect/turf_decal/siding/thinplating_new/dark,
+/obj/effect/turf_decal/trimline/dark/line,
+/turf/open/floor/iron/dark/small,
+/area/station/maintenance/central)
"lGR" = (
/obj/effect/turf_decal/siding/dark{
dir = 9
@@ -81330,6 +81366,7 @@
dir = 5
},
/obj/structure/marker_beacon/lime,
+/obj/machinery/firealarm/directional/south,
/turf/open/floor/iron/white,
/area/station/hallway/primary/fore)
"mcX" = (
@@ -83914,28 +83951,22 @@
/turf/open/floor/iron/dark,
/area/station/engineering/atmos)
"mxU" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/obj/effect/turf_decal/trimline/dark/corner{
dir = 1
},
-/obj/effect/turf_decal/trimline/dark/corner{
- dir = 8
- },
/obj/effect/turf_decal/siding/thinplating_new/corner{
dir = 8
},
/obj/effect/turf_decal/siding/thinplating_new/corner{
dir = 1
},
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
/obj/structure/cable,
+/obj/structure/railing/corner/end/flip{
+ dir = 1
+ },
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"mxV" = (
@@ -84200,6 +84231,12 @@
},
/turf/open/floor/wood/large,
/area/station/service/theater)
+"mAd" = (
+/obj/effect/turf_decal/siding/thinplating_new{
+ dir = 8
+ },
+/turf/open/floor/iron,
+/area/station/hallway/primary/central)
"mAi" = (
/obj/effect/turf_decal/siding/wood{
dir = 8
@@ -85717,7 +85754,7 @@
/area/space/nearstation)
"mLK" = (
/obj/structure/rack,
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large,
/obj/item/wirecutters,
/obj/item/wrench,
/obj/effect/turf_decal/siding/thinplating_new/dark{
@@ -85778,6 +85815,15 @@
/obj/machinery/light_switch/directional/south,
/turf/open/floor/iron/dark,
/area/station/engineering/lobby)
+"mMv" = (
+/obj/structure/table/glass,
+/obj/item/newspaper{
+ pixel_x = 3;
+ pixel_y = 4
+ },
+/obj/machinery/digital_clock/directional/north,
+/turf/open/floor/iron/dark/small,
+/area/station/hallway/secondary/entry)
"mMD" = (
/obj/effect/turf_decal/trimline/blue/line{
dir = 6
@@ -93258,20 +93304,12 @@
/area/station/service/chapel/office)
"nTb" = (
/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
/obj/effect/turf_decal/trimline/dark/corner,
-/obj/effect/turf_decal/trimline/dark/corner{
- dir = 4
- },
/obj/effect/turf_decal/siding/thinplating_new/corner,
/obj/effect/turf_decal/siding/thinplating_new/corner{
dir = 4
},
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
+/obj/structure/railing/corner/end/flip,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"nTe" = (
@@ -93403,12 +93441,6 @@
"nUi" = (
/obj/machinery/light/directional/east,
/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/dark/warning{
- dir = 1
- },
/obj/effect/turf_decal/trimline/dark/warning,
/obj/effect/turf_decal/siding/thinplating_new,
/obj/effect/turf_decal/siding/thinplating_new{
@@ -93416,6 +93448,7 @@
},
/obj/structure/sign/poster/official/random/directional/east,
/obj/machinery/camera/autoname/directional/east,
+/obj/machinery/door/firedoor/border_only,
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
"nUp" = (
@@ -102237,6 +102270,21 @@
},
/turf/open/floor/iron/white/herringbone,
/area/station/commons/toilet/restrooms)
+"pfI" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/siding/thinplating_new/dark{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/dark/warning{
+ dir = 1
+ },
+/obj/structure/sign/directions/arrival/directional/west{
+ dir = 10
+ },
+/turf/open/floor/iron/dark/small,
+/area/station/maintenance/central)
"pfY" = (
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 10
@@ -108970,7 +109018,7 @@
/turf/open/floor/iron/dark,
/area/station/hallway/primary/port)
"qfy" = (
-/mob/living/simple_animal/bot/floorbot,
+/mob/living/basic/bot/repairbot,
/obj/effect/turf_decal/bot_white,
/obj/machinery/status_display/ai/directional/east,
/turf/open/floor/iron/dark/textured_large,
@@ -113542,7 +113590,7 @@
/turf/open/floor/engine/n2,
/area/station/engineering/atmos)
"qOe" = (
-/obj/item/ammo_casing/a357/spent{
+/obj/item/ammo_casing/c357/spent{
pixel_y = 6;
pixel_x = 9
},
@@ -115706,9 +115754,6 @@
dir = 8
},
/area/station/maintenance/starboard/fore)
-"rgi" = (
-/turf/open/openspace,
-/area/space)
"rgl" = (
/obj/machinery/atmospherics/components/binary/pump/on{
dir = 1;
@@ -120862,7 +120907,7 @@
/area/station/maintenance/fore/lesser)
"rUg" = (
/obj/structure/table/reinforced,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/machinery/status_display/ai/directional/east,
/obj/effect/turf_decal/trimline/dark_red/filled/corner{
dir = 1
@@ -121591,9 +121636,6 @@
/turf/open/floor/wood/large,
/area/station/service/chapel/office)
"rZU" = (
-/obj/structure/railing{
- dir = 8
- },
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 8
},
@@ -121606,6 +121648,9 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/power/apc/auto_name/directional/west,
/obj/machinery/camera/autoname/directional/west,
+/obj/structure/railing/corner{
+ dir = 8
+ },
/turf/open/floor/iron/dark/small,
/area/station/maintenance/central)
"rZV" = (
@@ -122560,7 +122605,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base,
+/obj/effect/mapping_helpers/airlock/access/all/supply/general,
/turf/open/floor/iron/dark,
/area/station/construction/mining/aux_base)
"shs" = (
@@ -123053,6 +123098,9 @@
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/siding/thinplating_new/dark,
/obj/effect/turf_decal/trimline/dark/warning,
+/obj/structure/sign/directions/arrival/directional/east{
+ dir = 5
+ },
/turf/open/floor/iron/dark/small,
/area/station/maintenance/central)
"sms" = (
@@ -123403,6 +123451,7 @@
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
/turf/open/floor/iron/dark/corner,
/area/station/commons/dorms)
"spf" = (
@@ -129806,6 +129855,12 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/dark/textured,
/area/station/commons/fitness/recreation/lasertag)
+"toI" = (
+/obj/structure/chair/sofa/bench/solo{
+ dir = 8
+ },
+/turf/open/floor/iron/dark/small,
+/area/station/hallway/secondary/entry)
"toJ" = (
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 9
@@ -141111,7 +141166,7 @@
/area/station/hallway/primary/central)
"uYT" = (
/obj/machinery/mecha_part_fabricator{
- dir = 1
+ drop_direction = 1
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/iron/dark,
@@ -146931,12 +146986,6 @@
/turf/open/floor/plating/airless,
/area/station/solars/starboard/fore)
"vQl" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/dark/warning{
- dir = 8
- },
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 8
},
@@ -146944,6 +146993,9 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/trimline/dark/line{
+ dir = 8
+ },
/turf/open/floor/iron/dark/small,
/area/station/maintenance/central)
"vQw" = (
@@ -146956,7 +147008,7 @@
/obj/machinery/button/door/directional/north{
id = "aux_base_shutters";
name = "Public Shutters Control";
- req_access = list("aux_base")
+ req_access = list("cargo")
},
/obj/machinery/light/small/directional/north,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -149572,13 +149624,10 @@
/turf/open/floor/grass,
/area/station/hallway/secondary/entry)
"wkR" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/obj/effect/turf_decal/siding/thinplating_new/dark{
dir = 1
},
-/obj/effect/turf_decal/trimline/dark/warning{
+/obj/effect/turf_decal/trimline/dark/line{
dir = 1
},
/turf/open/floor/iron/dark/small,
@@ -149755,6 +149804,14 @@
},
/turf/open/floor/iron/white,
/area/station/science/lab)
+"wmi" = (
+/obj/structure/rack,
+/obj/item/storage/toolbox/emergency,
+/obj/effect/decal/cleanable/oil,
+/obj/item/screwdriver,
+/obj/effect/turf_decal/bot_white,
+/turf/open/floor/iron/dark/textured_large,
+/area/station/maintenance/central)
"wmj" = (
/obj/effect/turf_decal/siding/wideplating_new/dark/corner{
dir = 1
@@ -150851,10 +150908,6 @@
/turf/open/floor/iron/dark,
/area/station/medical/virology)
"wvW" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/structure/sign/warning/secure_area/directional/east,
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/trimline/dark/corner,
/obj/effect/turf_decal/siding/thinplating_new/corner,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
@@ -153621,10 +153674,6 @@
},
/turf/open/floor/iron/dark/textured,
/area/station/security/prison)
-"wRv" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/glass/reinforced,
-/area/space/nearstation)
"wRx" = (
/obj/structure/flora/bush/sparsegrass/style_random,
/obj/structure/flora/grass/jungle/b/style_random,
@@ -155515,7 +155564,6 @@
},
/area/station/maintenance/department/science)
"xiv" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
},
@@ -193520,11 +193568,11 @@ pmV
qFS
tUf
dOv
-smp
-fCR
+lGG
+wmi
pmV
qwd
-wkR
+pfI
ntL
lND
yhH
@@ -199177,7 +199225,7 @@ rLH
smp
fCR
pmV
-qwd
+kJJ
wkR
aBc
ooG
@@ -258799,8 +258847,8 @@ bna
ijB
czt
wvW
-jBA
-jBA
+gnG
+gnG
nTb
jBA
jBA
@@ -259056,8 +259104,8 @@ fub
ijB
eev
kJl
-cIJ
-cIJ
+mMv
+toI
nUi
cIJ
cIJ
@@ -260341,11 +260389,11 @@ xaB
mIv
kJl
cNP
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
dOr
kJl
tTV
@@ -260597,13 +260645,13 @@ ijB
wgT
wgT
wgT
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
wgT
wgT
tWk
@@ -260854,13 +260902,13 @@ tGJ
sMq
fGO
vQQ
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
sMq
fGO
vQQ
@@ -261111,13 +261159,13 @@ nQo
wgT
wgT
wgT
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
wgT
wgT
wgT
@@ -261368,13 +261416,13 @@ czV
lro
gjO
cvQ
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
cvQ
sXX
jRA
@@ -261626,11 +261674,11 @@ hkb
okW
cvQ
anE
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
anE
cvQ
nAq
@@ -261883,11 +261931,11 @@ olS
glP
cvQ
cvQ
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
cvQ
cvQ
glP
@@ -262140,11 +262188,11 @@ rOL
eiY
cvQ
anE
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
anE
cvQ
lSF
@@ -262396,13 +262444,13 @@ vSF
hrZ
ahD
cvQ
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
cvQ
xvt
lro
@@ -262653,13 +262701,13 @@ erP
wgT
wgT
wgT
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
wgT
wgT
wgT
@@ -262910,13 +262958,13 @@ tGJ
sMq
fGO
vQQ
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
sMq
fGO
vQQ
@@ -263167,13 +263215,13 @@ ijB
wgT
wgT
wgT
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
+txW
+txW
wgT
wgT
wgT
@@ -263425,11 +263473,11 @@ xmr
hFM
kJl
cNP
-rgi
-rgi
-rgi
-rgi
-rgi
+txW
+txW
+txW
+txW
+txW
dOr
kJl
skU
@@ -263666,7 +263714,7 @@ juD
iZk
vqW
jyY
-uYT
+dAP
xGM
mVH
xGM
@@ -264713,8 +264761,8 @@ kJl
cIJ
cIJ
bMx
-cIJ
-cIJ
+lFB
+bPJ
kJl
eev
ijB
@@ -264970,8 +265018,8 @@ psN
xCp
xCp
mxU
-xCp
-xCp
+mAd
+mAd
eaQ
ijB
ijB
@@ -266531,11 +266579,11 @@ dPt
tao
dtb
dtb
-bZE
-wRv
-bZE
-bZE
-bZE
+uty
+tzp
+uty
+uty
+uty
rUO
uQr
wBL
diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm
deleted file mode 100644
index 973b6209da885..0000000000000
--- a/_maps/map_files/NorthStar/north_star.dmm
+++ /dev/null
@@ -1,356444 +0,0 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"aah" = (
-/obj/machinery/rnd/experimentor,
-/turf/open/floor/engine,
-/area/station/science/explab)
-"aak" = (
-/obj/structure/displaycase/labcage,
-/turf/open/floor/engine,
-/area/station/command/heads_quarters/rd)
-"aal" = (
-/turf/closed/wall,
-/area/station/maintenance/floor2/port)
-"aap" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"aat" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"aaw" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"aax" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/chair/comfy,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"aaC" = (
-/obj/structure/grille/broken,
-/obj/effect/decal/cleanable/glass,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/structure/barricade/wooden,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"aaI" = (
-/obj/effect/landmark/start/quartermaster,
-/obj/structure/bed/double/pod,
-/obj/item/bedsheet/qm/double,
-/obj/machinery/requests_console/directional/north{
- department = "Quartermaster's Desk";
- name = "Quartermaster's Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/carpet/orange,
-/area/station/command/heads_quarters/qm)
-"aaM" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"aaN" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"aaO" = (
-/obj/machinery/computer/atmos_alert{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/status_display/evac/directional/west,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"aaP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"aaU" = (
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"aaV" = (
-/obj/structure/curtain,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"abk" = (
-/obj/machinery/camera/directional/east{
- c_tag = "Genetics Desk"
- },
-/obj/effect/turf_decal/siding/purple{
- dir = 4
- },
-/obj/structure/table,
-/obj/machinery/airalarm/directional/east,
-/obj/item/storage/box/gloves{
- pixel_x = 5;
- pixel_y = 1
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"abl" = (
-/obj/effect/mapping_helpers/airlock/access/all/science/rd,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/science{
- name = "Bedroom"
- },
-/turf/open/floor/iron/white/textured_half,
-/area/station/command/heads_quarters/rd)
-"abm" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"abs" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/half,
-/area/station/engineering/atmos/hfr_room)
-"abu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/garbage{
- spawn_loot_count = 3;
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"abx" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/science/xenobiology/hallway)
-"abA" = (
-/obj/machinery/door/airlock/external{
- name = "Atmospherics External Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "HFR"
- },
-/turf/open/floor/plating,
-/area/station/engineering/atmos/project)
-"abP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"abS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"abU" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"acj" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/holopad,
-/obj/effect/landmark/navigate_destination/dockarrival,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/entry)
-"acl" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"acp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"acq" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"act" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"acu" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"acv" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"acC" = (
-/obj/effect/turf_decal/trimline/white/filled/line{
- color = "#065C93";
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/bridge)
-"acE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/barricade,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"acF" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/chair/office/light{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"acJ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/chair/comfy{
- dir = 1
- },
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"acK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"acL" = (
-/obj/structure/table/wood,
-/obj/item/cigarette/cigar/cohiba,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/line,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"adq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/port)
-"adB" = (
-/obj/structure/closet/crate/bin{
- name = "biowaste bin"
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"adD" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/yellow{
- dir = 9
- },
-/obj/item/flashlight/flare/candle,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"adL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/tank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"adT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/brig)
-"aea" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/ladder,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"aeb" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"aeg" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/green/full,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"aeu" = (
-/obj/machinery/power/terminal{
- dir = 1
- },
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"aex" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"aeF" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "coffinbelt";
- name = "Coffin Dispenser";
- pixel_x = 8;
- pixel_y = 8
- },
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"aeL" = (
-/obj/effect/spawner/random/trash/botanical_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"aeS" = (
-/obj/machinery/newscaster/directional/north,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/table/reinforced/rglass,
-/obj/item/storage/box/bodybags,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"aeW" = (
-/obj/structure/table/reinforced,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/clothing/kittyears_or_rabbitears,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard/aft)
-"aeX" = (
-/obj/machinery/computer/robotics,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"afa" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"afb" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"afe" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/construction)
-"afg" = (
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 4
- },
-/obj/item/stack/sheet/iron/five{
- pixel_x = -6
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/structure/frame/machine,
-/obj/item/stack/sheet/glass{
- amount = 12
- },
-/obj/item/stack/cable_coil/five,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/corner{
- dir = 4
- },
-/area/station/engineering/lobby)
-"afs" = (
-/obj/machinery/portable_atmospherics/canister/plasma,
-/obj/effect/turf_decal/trimline/purple,
-/turf/open/floor/engine/plasma,
-/area/station/engineering/atmos)
-"afv" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"afz" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/computer/rdconsole,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"afD" = (
-/obj/machinery/door/window/brigdoor/security/cell/left/directional/south{
- id = "cell-2";
- name = "2nd Floor Prisoner Tube"
- },
-/obj/machinery/disposal/delivery_chute{
- name = "prisoner transport"
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"afE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/small/red/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"agi" = (
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"agl" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"agn" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"agp" = (
-/obj/structure/disposalpipe/segment{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"ags" = (
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"agt" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"agK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"agU" = (
-/obj/structure/chair/pew/left{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"agV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"ahd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/duct,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"aho" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 9
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"aht" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"ahG" = (
-/obj/machinery/modular_computer/preset/research{
- dir = 4
- },
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"ahO" = (
-/obj/machinery/vending/clothing,
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"ahS" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"ahT" = (
-/obj/machinery/camera/directional/west,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"ahU" = (
-/obj/machinery/door/airlock/hatch{
- name = "Escape Pods"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"aib" = (
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"aic" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/girder,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"aih" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/cafeteria,
-/area/station/security/prison)
-"aik" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/machinery/meter/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"aim" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/chair/comfy/black{
- dir = 1
- },
-/obj/structure/sign/departments/restroom/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/fore)
-"aip" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"air" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/green/end{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"ait" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/item/pillow,
-/obj/effect/turf_decal/box,
-/obj/machinery/flasher/directional/west{
- id = "drunktank"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"aiw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"aiF" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/white/arrow_ccw{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"aiL" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"aiN" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/circuitboard/aicore,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"aiO" = (
-/obj/machinery/door/airlock/medical{
- name = "Operating Room X"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/surgery,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"aiR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"aiS" = (
-/obj/structure/bed/double,
-/obj/machinery/light_switch/directional/north,
-/obj/effect/landmark/start/assistant,
-/obj/item/bedsheet/black/double,
-/obj/structure/sign/poster/random/directional/east,
-/turf/open/floor/carpet/neon/simple/white,
-/area/station/commons/dorms/room3)
-"ajb" = (
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"aje" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"ajg" = (
-/obj/item/stack/sheet/iron/five,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/supermatter/room)
-"ajp" = (
-/obj/item/rack_parts,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"ajs" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"ajt" = (
-/obj/item/stack/rods/fifty,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/delivery,
-/obj/structure/table,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"ajB" = (
-/obj/effect/spawner/random/trash/mopbucket,
-/obj/effect/spawner/random/trash/soap,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"ajE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sink/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"ajX" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"akh" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"aki" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"akk" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/disposaloutlet{
- dir = 1
- },
-/obj/structure/disposalpipe/trunk,
-/turf/open/space/basic,
-/area/space/nearstation)
-"akr" = (
-/obj/machinery/button/door/directional/south{
- id = "captain_privacy";
- name = "Privacy Shutters"
- },
-/obj/machinery/keycard_auth/wall_mounted/directional/east,
-/obj/structure/table/wood,
-/obj/item/book/manual/wiki/security_space_law,
-/obj/item/hand_tele,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"akt" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/structure/closet/secure_closet/brig{
- name = "Prisoner Locker"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"akD" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"akI" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"akU" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/vending/cola/pwr_game,
-/obj/structure/sign/poster/contraband/pwr_game/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/break_room)
-"ala" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"alf" = (
-/obj/effect/turf_decal/tile/green/anticorner{
- dir = 1
- },
-/obj/machinery/vending/sovietsoda,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"alj" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"aln" = (
-/obj/effect/turf_decal/trimline/white/arrow_ccw,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/secondary/entry)
-"alr" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"alu" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/science/xenobiology)
-"alK" = (
-/obj/machinery/modular_computer/preset/id{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"alL" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"amg" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/machinery/camera/autoname/directional/south,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/maintenance/solars/starboard/fore)
-"ami" = (
-/obj/effect/turf_decal/trimline/brown/arrow_ccw{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/cargo/lobby)
-"amm" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/brig)
-"ams" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/atmospherics/components/binary/pump/on{
- name = "N2 to Airmix"
- },
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"amt" = (
-/turf/closed/wall,
-/area/station/service/library/lounge)
-"amK" = (
-/obj/machinery/door/poddoor/shutters{
- id = "aux_base_shutters";
- name = "Auxiliary Base Shutters"
- },
-/turf/open/floor/plating,
-/area/station/construction/mining/aux_base)
-"amM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/blue,
-/obj/machinery/medical_kiosk,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"anb" = (
-/obj/machinery/vending/wardrobe/hydro_wardrobe,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"anf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/carpet/blue,
-/area/station/cargo/miningdock)
-"anj" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"ann" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/stairs{
- dir = 8
- },
-/area/station/cargo/storage)
-"ano" = (
-/obj/item/shard/plasma,
-/obj/structure/foamedmetal,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"anq" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/edge,
-/area/station/engineering/atmos)
-"anr" = (
-/obj/machinery/disposal/bin,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"anA" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/flashlight/lamp,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"anF" = (
-/obj/structure/bed,
-/obj/item/bedsheet/cult,
-/obj/structure/sign/painting{
- pixel_y = 32
- },
-/obj/machinery/light_switch/directional/south,
-/obj/effect/landmark/start/librarian,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"anH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"anK" = (
-/obj/machinery/atmospherics/components/trinary/mixer/flipped{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/storage)
-"anN" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"anO" = (
-/obj/effect/spawner/random/contraband/landmine,
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"anU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"anW" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"aof" = (
-/obj/machinery/suit_storage_unit/radsuit,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/pumproom)
-"aog" = (
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/medical/pharmacy)
-"aoh" = (
-/obj/structure/chair/plastic,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"aom" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"aoo" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"aoq" = (
-/obj/effect/mapping_helpers/burnt_floor,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"aos" = (
-/obj/effect/turf_decal/box/white{
- color = "#9FED58"
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"aow" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/landmark/start/scientist,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"aoG" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/chair/office/light{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"aoM" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"aoW" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/structure/hedge,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"ape" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"apg" = (
-/obj/structure/closet/secure_closet/security/sec,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"apk" = (
-/obj/structure/sign/poster/contraband/random/directional/east,
-/obj/structure/chair/stool/bar/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit)
-"apl" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"apm" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/effect/turf_decal/trimline/red/arrow_cw{
- dir = 1
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"apq" = (
-/obj/machinery/camera/directional/west{
- c_tag = "Detective's Office"
- },
-/obj/machinery/airalarm/directional/west,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"apt" = (
-/obj/structure/table/reinforced,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"apw" = (
-/obj/effect/turf_decal/stripes,
-/obj/structure/sign/departments/psychology/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"apy" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"apC" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"apM" = (
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"apR" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"apS" = (
-/obj/structure/mirror/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/dorms/room1)
-"apT" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 9
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"apX" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"aqd" = (
-/obj/structure/spider/stickyweb,
-/obj/structure/table,
-/obj/item/clothing/mask/facehugger/toy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"aqm" = (
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/railing,
-/obj/effect/turf_decal/box/red,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"aqu" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"aqx" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"aqz" = (
-/obj/structure/table,
-/obj/item/storage/box/beakers{
- pixel_x = 2;
- pixel_y = 2
- },
-/obj/item/storage/box/syringes,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"aqP" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/cargo/sorting)
-"aqQ" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/science/robotics/lab)
-"aqR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"aqW" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"arq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sink/kitchen/directional/east,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"art" = (
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/machinery/door/poddoor{
- id = "Secure Storage";
- name = "Secure Storage"
- },
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"arE" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"arG" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"arI" = (
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"arM" = (
-/obj/effect/landmark/start/ai/secondary,
-/obj/item/radio/intercom/directional/north{
- freerange = 1;
- listening = 0;
- name = "Custom Channel";
- pixel_x = 8
- },
-/obj/item/radio/intercom/directional/east{
- freerange = 1;
- listening = 0;
- name = "Common Channel"
- },
-/obj/item/radio/intercom/directional/south{
- freerange = 1;
- frequency = 1447;
- listening = 0;
- name = "Private Channel";
- pixel_x = 8
- },
-/turf/open/floor/circuit/green,
-/area/station/ai_monitored/turret_protected/ai)
-"asb" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/mirror/directional/north,
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/structure/sink/directional/south,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/captain/private)
-"asf" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"ask" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/camera/directional/north{
- c_tag = "Medbay - Treatment Center";
- name = "medbay camera";
- network = list("ss13","medbay")
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"asl" = (
-/obj/machinery/door/window/left/directional/west{
- name = "Cargo Conveyor Access";
- req_access = list("cargo")
- },
-/obj/effect/turf_decal/siding/thinplating_new,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"ast" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit)
-"asw" = (
-/obj/machinery/telecomms/server/presets/science,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"asF" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"asL" = (
-/turf/closed/wall/r_wall,
-/area/station/construction)
-"asS" = (
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"asU" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"asV" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/obj/structure/cable,
-/obj/machinery/door/airlock/silver/glass{
- name = "Kitchen"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/kitchen)
-"asZ" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"ata" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"ate" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"ati" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/science/glass{
- name = "Science East"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"ato" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/rack_parts,
-/obj/item/stack/cable_coil,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"atv" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"atA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"atB" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/sign/warning/vacuum/external,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"atK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/maintenance/floor1/starboard/aft)
-"atL" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"atP" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "brig-entrance-aft"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/security/glass{
- id_tag = "outerbrig";
- name = "Brig Aft Entrance"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/security/entrance,
-/obj/machinery/scanner_gate/preset_guns,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"atT" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/flora/bush/flowers_br/style_random,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/commons/storage/primary)
-"atU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"atX" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"aua" = (
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"auc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"aug" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/cargo/miningdock)
-"aut" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/turf_decal/delivery/red,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"auv" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/outlet_injector/on{
- dir = 8;
- initialize_directions = 8;
- volume_rate = 200
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"aux" = (
-/obj/structure/lattice/catwalk,
-/turf/open/space/basic,
-/area/space/nearstation)
-"auD" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor3/aft)
-"auF" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/fax{
- fax_name = "Research Division";
- name = "Research Division Fax Machine";
- pixel_x = 1
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"auJ" = (
-/obj/item/radio/intercom/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/checkpoint)
-"auK" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"auN" = (
-/obj/machinery/door/airlock{
- id_tag = "dorms_4_bolts";
- name = "Standard Dorm 4"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"auO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"auQ" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 6
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"auU" = (
-/obj/structure/hedge,
-/turf/open/floor/wood/tile,
-/area/station/science/lobby)
-"avf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"avg" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{
- dir = 4
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"avi" = (
-/obj/structure/hedge,
-/turf/open/floor/iron/white/corner{
- dir = 8
- },
-/area/station/science/lobby)
-"avk" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/machinery/button/door/directional/west{
- id = "library2";
- name = "Library Shutters"
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"avl" = (
-/obj/structure/chair/sofa/bench,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"avm" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"avp" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"avt" = (
-/obj/structure/chair/comfy/brown{
- dir = 4
- },
-/obj/item/toy/plush/moth{
- color = "#8e2e87";
- desc = "A strange moth plushie named Edict, it's dyed purple.";
- name = "Edict"
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"avH" = (
-/obj/structure/table/glass,
-/obj/item/experi_scanner,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"avM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"avP" = (
-/obj/effect/spawner/random/vending/colavend,
-/turf/open/floor/iron,
-/area/station/commons/fitness)
-"avX" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/table/reinforced/rglass,
-/obj/item/surgery_tray/full/morgue,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"awb" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"awf" = (
-/obj/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"awn" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/status_display/ai/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"awo" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"awt" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/kitchen/diner)
-"awA" = (
-/obj/structure/table/reinforced,
-/obj/item/screwdriver,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"awD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"awH" = (
-/obj/effect/decal/cleanable/glass,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"awR" = (
-/obj/structure/flora/bush/flowers_br/style_random,
-/obj/machinery/light/directional/west,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"awU" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"awV" = (
-/obj/structure/sink/kitchen/directional/east,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"axe" = (
-/obj/machinery/firealarm/directional/west,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor1/fore)
-"axf" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"axF" = (
-/obj/machinery/gateway/centerstation,
-/turf/open/floor/iron/large,
-/area/station/command/gateway)
-"axG" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"axK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/hatch{
- name = "Emergency Ladder Access"
- },
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"axP" = (
-/obj/structure/closet/crate/large,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"axQ" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/chair/comfy/brown{
- dir = 4
- },
-/obj/effect/landmark/start/psychologist,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"axR" = (
-/obj/structure/chair/stool/bar/directional/north,
-/obj/effect/landmark/start/scientist,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"axS" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"axX" = (
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"axY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/plate_press,
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/machinery/camera/directional/east{
- c_tag = "Prison Workshop";
- network = list("ss13","prison")
- },
-/turf/open/floor/iron,
-/area/station/security/prison/work)
-"ayc" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"ayi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"ayl" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"ayv" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/arrows{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"ayB" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible,
-/turf/open/space/basic,
-/area/space/nearstation)
-"ayJ" = (
-/obj/structure/sign/warning/docking,
-/turf/closed/wall/r_wall,
-/area/station/security/execution/transfer)
-"ayU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"ayW" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/corner,
-/obj/effect/turf_decal/stripes/red/corner{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/corner{
- dir = 1
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"aze" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"azu" = (
-/obj/structure/table/wood,
-/obj/item/gun/ballistic/shotgun/doublebarrel,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/newscaster/directional/north,
-/obj/item/ammo_casing/shotgun/dart,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"azI" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/storage/primary)
-"azK" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"azW" = (
-/obj/structure/bookcase/random/religion,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"aAj" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"aAx" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"aAB" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"aAE" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/mob/living/basic/cow,
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"aAK" = (
-/obj/structure/closet/firecloset,
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"aAM" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/mapping_helpers/airlock/access/any/medical/morgue,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"aAZ" = (
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"aBa" = (
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"aBd" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/aft)
-"aBh" = (
-/obj/machinery/computer/atmos_control/nocontrol/incinerator{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Incinerator Camera North";
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/disposal/incinerator)
-"aBo" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"aBK" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/virology)
-"aBR" = (
-/obj/item/wrench,
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"aBS" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/science/robotics/lab)
-"aBV" = (
-/obj/effect/turf_decal/trimline/blue/end,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/machinery/door/airlock/command/glass{
- name = "Queue Access"
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "hopline";
- name = "Queue Shutters"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"aCd" = (
-/obj/effect/turf_decal/siding/white,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"aCl" = (
-/obj/structure/table/reinforced,
-/obj/item/book/manual/wiki/chemistry,
-/obj/item/hand_labeler,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"aCq" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"aCu" = (
-/obj/effect/spawner/random/trash/janitor_supplies,
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"aCw" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"aCx" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"aCz" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/orange/visible,
-/obj/effect/turf_decal/tile/yellow/half,
-/turf/open/floor/iron/edge,
-/area/station/engineering/atmos)
-"aCB" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "brig-entrance-aft"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/security/glass{
- id_tag = "outerbrig";
- name = "Brig Aft Entrance"
- },
-/obj/effect/mapping_helpers/airlock/access/all/security/entrance,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"aCG" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"aDf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"aDi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"aDk" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"aDl" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"aDn" = (
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/access/any/science/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard/fore)
-"aDp" = (
-/obj/structure/chair/comfy/black,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"aDq" = (
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/aft)
-"aDx" = (
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"aDC" = (
-/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible/layer2,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"aDD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"aDE" = (
-/obj/structure/table/reinforced,
-/obj/item/radio{
- pixel_x = 5;
- pixel_y = 5
- },
-/obj/item/radio{
- pixel_x = -5;
- pixel_y = 5
- },
-/obj/item/radio,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"aDM" = (
-/obj/item/bot_assembly/medbot,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"aDN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"aDQ" = (
-/obj/structure/rack,
-/obj/item/wrench,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"aEh" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"aEj" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"aEm" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"aEq" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Interrogation Monitoring"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"aEH" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit)
-"aEJ" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 8
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"aEP" = (
-/obj/structure/chair/sofa/corp/left,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"aES" = (
-/obj/structure/table/wood,
-/obj/effect/spawner/random/food_or_drink/seed,
-/obj/effect/spawner/random/food_or_drink/seed,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"aEW" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"aFg" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"aFh" = (
-/obj/item/radio/intercom/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"aFj" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"aFm" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/machinery/airalarm/directional/south,
-/obj/structure/table/reinforced,
-/obj/item/gun/syringe,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"aFs" = (
-/obj/structure/filingcabinet/chestdrawer,
-/turf/open/floor/iron/large,
-/area/station/science/robotics/lab)
-"aFB" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"aFJ" = (
-/obj/machinery/button/door/directional/north{
- id = "sm_bolt";
- name = "SM Chamber Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"aFM" = (
-/obj/machinery/light/directional/east,
-/obj/machinery/disposal/bin/tagger,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/security/office)
-"aFQ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/delivery,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"aFY" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"aGm" = (
-/obj/structure/chair/comfy/black{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"aGr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/reinforced/rglass,
-/obj/item/clothing/glasses/hud/health,
-/obj/item/clothing/glasses/hud/health{
- pixel_y = 3
- },
-/obj/item/clothing/glasses/hud/health{
- pixel_y = 6
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"aGw" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/security/office)
-"aGz" = (
-/obj/structure/table/wood,
-/obj/item/clipboard,
-/obj/item/toy/figure/qm,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/qm)
-"aGE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"aGH" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"aGI" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"aGJ" = (
-/obj/structure/table,
-/obj/item/stack/sheet/iron/twenty,
-/obj/effect/decal/cleanable/cobweb,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"aGK" = (
-/obj/structure/railing{
- dir = 9
- },
-/obj/structure/chair/comfy/brown,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"aGQ" = (
-/turf/open/openspace,
-/area/station/maintenance/floor3/port)
-"aGW" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/structure/barricade/wooden/crude,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"aHa" = (
-/obj/structure/chair/stool/bar/directional/north,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"aHb" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"aHk" = (
-/turf/closed/wall,
-/area/station/medical/medbay/lobby)
-"aHn" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/construction)
-"aHo" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"aHs" = (
-/obj/structure/table,
-/obj/item/storage/belt/utility/full,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"aHt" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"aHA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/small/red/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"aHC" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/work)
-"aHK" = (
-/obj/machinery/light/directional/east,
-/obj/structure/closet/secure_closet/medical2,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"aHM" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/closet_empty/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"aHP" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/brigdoor/right/directional/north{
- name = "Security Desk";
- req_access = list("security")
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"aHR" = (
-/obj/effect/landmark/start/depsec/science,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"aHV" = (
-/obj/structure/chair/stool/bar/directional/west,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"aHW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"aHX" = (
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/water/beach{
- desc = "Refreshing!";
- name = "treated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"aHY" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/vending/wardrobe/chem_wardrobe,
-/obj/structure/sign/poster/official/plasma_effects/directional/west,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"aId" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"aIe" = (
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/openspace,
-/area/station/medical/pharmacy)
-"aIs" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"aIB" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/south,
-/obj/machinery/power/energy_accumulator/grounding_rod/anchored,
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer4,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"aII" = (
-/obj/machinery/firealarm/directional/east,
-/obj/structure/bodycontainer/morgue{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"aIJ" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/aft)
-"aIU" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"aIV" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"aIY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"aJb" = (
-/obj/effect/mapping_helpers/mail_sorting/service/chapel,
-/obj/effect/mapping_helpers/mail_sorting/service/dormitories,
-/obj/effect/mapping_helpers/mail_sorting/service/hop_office,
-/obj/effect/mapping_helpers/mail_sorting/service/hydroponics,
-/obj/effect/mapping_helpers/mail_sorting/service/janitor_closet,
-/obj/effect/mapping_helpers/mail_sorting/service/kitchen,
-/obj/effect/mapping_helpers/mail_sorting/service/law_office,
-/obj/effect/mapping_helpers/mail_sorting/service/library,
-/obj/effect/mapping_helpers/mail_sorting/service/theater,
-/obj/structure/disposalpipe/sorting/mail{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"aJk" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"aJD" = (
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"aJE" = (
-/obj/effect/turf_decal/delivery,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"aJT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"aJX" = (
-/obj/machinery/light/red/dim/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"aJZ" = (
-/obj/item/instrument/banjo,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"aKc" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"aKi" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/turf/closed/wall/r_wall,
-/area/station/maintenance/disposal/incinerator)
-"aKq" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/commons/storage/primary)
-"aKr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"aKt" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"aKx" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor3/starboard/aft)
-"aKA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"aKC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"aKF" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"aKQ" = (
-/turf/open/floor/iron/textured_half,
-/area/station/cargo/sorting)
-"aKZ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/machinery/computer/atmos_control/plasma_tank,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"aLb" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"aLe" = (
-/obj/item/kirbyplants/random,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"aLh" = (
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4,
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"aLv" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"aLz" = (
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 4
- },
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"aLA" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/camera/directional/north{
- c_tag = "Jim Norton's Quebecois Coffee"
- },
-/obj/structure/noticeboard/directional/north,
-/obj/item/reagent_containers/condiment/sugar{
- pixel_y = 4
- },
-/obj/item/storage/pill_bottle/happinesspsych{
- pixel_x = -4;
- pixel_y = -1
- },
-/obj/item/storage/box/coffeepack,
-/obj/item/storage/box/coffeepack/robusta,
-/obj/item/reagent_containers/condiment/soymilk,
-/obj/item/reagent_containers/condiment/milk,
-/obj/structure/closet/secure_closet/freezer/empty/open,
-/obj/item/storage/box/coffeepack,
-/obj/item/storage/box/coffeepack,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"aLC" = (
-/obj/machinery/light/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"aLO" = (
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor2/fore)
-"aLP" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/fore)
-"aLU" = (
-/obj/machinery/disposal/bin,
-/obj/structure/railing{
- dir = 6
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"aLZ" = (
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"aMo" = (
-/obj/machinery/door/window/right/directional/south{
- name = "Gateway Access";
- req_access = list("gateway")
- },
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/corner,
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 8
- },
-/obj/effect/turf_decal/arrows/white{
- dir = 1
- },
-/turf/open/floor/iron/large,
-/area/station/command/gateway)
-"aMA" = (
-/obj/effect/decal/cleanable/ash,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"aMJ" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"aNm" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"aNs" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor4/starboard/fore)
-"aNz" = (
-/obj/machinery/light_switch/directional/west,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"aNQ" = (
-/obj/structure/transit_tube/station/dispenser{
- dir = 4
- },
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"aNV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 10
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"aOa" = (
-/obj/structure/chair/comfy/shuttle,
-/turf/open/floor/mineral/plastitanium,
-/area/station/maintenance/floor2/starboard/aft)
-"aOp" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"aOt" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"aOw" = (
-/obj/machinery/light/small/directional/north,
-/mob/living/basic/bot/cleanbot,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"aOx" = (
-/obj/machinery/griddle,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"aOD" = (
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/cargo/miningoffice)
-"aOI" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{
- dir = 4
- },
-/obj/machinery/portable_atmospherics/scrubber,
-/obj/structure/railing,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/floor1/aft)
-"aOJ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"aOV" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"aPc" = (
-/obj/structure/stairs/north,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"aPd" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/cable,
-/turf/open/floor/circuit/green,
-/area/station/science/robotics/mechbay)
-"aPf" = (
-/obj/effect/turf_decal/siding/white,
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"aPg" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/storage/primary)
-"aPh" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/machinery/camera/directional/east{
- c_tag = "Interrogation room";
- network = list("interrogation")
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"aPu" = (
-/obj/effect/turf_decal/stripes/end,
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"aPA" = (
-/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"aPE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"aPH" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"aPM" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"aQk" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/table/wood,
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"aQt" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 5
- },
-/obj/machinery/light/small/directional/west,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"aQA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/telecomms,
-/area/station/tcommsat/server)
-"aQC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"aQJ" = (
-/obj/structure/table,
-/obj/item/clothing/gloves/color/black,
-/obj/item/clothing/gloves/color/black,
-/obj/item/clothing/glasses/meson/engine/tray,
-/obj/item/clothing/glasses/meson/engine/tray,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"aQK" = (
-/turf/closed/wall,
-/area/station/cargo/drone_bay)
-"aQL" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/security/brig)
-"aQM" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/table/reinforced,
-/obj/machinery/recharger,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"aQR" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"aQS" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/computer/records/security{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"aQU" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"aQV" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 1
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"aQW" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/yellow{
- dir = 1
- },
-/obj/item/flashlight/lamp,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"aQZ" = (
-/obj/machinery/telecomms/server/presets/command,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"aRd" = (
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"aRz" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/effect/turf_decal/bot_white{
- color = "#74b2d3"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"aRF" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/tank/plasma,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/disposal/incinerator)
-"aRI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"aRK" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"aRM" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"aRP" = (
-/obj/machinery/power/turbine/core_rotor,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"aRS" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"aRU" = (
-/turf/closed/wall,
-/area/station/security/mechbay)
-"aRX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/wood/end{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/artgallery)
-"aRY" = (
-/obj/structure/cable,
-/obj/machinery/power/solar,
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/port/aft)
-"aSb" = (
-/obj/structure/chair/stool/bar/directional/north,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"aSg" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"aSj" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/water/no_planet_atmos{
- desc = "Filthy.";
- name = "untreated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"aSq" = (
-/obj/machinery/rnd/production/protolathe/department/science,
-/obj/effect/turf_decal/bot,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"aSs" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"aSu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"aSB" = (
-/obj/effect/spawner/random/trash/cigbutt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"aSI" = (
-/obj/machinery/shower/directional/west,
-/obj/structure/fluff/shower_drain,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"aSK" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"aSL" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"aSQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"aSU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"aSX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall/r_wall,
-/area/station/science/ordnance/burnchamber)
-"aTc" = (
-/obj/effect/turf_decal/siding/white,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"aTh" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/landmark/start/roboticist,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"aTi" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/decoration/carpet,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"aTj" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 8
- },
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"aTl" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"aTJ" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/science/robotics/lab)
-"aTO" = (
-/obj/machinery/power/shuttle_engine/propulsion/burst{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"aTU" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"aUb" = (
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"aUe" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"aUh" = (
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"aUj" = (
-/obj/effect/turf_decal/siding/wideplating_new/end{
- dir = 4
- },
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"aUl" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"aUG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/item/reagent_containers/pill/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"aUH" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"aUJ" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"aUR" = (
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"aUT" = (
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/spawner/random/structure/crate_abandoned,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"aUV" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"aVc" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/machinery/light/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"aVk" = (
-/obj/machinery/door/airlock/freezer{
- name = "Rec Room Showers"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"aVq" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"aVr" = (
-/obj/structure/cable,
-/obj/machinery/power/solar_control{
- dir = 1;
- id = "portbowsolar";
- name = "Port Bow Solar Control"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"aVs" = (
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard)
-"aVD" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"aVM" = (
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "radshutsouth"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"aVX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"aWa" = (
-/obj/item/kirbyplants/random,
-/obj/structure/sign/directions/evac/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"aWc" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"aWd" = (
-/obj/effect/landmark/event_spawn,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"aWe" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"aWf" = (
-/obj/item/experi_scanner,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"aWg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"aWj" = (
-/obj/structure/table/wood,
-/obj/machinery/chem_dispenser/drinks/beer{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"aWq" = (
-/obj/structure/table/optable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"aWr" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"aWv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"aWw" = (
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"aWy" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"aWB" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 6
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"aWE" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"aWH" = (
-/obj/machinery/door/airlock/grunge{
- name = "Mech Bay"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/science/robotics/mechbay)
-"aWJ" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"aWO" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 9
- },
-/obj/structure/railing/corner,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"aWR" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/recharge_station,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/mechbay)
-"aWV" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/food_or_drink/condiment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"aWZ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/aft)
-"aXh" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/dim/directional/west,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"aXj" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"aXk" = (
-/obj/structure/table/wood,
-/obj/item/plate/large{
- pixel_y = 2
- },
-/obj/item/food/pizza/dank{
- pixel_y = 6
- },
-/obj/structure/sign/poster/contraband/pwr_game/directional/east,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/carpet/purple,
-/area/station/maintenance/floor1/port/aft)
-"aXq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/science/lobby)
-"aXC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"aXH" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"aXN" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"aXO" = (
-/obj/item/trash/ready_donk,
-/obj/item/trash/candle,
-/obj/item/trash/can/food/envirochow{
- pixel_x = -7
- },
-/obj/item/trash/boritos/red{
- pixel_x = 4;
- pixel_y = 8
- },
-/obj/effect/decal/cleanable/garbage,
-/obj/effect/decal/cleanable/food/pie_smudge,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"aXR" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"aXW" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"aYa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"aYb" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"aYd" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"aYe" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"aYl" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/vending/wallmed/directional/south,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"aYq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"aYs" = (
-/obj/machinery/power/shieldwallgen/xenobiologyaccess,
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"aYv" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"aYy" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/shutters{
- dir = 8;
- id = "mechbay";
- name = "Mech Bay Shutters"
- },
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/science/robotics/mechbay)
-"aYA" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor2/fore)
-"aYB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/obj/machinery/light/small/directional/north,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"aYJ" = (
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"aYS" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"aYU" = (
-/obj/structure/disposalpipe/sorting/mail/flip{
- dir = 8
- },
-/obj/effect/mapping_helpers/mail_sorting/medbay/chemistry,
-/obj/effect/mapping_helpers/mail_sorting/medbay/cmo_office,
-/obj/effect/mapping_helpers/mail_sorting/medbay/general,
-/obj/effect/mapping_helpers/mail_sorting/medbay/virology,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"aZd" = (
-/obj/machinery/reagentgrinder,
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"aZl" = (
-/obj/structure/sign/poster/official/do_not_question/directional/south,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"aZm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/grown/bananapeel,
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"aZn" = (
-/turf/open/floor/circuit/green,
-/area/station/science/robotics/mechbay)
-"aZp" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin/carbon,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = 32
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"aZq" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"aZs" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"aZw" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/fore)
-"aZA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"aZC" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"aZF" = (
-/obj/structure/table/wood,
-/obj/item/toy/crayon/spraycan{
- pixel_x = -4
- },
-/obj/item/toy/crayon/spraycan,
-/obj/item/toy/crayon/spraycan{
- pixel_x = 4
- },
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"aZI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"aZN" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"aZW" = (
-/turf/closed/wall,
-/area/station/medical/treatment_center)
-"aZX" = (
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor4/fore)
-"baa" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"bag" = (
-/obj/structure/table,
-/obj/item/paper/fluff/holodeck/disclaimer,
-/obj/item/storage/medkit/regular,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"bam" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor2/fore)
-"bap" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/departments/chemistry/pharmacy/directional/south,
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/stripes/white/corner,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"bau" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"baA" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth_edge{
- dir = 4
- },
-/area/station/science/robotics/mechbay)
-"bbb" = (
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"bbo" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/commons/storage/primary)
-"bbs" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet,
-/area/station/service/abandoned_gambling_den)
-"bbv" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bbE" = (
-/obj/machinery/holopad,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/circuit/green,
-/area/station/science/robotics/mechbay)
-"bbI" = (
-/obj/structure/stairs/north,
-/obj/structure/sign/departments/science/alt/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/aft)
-"bbK" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Robotics Lab"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/science/robotics/lab)
-"bbL" = (
-/obj/structure/bonfire/prelit,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"bcb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"bcr" = (
-/obj/item/shard,
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"bcx" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 1
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"bcC" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"bcD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"bcH" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/science/robotics/lab)
-"bcK" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"bcR" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/storage/primary)
-"bcZ" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"bde" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/wood/parquet,
-/area/station/commons/dorms/room2)
-"bdo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/contraband/random/directional/east,
-/obj/machinery/microwave{
- pixel_y = 6
- },
-/obj/structure/table,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"bdx" = (
-/obj/structure/railing/corner,
-/obj/structure/chair/stool/bar/directional/east,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"bdC" = (
-/obj/structure/chair/bronze,
-/turf/open/floor/bronze/filled,
-/area/station/maintenance/floor1/starboard)
-"bdD" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/corner,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"bdN" = (
-/obj/structure/table,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/pipe_dispenser,
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"bdR" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"beh" = (
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"bej" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"bel" = (
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"bep" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"bet" = (
-/obj/machinery/vending/modularpc,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor2/aft)
-"bew" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"bex" = (
-/obj/machinery/door/airlock{
- name = "Unisex Restrooms"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"beB" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 1
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"beE" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"beG" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"beM" = (
-/obj/machinery/vending/drugs,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/medbay/central)
-"bfc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"bff" = (
-/obj/effect/turf_decal/siding/green{
- dir = 4
- },
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"bfh" = (
-/obj/structure/chair/stool/bar/directional/south,
-/obj/effect/landmark/start/scientist,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"bfj" = (
-/turf/open/openspace,
-/area/station/service/library)
-"bfk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"bfl" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/reagent_dispensers/fueltank,
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/mechbay)
-"bfs" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/item/assembly/prox_sensor{
- pixel_x = -6;
- pixel_y = -8
- },
-/obj/item/assembly/prox_sensor{
- pixel_x = -7
- },
-/obj/item/assembly/prox_sensor{
- pixel_x = -8;
- pixel_y = 6
- },
-/obj/item/healthanalyzer{
- pixel_x = 3;
- pixel_y = 8
- },
-/obj/item/healthanalyzer{
- pixel_x = 4
- },
-/obj/item/healthanalyzer{
- pixel_x = 5;
- pixel_y = -6
- },
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"bfx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"bfC" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"bfM" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/requests_console/directional/west{
- department = "Chief Medical Officer's Desk";
- name = "Chief Medical Officer's Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/iron/stairs/left{
- dir = 1
- },
-/area/station/command/heads_quarters/cmo)
-"bfT" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/command{
- name = "Teleporter Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/teleporter,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"bfW" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"bfX" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"bgg" = (
-/obj/machinery/door/airlock/medical{
- name = "Safe Internment"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"bgr" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_corner,
-/area/station/maintenance/floor1/starboard/aft)
-"bgs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"bgw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/reagentgrinder,
-/obj/structure/table,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"bgz" = (
-/obj/machinery/mech_bay_recharge_port{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/mechbay)
-"bgA" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/emitter/welded,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"bgH" = (
-/obj/structure/rack,
-/obj/item/toy/plush/plasmamanplushie{
- desc = "A stuffed toy that resembles your plasma coworkers. It is cute despite itself.";
- name = "Nitrous II"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"bgI" = (
-/obj/machinery/button/elevator/directional/south{
- id = "com_vator"
- },
-/obj/machinery/lift_indicator/directional/south{
- linked_elevator_id = "com_vator";
- pixel_y = -36
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor4/aft)
-"bgO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"bgQ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/structure/reflector/double,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"bhb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"bhh" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"bho" = (
-/obj/item/statuebust,
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"bhp" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/corner,
-/area/station/engineering/lobby)
-"bhz" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"bhF" = (
-/obj/machinery/chem_master,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"bhN" = (
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-2";
- location = "3-1"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"bhW" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "disposals"
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/machinery/door/poddoor/shutters{
- id = "disposals-launch";
- name = "Disposals Launch"
- },
-/obj/structure/plasticflaps,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"bhZ" = (
-/obj/structure/table/reinforced/rglass,
-/obj/item/clipboard,
-/obj/item/toy/figure/roboticist,
-/turf/open/floor/iron/large,
-/area/station/science/robotics/lab)
-"bid" = (
-/obj/machinery/computer/mech_bay_power_console,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"bie" = (
-/obj/structure/table,
-/obj/machinery/door/window/left/directional/west,
-/obj/machinery/door/poddoor/shutters{
- dir = 4;
- id = "visitation";
- name = "Visitation Shutters"
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"bif" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"bij" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/construction)
-"bin" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"bir" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 6
- },
-/obj/effect/spawner/random/engineering/canister,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"biz" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/airlock/medical{
- name = "Paramedic Dispatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/paramedic)
-"biC" = (
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"biD" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/machinery/button/door/directional/north{
- id = "roboprivacy";
- name = "Robotics Privacy Control";
- pixel_x = -24;
- req_access = list("robotics")
- },
-/obj/machinery/light_switch/directional/west{
- pixel_x = -52
- },
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"biH" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/machinery/power/emitter/welded{
- dir = 1
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"biJ" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/misc/sandy_dirt,
-/area/station/science/cytology)
-"biM" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/arrows{
- dir = 8
- },
-/obj/effect/turf_decal/arrows{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"biO" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"biR" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"biS" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"biV" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"biW" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/science/auxlab)
-"biZ" = (
-/obj/machinery/microwave/engineering/cell_included,
-/obj/structure/table/reinforced/rglass,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/break_room)
-"bja" = (
-/obj/machinery/vending/cigarette,
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/light/directional/west,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"bjb" = (
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"bje" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"bjf" = (
-/obj/machinery/light/directional/east,
-/obj/effect/landmark/start/hangover,
-/obj/structure/flora/coconuts,
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"bjg" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"bjw" = (
-/obj/structure/table,
-/obj/machinery/computer/libraryconsole/bookmanagement,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"bjz" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"bjC" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/lattice/catwalk,
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/fore)
-"bjF" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"bjI" = (
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"bjK" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/chair/sofa/middle/brown,
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"bjP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/obj/structure/ladder,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"bjT" = (
-/obj/machinery/computer{
- desc = "Barely powered, it's not working well.";
- name = "Flickering Nav Console"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/mineral/plastitanium/red,
-/area/station/maintenance/floor4/starboard/aft)
-"bjZ" = (
-/obj/structure/chair/comfy/carp{
- dir = 8
- },
-/obj/effect/landmark/start/research_director,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"bkd" = (
-/obj/structure/table/glass,
-/obj/item/hand_tele,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"bkh" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"bkj" = (
-/obj/machinery/biogenerator,
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/siding/green{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"bks" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"bku" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white/corner,
-/obj/structure/railing/corner,
-/obj/machinery/vending/wardrobe/robo_wardrobe,
-/turf/open/floor/iron/white/side{
- dir = 10
- },
-/area/station/science/robotics/lab)
-"bkx" = (
-/obj/machinery/door/poddoor/shutters{
- id = "warehouseqm"
- },
-/obj/machinery/button/door/directional/north{
- id = "warehouseqm"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"bkz" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/window/spawner/directional/east,
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"bkG" = (
-/obj/structure/railing{
- dir = 6
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 6
- },
-/turf/open/water/beach{
- desc = "Refreshing!";
- name = "treated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"bkH" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/item/kirbyplants/random,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"bkM" = (
-/obj/effect/landmark/start/ai/secondary,
-/obj/item/radio/intercom/directional/north{
- freerange = 1;
- listening = 0;
- name = "Custom Channel";
- pixel_x = -8
- },
-/obj/item/radio/intercom/directional/west{
- freerange = 1;
- listening = 0;
- name = "Common Channel"
- },
-/obj/item/radio/intercom/directional/south{
- freerange = 1;
- frequency = 1447;
- listening = 0;
- name = "Private Channel";
- pixel_x = -8
- },
-/turf/open/floor/circuit/green,
-/area/station/ai_monitored/turret_protected/ai)
-"bkO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bkR" = (
-/obj/effect/turf_decal/siding/white,
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/iron/white/side,
-/area/station/science/robotics/lab)
-"bkT" = (
-/obj/machinery/newscaster/directional/west,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"bkU" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"bkY" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/wardrobe/grey,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"blj" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"bln" = (
-/obj/docking_port/stationary/random{
- dir = 2;
- name = "lavaland";
- shuttle_id = "pod_lavaland"
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"blq" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/hedge,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"blt" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"blv" = (
-/obj/effect/turf_decal/siding/white,
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/side,
-/area/station/science/robotics/lab)
-"blw" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"blF" = (
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"blH" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/siding/blue,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"blI" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"blJ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"blK" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"blN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"blO" = (
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/trimline/green/corner,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"blS" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/structure/table,
-/obj/item/storage/bag/plants,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/service/hydroponics/garden)
-"blX" = (
-/obj/effect/turf_decal/tile/neutral/half/contrasted,
-/obj/effect/turf_decal/siding/white,
-/obj/structure/railing,
-/turf/open/floor/iron/white/side,
-/area/station/science/robotics/lab)
-"bmf" = (
-/obj/structure/window/spawner/directional/south,
-/obj/structure/closet/secure_closet/research_director,
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"bml" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/ladder,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"bmx" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/machinery/rnd/production/techfab/department/cargo,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"bmA" = (
-/obj/effect/turf_decal/siding/white/corner{
- dir = 8
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/iron/white/side,
-/area/station/science/robotics/lab)
-"bmD" = (
-/obj/machinery/status_display/ai/directional/north,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"bmE" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"bmG" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/structure/table,
-/obj/item/cultivator,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/service/hydroponics/garden)
-"bmL" = (
-/obj/structure/chair/office,
-/turf/open/floor/iron/white/side,
-/area/station/science/robotics/lab)
-"bmN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"bmO" = (
-/obj/effect/turf_decal/trimline/neutral,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"bmT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/navigate_destination/tcomms,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/tcommsat/computer)
-"bna" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"bne" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"bnf" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"bnt" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"bnz" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"bnC" = (
-/obj/structure/bed/medical/anchored{
- dir = 1
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"bnL" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"bnN" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/item/radio/intercom/directional/south,
-/obj/structure/closet/secure_closet/security,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"bnQ" = (
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"bnV" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"boa" = (
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/north,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"bof" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"bom" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"boq" = (
-/obj/structure/table/wood,
-/obj/item/storage/photo_album/chapel,
-/obj/effect/turf_decal/siding/yellow{
- dir = 1
- },
-/obj/item/storage/fancy/candle_box{
- pixel_x = -19;
- pixel_y = 5
- },
-/obj/machinery/requests_console/directional/north{
- department = "Chapel";
- name = "Chapel Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"bor" = (
-/obj/effect/spawner/random/vending/colavend,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"bos" = (
-/obj/machinery/camera{
- c_tag = "Atmos Tank #5 - Plasma";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine/plasma,
-/area/station/engineering/atmos)
-"boB" = (
-/obj/machinery/hydroponics/soil,
-/obj/item/shovel/spade,
-/turf/open/misc/dirt/jungle,
-/area/station/security/prison/garden)
-"boH" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/stairs/left,
-/area/station/science/robotics/lab)
-"boI" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/stairs/right,
-/area/station/science/robotics/lab)
-"boL" = (
-/obj/machinery/rnd/destructive_analyzer,
-/obj/effect/turf_decal/bot,
-/obj/machinery/requests_console/directional/east{
- department = "Research Lab";
- name = "Research Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/ore_update,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"boP" = (
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"boS" = (
-/obj/effect/spawner/random/trash/botanical_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"boY" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"bpd" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Genetics Lab"
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"bpq" = (
-/obj/machinery/vending/robotics,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"bpu" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal/incinerator)
-"bpA" = (
-/obj/effect/turf_decal/siding/white{
- dir = 10
- },
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/table/reinforced/rglass,
-/obj/item/crowbar/mechremoval,
-/turf/open/floor/iron/large,
-/area/station/science/robotics/lab)
-"bpE" = (
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"bpF" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"bpY" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 5
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"bqn" = (
-/obj/structure/closet/crate,
-/obj/item/reagent_containers/cup/bowl,
-/obj/effect/spawner/random/contraband/prison,
-/obj/item/reagent_containers/cup/bowl,
-/obj/item/reagent_containers/cup/bowl,
-/obj/item/reagent_containers/cup/bowl,
-/obj/item/reagent_containers/cup/bowl,
-/obj/item/reagent_containers/cup/bowl,
-/obj/item/reagent_containers/cup/bowl,
-/obj/item/reagent_containers/cup/bowl,
-/obj/item/kitchen/fork/plastic,
-/obj/item/kitchen/fork/plastic,
-/obj/item/kitchen/fork/plastic,
-/obj/item/storage/box/drinkingglasses,
-/obj/item/kitchen/spoon/plastic,
-/obj/item/kitchen/spoon/plastic,
-/obj/item/kitchen/spoon/plastic,
-/obj/item/knife/plastic,
-/obj/item/knife/plastic,
-/obj/item/knife/plastic,
-/obj/item/storage/bag/tray/cafeteria,
-/obj/item/storage/bag/tray/cafeteria,
-/obj/item/storage/bag/tray/cafeteria,
-/obj/item/storage/bag/tray/cafeteria,
-/obj/item/storage/box/drinkingglasses,
-/obj/machinery/light/directional/west,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"bqs" = (
-/obj/structure/cable,
-/obj/machinery/door/airlock{
- name = "Emergency Closet"
- },
-/turf/open/floor/plating,
-/area/station/security/prison)
-"bqu" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/tile/dark/half/contrasted{
- dir = 4
- },
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"bqx" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/commons/storage/primary)
-"bqF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/footprints,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"bqH" = (
-/obj/machinery/vending/cola,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"bqI" = (
-/obj/structure/window/spawner/directional/east,
-/turf/open/floor/grass,
-/area/station/maintenance/floor3/starboard)
-"bqQ" = (
-/obj/structure/closet/crate/freezer/blood{
- anchored = 1
- },
-/obj/effect/turf_decal/siding/white{
- dir = 10
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/office)
-"bqU" = (
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/holopad,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"brj" = (
-/turf/closed/wall,
-/area/station/hallway/secondary/entry)
-"brn" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/obj/machinery/airalarm/directional/north,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"brs" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Laboratory A"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/science/research,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"bru" = (
-/obj/machinery/teleport/hub,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"brA" = (
-/obj/machinery/hydroponics/constructable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"brC" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"brN" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/cargo/miningdock)
-"brT" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"bsl" = (
-/obj/item/stack/tile/iron/white,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"bsu" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/entry)
-"bsv" = (
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"bsw" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"bsz" = (
-/obj/structure/closet/bombcloset,
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"bsB" = (
-/obj/machinery/door/airlock/science{
- name = "Changing Room"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"bsC" = (
-/obj/effect/landmark/start/hangover,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-19";
- location = "1-18"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"bsG" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"bsI" = (
-/obj/machinery/door/window/right/directional/north{
- name = "Infirmary"
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white/side{
- dir = 6
- },
-/area/station/security/medical)
-"bsK" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/science/robotics/lab)
-"bsN" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"bsQ" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/turf_decal/trimline/yellow,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"bsS" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"bsV" = (
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner,
-/area/station/security/brig)
-"bsX" = (
-/obj/structure/table/reinforced/rglass,
-/obj/item/clothing/gloves/latex,
-/obj/item/clothing/glasses/science,
-/obj/item/healthanalyzer,
-/obj/item/clothing/glasses/hud/health,
-/obj/machinery/requests_console/directional/north{
- department = "Virology";
- name = "Virology Requests Console"
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"bta" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"btp" = (
-/obj/structure/table,
-/obj/item/storage/backpack/science{
- pixel_y = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"btq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/food_or_drink/donkpockets,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"bts" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"btt" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"btC" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"btL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/commons/storage/primary)
-"btN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/hallway/secondary/entry)
-"btP" = (
-/obj/effect/spawner/random/structure/crate_loot,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"btT" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/hallway/floor4/fore)
-"btU" = (
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/east,
-/obj/machinery/camera/directional/east{
- c_tag = "MiniSAT Access"
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"btV" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor1/fore)
-"btW" = (
-/obj/effect/turf_decal/tile/purple/full,
-/obj/effect/turf_decal/bot,
-/obj/effect/landmark/start/roboticist,
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"bun" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"buu" = (
-/obj/machinery/door/airlock/medical{
- name = "Operating Room"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"buB" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"buC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light_switch/directional/west,
-/obj/structure/chair/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"buI" = (
-/obj/machinery/door/window/brigdoor/right/directional/south{
- name = "Security Desk";
- req_access = list("security")
- },
-/obj/machinery/door/firedoor,
-/obj/structure/table/reinforced,
-/obj/structure/cable,
-/obj/structure/desk_bell{
- pixel_x = -3;
- pixel_y = 2
- },
-/turf/open/floor/iron,
-/area/station/security/checkpoint)
-"buJ" = (
-/obj/machinery/portable_atmospherics/canister,
-/obj/effect/turf_decal/trimline/brown,
-/turf/open/floor/engine/vacuum,
-/area/station/engineering/atmos)
-"buP" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"buQ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"buR" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/chair{
- dir = 1
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"bvc" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"bvf" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"bvi" = (
-/obj/effect/decal/cleanable/blood/innards{
- pixel_x = -2;
- pixel_y = 8
- },
-/obj/effect/decal/cleanable/blood/old,
-/obj/structure/sink/directional/south{
- pixel_x = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"bvq" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"bvx" = (
-/obj/structure/table,
-/obj/item/clothing/under/plasmaman/science{
- pixel_x = 2;
- pixel_y = -7
- },
-/obj/item/clothing/suit/hooded/wintercoat/science{
- pixel_x = 6;
- pixel_y = -3
- },
-/obj/item/clothing/suit/hooded/wintercoat/science,
-/obj/item/clothing/suit/hooded/wintercoat/science{
- pixel_x = -6;
- pixel_y = 3
- },
-/obj/item/clothing/head/helmet/space/plasmaman/science{
- pixel_x = 6;
- pixel_y = 9
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"bvC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 5
- },
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"bvF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/effect/landmark/start/bartender,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"bvG" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/hallway/secondary/entry)
-"bvL" = (
-/obj/structure/table/glass,
-/obj/item/storage/box/masks{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/storage/box/gloves{
- pixel_x = 5;
- pixel_y = 3
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"bvM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"bvO" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/newscaster/directional/south,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"bvP" = (
-/obj/effect/turf_decal/siding/white{
- dir = 10
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"bvR" = (
-/obj/structure/chair/comfy,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/room1)
-"bvT" = (
-/obj/machinery/meter,
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible,
-/turf/open/floor/plating,
-/area/station/engineering/atmos/pumproom)
-"bvU" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"bwl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 6
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/pumproom)
-"bwu" = (
-/obj/effect/turf_decal/trimline/blue/arrow_ccw{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/arrow_cw{
- dir = 8
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"bwx" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"bwz" = (
-/obj/structure/table/wood,
-/obj/machinery/light_switch/directional/east,
-/obj/item/toy/figure/curator,
-/obj/machinery/requests_console/directional/south{
- department = "Library";
- name = "Library Requests Console"
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"bwA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"bwE" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/machinery/cryo_cell{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"bwF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"bwK" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"bwL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"bwS" = (
-/obj/effect/turf_decal/trimline/red/filled/end{
- dir = 4
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"bwZ" = (
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"bxb" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/ai_monitored/command/storage/eva)
-"bxc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/south,
-/obj/structure/table/wood/fancy/blue,
-/obj/item/toy/figure/captain{
- pixel_x = -1;
- pixel_y = 3
- },
-/obj/item/lighter{
- pixel_x = 8
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"bxd" = (
-/obj/structure/table,
-/obj/machinery/airalarm/directional/north,
-/obj/item/paper_bin,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"bxe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/command/bridge)
-"bxf" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/starboard/fore)
-"bxk" = (
-/obj/structure/rack,
-/obj/item/toy/crayon/spraycan/roboticist,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"bxl" = (
-/turf/closed/wall,
-/area/station/commons/dorms/room1)
-"bxr" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/conveyor_switch/oneway{
- id = "robo1"
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"bxs" = (
-/obj/structure/rack,
-/obj/item/storage/briefcase{
- pixel_x = -3;
- pixel_y = 2
- },
-/obj/item/storage/briefcase/secure{
- pixel_x = 2;
- pixel_y = -2
- },
-/obj/item/clothing/glasses/sunglasses,
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"bxE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"bxG" = (
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"bxH" = (
-/obj/structure/flora/rock/pile,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/fakebasalt,
-/area/station/maintenance/floor3/port)
-"bxT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 4
- },
-/area/station/maintenance/floor1/starboard/aft)
-"bxZ" = (
-/obj/machinery/conveyor{
- dir = 1;
- id = "robo1"
- },
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"byc" = (
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/fore)
-"byi" = (
-/obj/machinery/status_display/evac/directional,
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit/departure_lounge)
-"byk" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"byl" = (
-/obj/structure/ladder,
-/obj/effect/turf_decal/trimline/neutral/warning,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"byE" = (
-/obj/structure/table,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"byH" = (
-/obj/machinery/conveyor{
- dir = 1;
- id = "robo2"
- },
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"byI" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/conveyor_switch/oneway{
- id = "robo2"
- },
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"byK" = (
-/turf/open/floor/iron/stairs{
- dir = 4
- },
-/area/station/service/bar/atrium)
-"byW" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"byX" = (
-/obj/machinery/computer/monitor,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"byY" = (
-/obj/structure/dresser,
-/obj/machinery/camera/directional/west{
- c_tag = "Command - Research Director's Quarters #2"
- },
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"bza" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/engineering/storage/tech)
-"bzm" = (
-/obj/effect/decal/cleanable/blood,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"bzw" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"bzy" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/sink/kitchen/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"bzB" = (
-/mob/living/basic/slime,
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"bzF" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/table/reinforced,
-/obj/effect/spawner/random/bureaucracy/folder,
-/obj/effect/spawner/random/bureaucracy/pen,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "lockers";
- name = "Locker Room Shutters"
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"bzJ" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/desk_bell{
- pixel_x = -3;
- pixel_y = 2
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"bzM" = (
-/obj/structure/reagent_dispensers/plumbed{
- dir = 1
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/aft)
-"bzO" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/chair/comfy/brown{
- dir = 8
- },
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/machinery/camera/directional/east{
- c_tag = "Science - Study"
- },
-/turf/open/floor/iron/grimy,
-/area/station/science/xenobiology/hallway)
-"bzW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"bAb" = (
-/obj/structure/sign/poster/contraband/atmosia_independence/directional/west,
-/obj/machinery/light/small/directional/west,
-/obj/machinery/light_switch/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/maintenance/floor2/port/aft)
-"bAc" = (
-/obj/machinery/conveyor/inverted{
- dir = 10;
- id = "robo1"
- },
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"bAe" = (
-/obj/structure/rack,
-/obj/machinery/ecto_sniffer,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"bAf" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/sign/directions/evac/directional/east{
- dir = 2
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"bAj" = (
-/obj/machinery/conveyor{
- dir = 9;
- id = "robo2"
- },
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"bAk" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"bAq" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 5
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"bAx" = (
-/obj/machinery/light/directional/south,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"bAG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
-"bAL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"bAP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard)
-"bBg" = (
-/obj/structure/bed/medical/emergency,
-/obj/machinery/iv_drip,
-/obj/effect/decal/cleanable/blood/old,
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"bBx" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"bBK" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"bBP" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"bBS" = (
-/obj/structure/chair/plastic,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"bBV" = (
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 8
- },
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/computer/order_console/mining,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"bCd" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/reinforced/rglass,
-/obj/item/reagent_containers/chem_pack{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/reagent_containers/chem_pack{
- pixel_x = 3;
- pixel_y = 2
- },
-/obj/item/reagent_containers/chem_pack{
- pixel_y = 3
- },
-/obj/item/clothing/neck/stethoscope{
- pixel_y = 4
- },
-/obj/item/reagent_containers/cup/bottle{
- pixel_x = -2
- },
-/obj/item/reagent_containers/cup/bottle{
- pixel_x = 2
- },
-/obj/effect/turf_decal/bot_white{
- color = "#74b2d3"
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"bCk" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"bCo" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"bCp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"bCq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"bCr" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"bCz" = (
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"bCG" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"bCR" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 8
- },
-/obj/structure/grille,
-/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east,
-/turf/open/floor/plating,
-/area/station/cargo/bitrunning/den)
-"bCT" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"bCW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/material,
-/obj/structure/table/wood,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"bCX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/rods/ten,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"bDg" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/requests_console/directional/south{
- department = "Mining";
- name = "Mining Requests Console"
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"bDm" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"bDn" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"bDr" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"bDC" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"bDD" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"bDL" = (
-/turf/closed/wall/r_wall,
-/area/station/security/checkpoint)
-"bDU" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/table/reinforced,
-/obj/item/paper_bin{
- pixel_x = 1;
- pixel_y = 2
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "lockers";
- name = "Locker Room Shutters"
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"bDV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/command/bridge)
-"bED" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -2;
- pixel_y = 8
- },
-/obj/item/cigbutt/cigarbutt{
- pixel_x = 7
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/cargo/bitrunning/den)
-"bEK" = (
-/obj/structure/holosign/barrier,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"bEQ" = (
-/obj/structure/table/wood,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"bET" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"bEV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"bFd" = (
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"bFf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"bFq" = (
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"bFD" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"bFH" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"bFI" = (
-/obj/machinery/door/window/left/directional/south{
- name = "Inner Pipe Access";
- req_access = list("atmospherics")
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible,
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bFM" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/safe)
-"bGb" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/table/wood,
-/obj/machinery/computer/libraryconsole/bookmanagement{
- dir = 8
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"bGc" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"bGf" = (
-/turf/open/water/beach{
- desc = "Refreshing!";
- name = "treated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"bGh" = (
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"bGl" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"bGn" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"bGs" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"bGt" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/ai_monitored/command/storage/eva)
-"bGV" = (
-/obj/machinery/door/window/brigdoor/left/directional/north,
-/mob/living/basic/pet/fox,
-/turf/open/floor/noslip,
-/area/station/maintenance/floor1/port)
-"bHw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/highsecurity{
- name = "Secure Tech"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/construction,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"bHU" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"bIk" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"bIl" = (
-/obj/effect/spawner/structure/window/reinforced/tinted,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"bIm" = (
-/obj/structure/chair,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"bIx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"bIy" = (
-/obj/structure/chair/comfy/black{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"bID" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"bIG" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/machinery/newscaster/directional/north,
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"bII" = (
-/obj/machinery/power/solar,
-/obj/structure/cable,
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/starboard/fore)
-"bIQ" = (
-/obj/structure/extinguisher_cabinet/directional/north,
-/obj/machinery/firealarm/directional/east,
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"bIW" = (
-/obj/machinery/door/airlock/maintenance/external{
- name = "Ports To Supermatter"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/engineering/atmos/pumproom)
-"bJg" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"bJi" = (
-/obj/effect/turf_decal/siding/thinplating/dark/corner{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"bJj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron,
-/area/station/security/range)
-"bJk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"bJm" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"bJo" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"bJs" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"bJA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"bJQ" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"bJU" = (
-/obj/structure/table,
-/obj/item/book/manual/wiki/atmospherics,
-/obj/item/t_scanner,
-/obj/item/storage/belt/utility,
-/obj/machinery/requests_console/directional/west{
- department = "Atmospherics";
- name = "Atmospherics Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/effect/mapping_helpers/requests_console/supplies,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"bJV" = (
-/obj/structure/chair/comfy/black{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"bJW" = (
-/obj/structure/ladder,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"bKa" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bKp" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/obj/effect/turf_decal/siding/thinplating_new/corner{
- dir = 8
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"bKq" = (
-/obj/effect/turf_decal/siding/blue/corner{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"bKv" = (
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2,
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"bKz" = (
-/obj/item/restraints/handcuffs/cable/zipties/used,
-/obj/structure/table/optable,
-/obj/effect/landmark/blobstart,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"bKG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"bKP" = (
-/obj/effect/turf_decal/bot_white/left,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"bKR" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"bKS" = (
-/obj/structure/table/reinforced,
-/obj/effect/spawner/random/entertainment/lighter,
-/obj/effect/turf_decal/tile/green/full,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"bKY" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"bLd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"bLi" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"bLm" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "viro-inner";
- name = "Virology Inner Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/virology)
-"bLq" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"bLt" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"bLy" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"bLB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"bMa" = (
-/obj/structure/tank_dispenser/oxygen,
-/obj/effect/turf_decal/siding/thinplating_new,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"bMd" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"bMo" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"bMs" = (
-/obj/structure/chair/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"bMt" = (
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"bMz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"bMD" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor1/starboard)
-"bME" = (
-/obj/effect/spawner/random/trash/hobo_squat,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"bMI" = (
-/obj/item/flashlight/lamp,
-/obj/structure/table,
-/obj/item/radio/intercom/directional/west,
-/obj/item/paper/fluff/jobs/engineering/frequencies,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"bMJ" = (
-/turf/open/floor/iron/freezer,
-/area/station/hallway/secondary/service)
-"bMP" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"bMR" = (
-/obj/machinery/door/airlock/security{
- name = "Evidence Lockers"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"bMW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/structure/electrified_grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"bNg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"bNh" = (
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"bNp" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"bNs" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"bNu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"bNL" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/structure/reflector/box/anchored{
- dir = 8
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"bNP" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark,
-/obj/effect/turf_decal/siding/thinplating/dark/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"bNU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/green/warning,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"bOg" = (
-/obj/structure/marker_beacon/burgundy,
-/obj/effect/turf_decal/trimline/brown/warning,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"bOk" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 4
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"bOq" = (
-/obj/machinery/door/airlock/maintenance/external,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "Gravgenrear"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"bOx" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/table/wood,
-/obj/machinery/fax{
- fax_name = "Medical";
- name = "Medical Fax Machine"
- },
-/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/east,
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"bOB" = (
-/obj/effect/turf_decal/tile/blue/anticorner{
- dir = 8
- },
-/turf/open/floor/iron/textured_corner{
- dir = 4
- },
-/area/station/medical/chemistry)
-"bOE" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/ai_monitored/command/storage/eva)
-"bOJ" = (
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"bPh" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/disposal/bin/tagger,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"bPq" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"bPv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/commons/storage/primary)
-"bPx" = (
-/obj/structure/water_source/puddle,
-/obj/structure/flora/bush/reed/style_2{
- pixel_x = -6
- },
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"bPK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/machinery/duct,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"bPO" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/camera/directional/north{
- c_tag = "Science - Applied Mechanics"
- },
-/obj/item/radio/intercom/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/science/auxlab)
-"bPP" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"bQe" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"bQn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"bQv" = (
-/obj/machinery/power/terminal{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/maintenance/solars/starboard/fore)
-"bQz" = (
-/obj/machinery/camera{
- c_tag = "Supermatter Foyer Cam #1";
- dir = 1;
- network = list("ss13","engine")
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"bQA" = (
-/obj/effect/turf_decal/trimline/red,
-/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
-/turf/open/floor/engine/n2o,
-/area/station/engineering/atmos)
-"bQG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"bQK" = (
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"bQU" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"bQV" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"bQY" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/machinery/door/window/left/directional/north{
- name = "Genetics Desk";
- req_access = list("genetics")
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"bRd" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/computer/atmos_control/oxygen_tank,
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bRh" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/atmospherics/components/tank/air,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"bRl" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"bRq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"bRt" = (
-/obj/structure/marker_beacon/burgundy,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"bRx" = (
-/obj/structure/frame/machine,
-/obj/item/circuitboard/machine/telecomms/receiver,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"bRI" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"bRM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"bRP" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"bRR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-14";
- location = "1-13"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"bRZ" = (
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/pumproom)
-"bSa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"bSb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/griddle,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"bSd" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"bSg" = (
-/obj/structure/grille,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"bSi" = (
-/obj/machinery/door/airlock/external{
- name = "Labor Camp Shuttle Airlock";
- shuttledocked = 1
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"bSj" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"bSq" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bSs" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"bSE" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"bSH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"bSR" = (
-/obj/structure/closet/crate/freezer,
-/obj/effect/spawner/random/medical/memeorgans,
-/obj/effect/spawner/random/medical/surgery_tool,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"bSU" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"bSV" = (
-/obj/machinery/door/airlock/medical{
- name = "Psychologist's Office"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"bSX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/security/general,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/door/airlock/security{
- name = "Private Investigator's Office"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"bTe" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"bTf" = (
-/obj/structure/chair/pew/right{
- dir = 1
- },
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"bTm" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/turf_decal/trimline/white/filled/corner{
- dir = 1
- },
-/obj/effect/turf_decal/arrows/white{
- pixel_x = -16
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"bTq" = (
-/obj/machinery/light/directional/north,
-/obj/effect/turf_decal/tile/green/half,
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"bTu" = (
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"bTy" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"bTK" = (
-/obj/machinery/door/window/brigdoor/right/directional/west{
- name = "Judge's Stand";
- req_access = list("court")
- },
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/courtroom)
-"bTQ" = (
-/turf/closed/wall,
-/area/station/science/ordnance/bomb)
-"bTR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"bTW" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"bTX" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/brig)
-"bTY" = (
-/obj/machinery/camera/directional/west,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"bUa" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"bUh" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"bUq" = (
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"bUv" = (
-/obj/structure/flora/bush/flowers_pp/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"bUC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth_half,
-/area/station/cargo/warehouse)
-"bUH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"bUO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/machinery/camera{
- c_tag = "Supermatter Foyer Cam #3";
- dir = 8;
- network = list("ss13","engine")
- },
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"bUP" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"bUW" = (
-/obj/machinery/computer/records/security{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"bUZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"bVg" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"bVj" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/range)
-"bVl" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"bVu" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"bVy" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"bVG" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bVT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/button/door/directional/south{
- id = "public_toilets_b";
- name = "Door Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"bVY" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"bVZ" = (
-/obj/structure/table,
-/obj/item/hfr_box/corner,
-/obj/item/hfr_box/corner,
-/obj/item/hfr_box/corner,
-/obj/item/hfr_box/corner,
-/obj/item/hfr_box/core,
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"bWd" = (
-/obj/machinery/shieldgen,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"bWn" = (
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 4
- },
-/obj/machinery/space_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"bWu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/iron/half,
-/area/station/engineering/atmos/hfr_room)
-"bWz" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"bWH" = (
-/obj/effect/spawner/random/vending/colavend,
-/obj/structure/sign/poster/official/cleanliness/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/secondary/entry)
-"bWZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"bXd" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"bXe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/lobby)
-"bXn" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/plumbed{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"bXv" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-5";
- location = "1-4"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"bXw" = (
-/obj/machinery/door/airlock/engineering/glass/critical{
- heat_proof = 1;
- id_tag = "sm_bolt";
- name = "Supermatter Engine"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"bXz" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/ai_slipper{
- uses = 10
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"bXB" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"bXD" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/layer4{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"bYb" = (
-/obj/structure/table/glass,
-/obj/item/stack/medical/gauze,
-/obj/machinery/defibrillator_mount/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"bYg" = (
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"bYp" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/material,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"bYq" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=4-3";
- location = "4-2"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"bYu" = (
-/obj/structure/fluff/broken_canister_frame,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"bYB" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/medical/storage)
-"bYJ" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Xenobio - Port Pens"
- },
-/obj/structure/sign/poster/official/nanotrasen_logo/directional/south,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"bYP" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"bYX" = (
-/obj/structure/bed/medical/anchored{
- dir = 8
- },
-/obj/item/bedsheet/medical{
- dir = 4
- },
-/obj/structure/curtain/cloth,
-/obj/machinery/newscaster/directional/south,
-/obj/effect/landmark/start/medical_doctor,
-/turf/open/floor/wood/parquet,
-/area/station/medical/patients_rooms)
-"bZd" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/trimline/blue,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"bZg" = (
-/obj/machinery/portable_atmospherics/canister,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"bZr" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"bZA" = (
-/obj/structure/table,
-/obj/item/plate{
- pixel_y = -3
- },
-/obj/item/plate,
-/obj/item/plate{
- pixel_y = 3
- },
-/obj/item/knife/plastic{
- pixel_x = 14
- },
-/obj/item/knife/plastic{
- pixel_x = 14;
- pixel_y = -3
- },
-/obj/item/knife/plastic{
- pixel_x = 14;
- pixel_y = 3
- },
-/obj/item/kitchen/fork/plastic{
- pixel_x = -12;
- pixel_y = 3
- },
-/obj/item/kitchen/fork/plastic{
- pixel_x = -12;
- pixel_y = -3
- },
-/obj/item/kitchen/fork/plastic{
- pixel_x = -12
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment1)
-"bZE" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"bZM" = (
-/obj/structure/chair/stool/bar/directional/east,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"cah" = (
-/obj/machinery/door/airlock/command{
- name = "Teleporter Storage"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/command/teleporter)
-"can" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"cau" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"cax" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"cay" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"caC" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"caF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/aiupload,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"caP" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/bureaucracy/briefcase{
- spawn_loot_count = 2;
- spawn_loot_split = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"caQ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"cbi" = (
-/obj/structure/table/wood,
-/obj/machinery/requests_console/directional/south{
- department = "Kitchen";
- name = "Kitchen Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/item/storage/bag/tray,
-/obj/item/reagent_containers/cup/rag,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"cbm" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"cbo" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/service)
-"cbt" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"cbu" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/landmark/start/chemist,
-/turf/open/floor/iron/white/side{
- dir = 8
- },
-/area/station/medical/pharmacy)
-"cbw" = (
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"cbE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/cable_coil/cut,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"cbG" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"cbM" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/turf_decal/trimline/yellow/warning,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"cbT" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"cca" = (
-/obj/structure/transport/linear/public,
-/obj/effect/landmark/transport/transport_id{
- specific_transport_id = "aft_vator"
- },
-/obj/effect/abstract/elevator_music_zone{
- linked_elevator_id = "aft_vator";
- range = 2
- },
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/aft)
-"ccc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"ccf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/captain,
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"ccp" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"ccA" = (
-/obj/effect/spawner/random/engineering/material_cheap,
-/obj/structure/table/wood,
-/obj/item/chisel{
- pixel_x = -7;
- pixel_y = 5
- },
-/obj/item/toy/crayon/spraycan{
- pixel_x = 7;
- pixel_y = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"ccF" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"ccH" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor3/starboard/fore)
-"ccK" = (
-/obj/effect/decal/cleanable/blood/footprints,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"ccP" = (
-/obj/machinery/seed_extractor,
-/obj/item/seeds/poppy,
-/obj/effect/turf_decal/siding/green{
- dir = 6
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"ccU" = (
-/obj/structure/table/wood,
-/obj/item/storage/box/donkpockets,
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"ccV" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"cdc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"cdd" = (
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/button/ignition{
- id = "Xenobio";
- pixel_x = 24;
- pixel_y = 5
- },
-/obj/machinery/button/door/directional/east{
- id = "Xenolab";
- name = "Test Chamber Blast Doors";
- pixel_y = -5;
- req_access = list("xenobiology")
- },
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/obj/machinery/power/shieldwallgen/xenobiologyaccess,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"cdf" = (
-/obj/structure/chair/office,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"cdj" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"cdm" = (
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"cdo" = (
-/obj/effect/turf_decal/arrows/red{
- dir = 4;
- pixel_x = -15
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"cdq" = (
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"cdF" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"cdN" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-4";
- location = "2-3"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"cdS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"cdU" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"ced" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"cee" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"ceh" = (
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"cek" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"cem" = (
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"cep" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/computer/security/telescreen/minisat/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"cev" = (
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- desc = "Someone's bolted this manually.";
- name = "Damaged Airlock"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"cez" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/mob/living/basic/rabbit,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"ceF" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/shutters/preopen{
- name = "CMO Privacy Shutters";
- dir = 4;
- id = "cmoshutter"
- },
-/turf/open/floor/plating,
-/area/station/medical/storage)
-"ceH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 10
- },
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"ceL" = (
-/obj/machinery/vending/cola,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"cfa" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/checkpoint/second)
-"cfe" = (
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"cff" = (
-/obj/structure/hedge/opaque,
-/obj/structure/hedge/opaque,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"cfh" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"cfp" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"cfu" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"cfC" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"cfD" = (
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/obj/machinery/door/poddoor/shutters{
- dir = 8;
- id = "armory";
- name = "Armoury Shutter"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"cfH" = (
-/obj/structure/stairs/north,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"cfJ" = (
-/obj/structure/railing{
- dir = 5
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"cfO" = (
-/obj/machinery/vending/wardrobe/cargo_wardrobe,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"cfU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"cga" = (
-/obj/machinery/light/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"cgb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"cgc" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"cgi" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"cgm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/dark_blue/line,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"cgp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"cgw" = (
-/obj/effect/decal/cleanable/oil,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"cgx" = (
-/obj/structure/sign/warning{
- pixel_x = -32
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port/aft)
-"cgB" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/science/xenobiology/hallway)
-"cgM" = (
-/turf/open/floor/iron/stairs{
- icon_state = "stairs-m"
- },
-/area/station/science/lobby)
-"cgR" = (
-/obj/structure/closet/secure_closet/hydroponics,
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"cgT" = (
-/obj/machinery/plumbing/sender,
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"cgZ" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"chd" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/trimline/purple/warning,
-/obj/structure/chair{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"che" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"chk" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"chn" = (
-/obj/machinery/airalarm/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"chs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/engineering{
- name = "Construction"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/storage/primary)
-"cht" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"chF" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"chO" = (
-/obj/structure/table/wood,
-/obj/item/folder/yellow{
- pixel_x = 3;
- pixel_y = 2
- },
-/obj/item/folder/blue,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"chP" = (
-/turf/closed/wall/mineral/plastitanium,
-/area/station/maintenance/floor4/starboard/aft)
-"chY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"cib" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"cil" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"cim" = (
-/obj/structure/stairs/north,
-/obj/structure/sign/departments/cargo/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"ciq" = (
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"cir" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/supermatter/room)
-"cis" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/rack,
-/obj/item/clothing/under/trek/command/next,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/command/teleporter)
-"cix" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"ciz" = (
-/obj/structure/table/wood,
-/obj/item/folder/blue,
-/obj/item/stamp/head/captain,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"ciC" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"ciH" = (
-/obj/structure/table,
-/obj/item/stack/sheet/plasteel{
- amount = 10
- },
-/obj/item/stack/rods/fifty,
-/obj/effect/spawner/random/trash/janitor_supplies,
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted,
-/obj/machinery/button/door/directional/south{
- id = "aux_base_shutters";
- name = "Public Shutters Control";
- req_access = list("aux_base")
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"ciK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/smooth_corner{
- dir = 1
- },
-/area/station/commons/fitness/recreation)
-"ciM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"ciQ" = (
-/obj/structure/reagent_dispensers/wall/peppertank/directional/east,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red/anticorner/contrasted,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"ciS" = (
-/obj/machinery/door/airlock/medical/glass{
- id_tag = "MedbayFoyer";
- name = "Permabrig Medbay"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"ciU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"ciW" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"ciZ" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/north,
-/obj/structure/foamedmetal,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"cja" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"cjc" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/preopen{
- id = "ceprivacy";
- name = "Privacy Shutter"
- },
-/turf/open/floor/plating,
-/area/station/engineering/engine_smes)
-"cjo" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"cjp" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"cjx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"cjB" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/shreds,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"cjC" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"cjE" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos)
-"cjK" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/item/kirbyplants/organic/plant21,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"cjM" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/teleporter)
-"cjX" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/door/airlock/external,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard)
-"ckk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/corner,
-/area/station/hallway/floor2/aft)
-"ckl" = (
-/obj/item/toy/snowball,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/turf/open/misc/asteroid/snow/standard_air,
-/area/station/maintenance/floor2/port/aft)
-"ckn" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"ckv" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"cky" = (
-/obj/structure/table_frame/wood,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"ckQ" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"ckR" = (
-/obj/item/storage/medkit/o2{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/storage/medkit/o2,
-/obj/item/storage/medkit/o2{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/item/storage/medkit/regular,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"ckU" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 5
- },
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"ckX" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible{
- dir = 4
- },
-/turf/closed/wall/r_wall,
-/area/station/maintenance/disposal/incinerator)
-"clb" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"cle" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/sign/warning/yes_smoking/circle/directional/east,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"clf" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/commons/vacant_room/commissary)
-"cll" = (
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"clp" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"clv" = (
-/obj/machinery/door/airlock/hatch{
- name = "Stairwell Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/disposal)
-"cly" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"clF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/mineral/plastitanium/airless,
-/area/space/nearstation)
-"clH" = (
-/obj/machinery/power/terminal{
- dir = 8
- },
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/power/port_gen/pacman/pre_loaded,
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"clJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"clP" = (
-/obj/machinery/chem_master,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"clT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/broken/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"clU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/security/brig)
-"clV" = (
-/obj/structure/closet{
- name = "Evidence Closet 4"
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"cmh" = (
-/obj/structure/closet/toolcloset,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/vacant_room/commissary)
-"cmi" = (
-/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"cmj" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/floor1/fore)
-"cmk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"cml" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"cmr" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"cms" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet,
-/area/station/cargo/miningdock)
-"cmu" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"cmw" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"cmG" = (
-/turf/closed/wall,
-/area/station/medical/psychology)
-"cmH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor3/aft)
-"cmM" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/security/courtroom)
-"cmT" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured,
-/area/station/command/heads_quarters/qm)
-"cng" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"cnj" = (
-/turf/open/floor/carpet,
-/area/station/hallway/secondary/entry)
-"cnk" = (
-/obj/effect/spawner/random/entertainment/arcade,
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"cnq" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"cnx" = (
-/obj/effect/turf_decal/siding/wood/corner,
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"cnz" = (
-/obj/machinery/iv_drip,
-/obj/structure/mirror/directional/south,
-/obj/machinery/camera/autoname/directional/east,
-/obj/effect/decal/cleanable/blood/old,
-/obj/structure/sign/poster/official/cleanliness/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"cnI" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"cnL" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/structure/closet/firecloset,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"col" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/ai_monitored/turret_protected/ai)
-"con" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"cow" = (
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"coH" = (
-/obj/structure/chair/comfy/brown,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"coI" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"coZ" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"cpa" = (
-/obj/structure/table/wood,
-/obj/item/stack/pipe_cleaner_coil/random,
-/obj/item/stack/pipe_cleaner_coil/random,
-/obj/item/stack/pipe_cleaner_coil/random,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"cpe" = (
-/obj/machinery/holopad,
-/turf/open/floor/carpet,
-/area/station/hallway/secondary/entry)
-"cpg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/science/genetics,
-/obj/machinery/door/airlock/hatch{
- name = "Genetics Maintenance"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"cpk" = (
-/obj/vehicle/ridden/janicart,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"cpm" = (
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"cpo" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/commons/locker)
-"cpr" = (
-/turf/open/floor/plating,
-/area/station/construction)
-"cpu" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"cpx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall,
-/area/station/hallway/floor1/aft)
-"cpz" = (
-/obj/structure/table,
-/obj/item/stack/package_wrap,
-/obj/item/hand_labeler,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/cargo/sorting)
-"cpD" = (
-/obj/structure/falsewall,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"cpE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"cpW" = (
-/obj/machinery/light/small/directional/west,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/fore)
-"cqc" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/command/teleporter)
-"cqm" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"cqu" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/structure/window/spawner/directional/south,
-/obj/structure/window/spawner/directional/east,
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"cqy" = (
-/obj/structure/table,
-/obj/item/folder/white,
-/obj/machinery/camera/autoname/directional/north,
-/obj/item/paper_bin,
-/obj/effect/turf_decal/siding/white/corner,
-/obj/machinery/newscaster/directional/north,
-/obj/item/healthanalyzer,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"cqz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/checkpoint)
-"cqP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"cqR" = (
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/smooth_edge,
-/area/station/science/robotics/mechbay)
-"cqT" = (
-/obj/machinery/recycler{
- dir = 8
- },
-/obj/machinery/conveyor{
- dir = 4;
- id = "disposals"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"cqV" = (
-/obj/machinery/disposal/bin,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/button/door/directional/north{
- id = "lockers";
- name = "Shutters Control"
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"cqY" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"crd" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"crj" = (
-/obj/structure/window/reinforced/tinted/fulltile,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"crn" = (
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"crp" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"crr" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"crK" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/machinery/camera/motion/directional/south{
- c_tag = "AI Upload Chamber - Port";
- network = list("aiupload")
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"crO" = (
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor1/fore)
-"crW" = (
-/obj/machinery/atmospherics/components/unary/passive_vent{
- dir = 4
- },
-/obj/machinery/door/poddoor/shutters/window{
- dir = 4;
- id = "atmos_incinerator_auxvent";
- name = "Combustion Chamber Vent"
- },
-/turf/open/floor/engine/airless,
-/area/station/maintenance/disposal/incinerator)
-"cse" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"csf" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1;
- name = "Supermatter Waste To Port"
- },
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"csr" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"css" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos/project)
-"csw" = (
-/obj/structure/chair{
- name = "Judge"
- },
-/obj/machinery/camera/directional/north{
- c_tag = "Courtroom"
- },
-/obj/effect/landmark/start/hangover,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"csz" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-10";
- location = "2-9"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"csC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"csF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"csM" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"csP" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/bar)
-"csR" = (
-/obj/effect/turf_decal/siding/blue{
- dir = 4;
- pixel_x = -15
- },
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
-/obj/machinery/camera/directional/north{
- c_tag = "Medbay - Treatment Center";
- name = "medbay camera";
- network = list("ss13","medbay");
- dir = 2
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"csT" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/structure/chair/office{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/radio/intercom/directional/south,
-/obj/structure/railing/corner/end{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"csY" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/engineering/atmos/hfr_room)
-"ctd" = (
-/obj/structure/sign/poster/contraband/pwr_game,
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"cti" = (
-/obj/machinery/firealarm/directional/west,
-/obj/effect/turf_decal/stripes,
-/obj/effect/spawner/random/engineering/tank,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"ctv" = (
-/obj/machinery/computer/warrant,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"ctI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"ctT" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/item/reagent_containers/syringe,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"ctX" = (
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #9";
- dir = 4;
- network = list("ss13","engine")
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"ctY" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"cub" = (
-/obj/structure/rack,
-/obj/item/clothing/under/trek/command/voy,
-/obj/item/clothing/under/trek/command,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"cuc" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"cuf" = (
-/obj/structure/sign/poster/contraband/eat/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"cui" = (
-/obj/machinery/button/door/directional/south{
- id = "nsminingdorm1";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/carpet,
-/area/station/cargo/miningdock)
-"cuk" = (
-/obj/effect/turf_decal/tile/red/full,
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 1
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #2";
- network = list("ss13","engine")
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/atmos)
-"cun" = (
-/obj/machinery/camera/motion/directional/east{
- c_tag = "MiniSat - Fore";
- network = list("minisat")
- },
-/obj/structure/lattice/catwalk,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"cus" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"cuC" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"cuK" = (
-/obj/machinery/photocopier,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"cuL" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "surg_b_privacy";
- name = "Surgery Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/surgery/aft)
-"cuR" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"cuS" = (
-/obj/structure/flora/bush/flowers_pp/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"cuT" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"cuX" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"cvf" = (
-/obj/effect/spawner/structure/window/hollow/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"cvg" = (
-/obj/structure/table/reinforced,
-/obj/item/shard/plasma{
- pixel_x = -7;
- pixel_y = 4
- },
-/obj/effect/decal/cleanable/oil,
-/obj/item/weldingtool{
- pixel_x = 4;
- pixel_y = 6
- },
-/obj/item/clothing/glasses/welding,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"cvm" = (
-/obj/item/stack/tile/light,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"cvn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"cvo" = (
-/obj/structure/toilet{
- dir = 4
- },
-/obj/machinery/newscaster/directional/south,
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"cvA" = (
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"cvC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-5";
- location = "2-4"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"cvD" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/ladder,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"cvE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"cvK" = (
-/obj/structure/water_source/puddle,
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"cvM" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Garden"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"cvP" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/service/hydroponics/garden)
-"cvW" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"cvX" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/printer)
-"cvZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/start/cyborg,
-/obj/structure/cable/layer3,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"cwl" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/fakebasalt,
-/area/station/maintenance/floor3/port)
-"cwq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"cwz" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/duct,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"cwD" = (
-/obj/machinery/newscaster/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/directional/south{
- c_tag = "Courtroom - Gallery"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"cwF" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/library,
-/obj/machinery/light/floor,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"cwG" = (
-/obj/machinery/door/airlock{
- id_tag = "nsminingdorm2";
- name = "Room 2"
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/cargo/miningdock)
-"cwX" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/lockers)
-"cxc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/security/office)
-"cxg" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Gen Pop"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/security/holding_cell)
-"cxl" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"cxx" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"cxN" = (
-/obj/structure/rack,
-/obj/item/clothing/gloves/boxing/blue,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"cxO" = (
-/obj/machinery/vending/hydronutrients,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"cxQ" = (
-/obj/structure/table_frame,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"cxR" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"cxX" = (
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"cyb" = (
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"cyc" = (
-/obj/machinery/door/airlock{
- id_tag = "dorms_lux_1_bolts";
- name = "Luxury Dorm 1"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"cyx" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"cyF" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"cyL" = (
-/obj/structure/table/wood,
-/obj/item/storage/dice,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"cyX" = (
-/obj/item/instrument/banjo,
-/obj/item/clothing/head/costume/festive,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"czj" = (
-/obj/structure/sign/poster/random/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"czm" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"czp" = (
-/turf/closed/wall/r_wall,
-/area/station/command/meeting_room)
-"czr" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"czu" = (
-/obj/structure/rack,
-/obj/item/toner/large,
-/obj/item/toner/large,
-/obj/item/toner/large,
-/obj/item/toner/large,
-/obj/item/toner/large,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"czP" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/bar)
-"czZ" = (
-/obj/machinery/door/window/left/directional/north{
- name = "Pen 1";
- req_access = list("xenobiology")
- },
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"cAf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/item/radio/intercom/directional/east,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"cAi" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"cAt" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/security/brig)
-"cAu" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"cAJ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/security/mechbay)
-"cAO" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"cAU" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"cBb" = (
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"cBk" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/white/warning,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"cBq" = (
-/obj/structure/table/wood/poker,
-/obj/item/toy/cards/deck,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"cBx" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"cBE" = (
-/obj/machinery/firealarm/directional/west,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"cBJ" = (
-/obj/machinery/door/airlock/medical{
- name = "Morgue"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/medical/morgue,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/morgue)
-"cBU" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/flora/bush/sunny/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"cCc" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"cCd" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/entry)
-"cCf" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 6
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 5
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"cCk" = (
-/obj/machinery/camera/directional/west{
- c_tag = "Aft Starboard Solar Maintenance"
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
-"cCq" = (
-/turf/closed/wall,
-/area/station/maintenance/solars/port/aft)
-"cCu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"cCC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"cCE" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"cCK" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"cCO" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/corner{
- dir = 4
- },
-/area/station/maintenance/solars/starboard/fore)
-"cCS" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"cCV" = (
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"cCX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/duct,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"cDa" = (
-/obj/structure/cable,
-/obj/machinery/chem_master,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"cDh" = (
-/obj/item/broken_bottle,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"cDj" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/cargo/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"cDq" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/obj/effect/turf_decal/stripes{
- dir = 10
- },
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"cDu" = (
-/obj/structure/chair/comfy/brown,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/item/radio/intercom/directional/west,
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"cDv" = (
-/obj/effect/landmark/start/atmospheric_technician,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"cEb" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/service/hydroponics/garden)
-"cEt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/trimline/green/end{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"cEu" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"cEw" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "library2"
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Library"
- },
-/turf/open/floor/iron,
-/area/station/service/library)
-"cEH" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"cEP" = (
-/obj/structure/frame/machine,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"cFc" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/lobby)
-"cFg" = (
-/obj/machinery/chem_master,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"cFq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"cFx" = (
-/obj/effect/turf_decal/trimline/brown/corner,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"cFF" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"cFK" = (
-/obj/structure/table/wood/poker,
-/obj/effect/spawner/random/entertainment/dice,
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"cFM" = (
-/obj/structure/window/reinforced/tinted/spawner/directional/west,
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"cFQ" = (
-/turf/closed/wall,
-/area/station/science/auxlab/firing_range)
-"cGh" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"cGn" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"cGt" = (
-/obj/effect/turf_decal/trimline/neutral/corner{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"cGu" = (
-/turf/open/floor/glass/reinforced,
-/area/station/maintenance/floor2/starboard/aft)
-"cGA" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"cGI" = (
-/obj/structure/table,
-/obj/item/paper_bin/construction,
-/obj/item/pen/fountain,
-/turf/open/floor/carpet/blue,
-/area/station/command/heads_quarters/hop)
-"cGM" = (
-/obj/structure/cable,
-/obj/machinery/conveyor{
- dir = 5;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"cGQ" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"cGT" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"cGU" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/trimline/green,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"cGX" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/table,
-/obj/item/raw_anomaly_core/random{
- pixel_x = -5;
- pixel_y = 7
- },
-/obj/item/raw_anomaly_core/random{
- pixel_x = 7;
- pixel_y = 9
- },
-/obj/item/raw_anomaly_core/random{
- pixel_y = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"cHb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/obj/structure/ladder,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/fore)
-"cHd" = (
-/obj/effect/turf_decal/siding/white,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"cHf" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"cHg" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"cHm" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/fore)
-"cHr" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"cHy" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Second Deck Outpost"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"cHz" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/space_heater,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"cHE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"cHK" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 9
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"cHT" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"cHX" = (
-/obj/structure/lattice,
-/turf/open/space/basic,
-/area/space/nearstation)
-"cIc" = (
-/obj/machinery/door/airlock/highsecurity{
- name = "AI Upload"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/structure/sign/departments/aiupload/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"cId" = (
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 8
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"cIl" = (
-/obj/machinery/vending/hydronutrients,
-/obj/effect/turf_decal/siding/green{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"cIo" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/right/directional/west{
- name = "Outer Window"
- },
-/obj/machinery/door/window/brigdoor/left/directional/east{
- name = "Security Desk";
- req_access = list("security")
- },
-/obj/item/folder/red,
-/obj/item/pen,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/security/checkpoint/escape)
-"cIr" = (
-/obj/structure/chair/stool/bar/directional/east,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"cIt" = (
-/obj/machinery/firealarm/directional/south,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"cIE" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 1
- },
-/obj/effect/decal/cleanable/blood/splatter,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"cIJ" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/arrow_cw,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"cIL" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"cIM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"cIN" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"cIT" = (
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"cJh" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"cJi" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"cJt" = (
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"cJu" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark{
- dir = 8
- },
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"cJv" = (
-/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"cJw" = (
-/obj/effect/landmark/start/hangover,
-/obj/machinery/shower/directional/west,
-/turf/open/floor/noslip,
-/area/station/commons/toilet)
-"cJB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate/hydroponics,
-/obj/effect/spawner/random/food_or_drink/seed,
-/obj/effect/spawner/random/food_or_drink/seed,
-/obj/effect/spawner/random/food_or_drink/seed,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"cJI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"cJR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/roboticist,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"cJY" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"cKf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/engineering/glass,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"cKq" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/machinery/light/directional/east,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"cKs" = (
-/obj/structure/closet/firecloset,
-/obj/effect/turf_decal/trimline/red/warning,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"cKv" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"cKC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"cKE" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"cKH" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/aft)
-"cKJ" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"cKM" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"cKS" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/button/elevator/directional/south{
- id = "com_vator"
- },
-/obj/machinery/lift_indicator/directional/south{
- linked_elevator_id = "com_vator";
- pixel_y = -36
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"cLg" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input,
-/turf/open/floor/engine/o2,
-/area/station/engineering/atmos)
-"cLt" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"cLA" = (
-/obj/structure/railing,
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"cLC" = (
-/obj/structure/table,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron,
-/area/station/commons/dorms/room1)
-"cLF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/security/brig)
-"cLG" = (
-/obj/structure/chair/e_chair,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/remains/human,
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"cLI" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"cLQ" = (
-/obj/machinery/door/airlock{
- name = "Locker Room"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"cLX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"cMb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/small/red/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"cMg" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/structure/closet/crate/trashcart/laundry,
-/obj/effect/spawner/random/contraband/prison,
-/obj/item/clothing/under/rank/prisoner,
-/obj/item/clothing/under/rank/prisoner,
-/obj/item/clothing/under/rank/prisoner/skirt,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/item/seeds/tea,
-/obj/item/clothing/under/rank/prisoner/skirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron/cafeteria,
-/area/station/security/prison)
-"cMh" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"cMi" = (
-/obj/effect/turf_decal/trimline/white/arrow_cw{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"cMz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/bluespace_vendor/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"cMA" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"cMB" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/floor1/aft)
-"cMU" = (
-/obj/effect/turf_decal/tile/green/anticorner{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/snack/green,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"cNb" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{
- dir = 8
- },
-/obj/machinery/portable_atmospherics/pump,
-/obj/structure/sign/warning/vacuum{
- pixel_y = 32
- },
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/floor1/aft)
-"cNf" = (
-/obj/item/stack/tile/pod/light,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"cNl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"cNm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Science Maintenance"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"cNx" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"cNA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/bronze/filled,
-/area/station/maintenance/floor1/starboard)
-"cNE" = (
-/obj/structure/mineral_door/paperframe,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"cNH" = (
-/obj/effect/turf_decal/siding/white{
- dir = 9
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"cNQ" = (
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/security/checkpoint)
-"cNR" = (
-/obj/effect/turf_decal/bot/right,
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"cNT" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"cOt" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"cOx" = (
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/prison/garden)
-"cOz" = (
-/obj/machinery/vending/wardrobe/chap_wardrobe,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"cOD" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"cOE" = (
-/obj/effect/turf_decal/trimline/white/line,
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/air_input,
-/turf/open/floor/engine/air,
-/area/station/engineering/atmos)
-"cOI" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/item/radio/intercom/directional/south,
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"cOM" = (
-/obj/effect/decal/cleanable/confetti,
-/obj/effect/turf_decal/siding/blue{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"cOT" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/effect/turf_decal/arrows{
- dir = 4
- },
-/obj/machinery/light/directional/north,
-/obj/effect/landmark/start/bitrunner,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/cargo/bitrunning/den)
-"cPg" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/atmospherics/components/binary/pump/on{
- name = "O2 to Airmix"
- },
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"cPQ" = (
-/obj/structure/railing{
- dir = 5
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 5
- },
-/turf/open/water/no_planet_atmos{
- desc = "Filthy.";
- name = "untreated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"cPR" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/table,
-/obj/item/grenade/chem_grenade/smart_metal_foam{
- pixel_x = -4;
- pixel_y = 6
- },
-/obj/item/grenade/chem_grenade/smart_metal_foam{
- pixel_y = 4
- },
-/obj/item/grenade/chem_grenade/smart_metal_foam{
- pixel_x = 4;
- pixel_y = 2
- },
-/obj/item/grenade/chem_grenade/smart_metal_foam{
- pixel_x = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/engineering/atmos)
-"cPT" = (
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor4/aft)
-"cQa" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"cQj" = (
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"cQm" = (
-/obj/effect/turf_decal/trimline/red/filled/end{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"cQo" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"cQr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"cQz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"cQB" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/structure/tank_dispenser/oxygen,
-/obj/structure/window/spawner/directional/east,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 8
- },
-/area/station/engineering/lobby)
-"cQC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/smes,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"cQL" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 9
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"cQS" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/engineering/atmos/hfr_room)
-"cQY" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"cRd" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Research and Development"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"cRe" = (
-/obj/machinery/status_display/ai/directional/north,
-/obj/structure/secure_safe/caps_spare,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"cRs" = (
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/machinery/recharge_station,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"cRA" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"cRH" = (
-/obj/machinery/light/small/directional/north,
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"cRJ" = (
-/obj/structure/filingcabinet/security,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/command/teleporter)
-"cRL" = (
-/obj/structure/bodycontainer/morgue{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/service/chapel/funeral)
-"cRU" = (
-/obj/machinery/sparker/directional/north{
- id = "Xenobio"
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"cRY" = (
-/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior,
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"cSb" = (
-/obj/structure/table,
-/obj/item/stock_parts/micro_laser,
-/obj/item/stock_parts/servo{
- pixel_x = 15;
- pixel_y = 4
- },
-/obj/item/reagent_containers/dropper{
- pixel_x = -2;
- pixel_y = 9
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/item/flatpack{
- board = /obj/item/circuitboard/machine/flatpacker
- },
-/obj/item/multitool,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"cSc" = (
-/obj/item/food/cornchips/green{
- pixel_x = -8;
- pixel_y = -7
- },
-/obj/item/toy/plush/rouny{
- desc = "That is a rouny.";
- pixel_x = 10;
- pixel_y = 2
- },
-/obj/structure/bed/pod,
-/obj/item/bedsheet/green,
-/obj/effect/landmark/start/janitor,
-/turf/open/floor/eighties,
-/area/station/service/janitor)
-"cSe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/circuit/green,
-/area/station/science/robotics/mechbay)
-"cSk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"cSu" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"cSF" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"cSK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/obj/structure/rack,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"cSQ" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/yellow/fourcorners,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"cSW" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 10
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"cSY" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_yw/style_random,
-/obj/structure/window/spawner/directional/south,
-/obj/structure/window/spawner/directional/north,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"cTb" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"cTk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/entry)
-"cTo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"cTw" = (
-/obj/structure/table/reinforced,
-/obj/machinery/airalarm/directional/south,
-/obj/item/storage/box/evidence,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"cTB" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/atmos)
-"cTJ" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/obj/machinery/airalarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"cTV" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/machinery/airalarm/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"cUb" = (
-/obj/effect/landmark/start/chemist,
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"cUd" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"cUh" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"cUq" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"cUt" = (
-/obj/docking_port/stationary/public_mining_dock,
-/turf/open/floor/plating,
-/area/station/construction/mining/aux_base)
-"cUu" = (
-/obj/machinery/firealarm/directional/north,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/structure/window/spawner/directional/east,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"cUL" = (
-/turf/closed/wall,
-/area/station/cargo/storage)
-"cUN" = (
-/obj/machinery/firealarm/directional/east,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 10
- },
-/obj/structure/rack,
-/obj/item/food/grown/poppy/geranium/fraxinella{
- color = "#00FFFF";
- desc = "A beautiful cyan flower. You get the feeling you won't see one like this here very often."
- },
-/obj/item/clothing/mask/gas/cyborg,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"cUY" = (
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"cVb" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/splatter,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"cVl" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"cVo" = (
-/obj/machinery/door/airlock/command{
- name = "Fuel Storage"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"cVy" = (
-/obj/structure/transport/linear/public,
-/obj/machinery/lift_indicator/directional/east{
- linked_elevator_id = "aft_vator";
- pixel_x = 38;
- pixel_y = -7
- },
-/obj/machinery/elevator_control_panel/directional/east{
- linked_elevator_id = "aft_vator";
- pixel_x = 24;
- preset_destination_names = list("2" = "Supply-Engi Floor", "3" = "Med-Sci Floor", "4" = "Service Floor")
- },
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/aft)
-"cVz" = (
-/obj/machinery/door/airlock/security{
- name = "Gulag"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"cVD" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"cVG" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"cVJ" = (
-/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark/corner,
-/area/station/hallway/floor2/aft)
-"cVK" = (
-/obj/machinery/vending/cigarette,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"cVL" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/commons/locker)
-"cVR" = (
-/obj/machinery/light/small/directional/west,
-/turf/open/openspace,
-/area/station/service/chapel)
-"cVT" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"cVX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"cWf" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/floor4/fore)
-"cWo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"cWu" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"cWw" = (
-/obj/effect/decal/cleanable/vomit/old,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"cWy" = (
-/obj/structure/table,
-/obj/machinery/button/door{
- desc = "Controls the shutters over the cell windows.";
- id = "secure-gate";
- name = "Cell Window Control";
- pixel_x = -6;
- pixel_y = 7;
- req_access = list("armory");
- specialfunctions = 4
- },
-/obj/machinery/button/door{
- desc = "Controls the shutters over the brig windows.";
- id = "briglockdown";
- name = "Brig Lockdown Control";
- pixel_x = 6;
- pixel_y = 7;
- req_access = list("armory")
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"cWD" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 10
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"cWF" = (
-/obj/structure/railing{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"cWK" = (
-/turf/open/floor/iron,
-/area/station/security/range)
-"cWM" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/virology{
- name = "Virology"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"cWO" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"cWR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"cWX" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"cWY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"cWZ" = (
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = -32
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"cXm" = (
-/obj/structure/lattice/catwalk,
-/obj/effect/landmark/carpspawn,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"cXo" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"cXq" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"cXr" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"cXs" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 9
- },
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"cXC" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/port/fore)
-"cXD" = (
-/obj/machinery/suit_storage_unit/security,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"cXG" = (
-/obj/structure/table,
-/obj/item/stack/sheet/glass/fifty,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"cXI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"cXJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/toy/plush/lizard_plushie/green{
- desc = "A stuffed toy which resembles a wayward Ashlander. This one fills you with hope for the future.";
- name = "Bites-The-Wires"
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 10
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"cXK" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"cXP" = (
-/obj/machinery/telecomms/bus/preset_three,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"cYh" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/stripes,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/spawner/random/engineering/tank,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"cYu" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/computer/security/telescreen/entertainment/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"cYx" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/rack,
-/obj/item/wrench,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 9
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/iron/telecomms,
-/area/station/tcommsat/server)
-"cYF" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"cYP" = (
-/obj/structure/closet/wardrobe/black,
-/obj/effect/spawner/random/contraband/permabrig_weapon,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"cYR" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/machinery/door/window/left/directional/south{
- name = "Inner Pipe Access";
- req_access = list("atmospherics")
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"cYS" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"cYW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/security/prison)
-"cYZ" = (
-/obj/structure/chair/sofa/bench{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"cZe" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/escape_pod)
-"cZA" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/item/reagent_containers/cup/bottle/morphine{
- pixel_y = 6
- },
-/obj/item/reagent_containers/syringe,
-/obj/structure/table,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"cZB" = (
-/obj/structure/sign/painting/library{
- pixel_x = -32
- },
-/obj/machinery/holopad,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"cZG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"cZK" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/security/prison)
-"cZS" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"cZT" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/machinery/computer/order_console/cook{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"daa" = (
-/obj/machinery/camera/motion/directional/north{
- c_tag = "Minisat North"
- },
-/obj/machinery/power/smes/super/full,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"dab" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"dac" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/random/trash/cigbutt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"daf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"dan" = (
-/obj/structure/cable,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_x = -32
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"daz" = (
-/obj/machinery/light/directional/north,
-/mob/living/basic/pet/penguin/baby/permanent{
- dir = 8
- },
-/turf/open/misc/snow/actually_safe{
- icon_state = "snow6"
- },
-/area/station/hallway/floor2/fore)
-"daD" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"daT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"daY" = (
-/obj/machinery/door/poddoor/shutters{
- id = "survhang";
- name = "Ancient Hangars"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"dbc" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit)
-"dbe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/obj/structure/table,
-/obj/effect/spawner/random/trash/janitor_supplies,
-/obj/item/stack/sheet/plasteel{
- amount = 10
- },
-/obj/item/stack/rods/fifty,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"dby" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"dbH" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/catwalk_floor,
-/area/station/construction/mining/aux_base)
-"dbK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"dbN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/warning,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"dbU" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/airlock_controller/incinerator_atmos{
- pixel_y = 26
- },
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/bridge_pipe/supply/visible/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"dbZ" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/wood,
-/area/station/hallway/floor4/fore)
-"dch" = (
-/obj/machinery/light/directional/east,
-/obj/structure/sign/poster/random/directional/south,
-/turf/open/floor/carpet/purple,
-/area/station/commons/dorms/apartment1)
-"dcp" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"dcw" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"dcG" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit/departure_lounge)
-"dcH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"dcN" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"dcO" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"dcZ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"ddb" = (
-/obj/structure/closet/crate/solarpanel_small,
-/obj/machinery/door/window/left/directional/west{
- name = "Spare Solars";
- req_access = list("engineering")
- },
-/turf/open/floor/plating/airless,
-/area/station/maintenance/solars/starboard/aft)
-"ddd" = (
-/obj/structure/bodycontainer/morgue{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/service/chapel/funeral)
-"ddg" = (
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"ddj" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/machinery/light/small/red/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"ddv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/bronze,
-/obj/item/toy/eightball,
-/turf/open/floor/bronze,
-/area/station/maintenance/floor1/starboard)
-"ddx" = (
-/obj/structure/curtain/cloth/fancy/mechanical{
- id = "restaurant_booth_a";
- name = "Booth A"
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"ddy" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"ddA" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/machinery/holopad,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"ddH" = (
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/machinery/portable_atmospherics/scrubber,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
-"ddM" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"ddO" = (
-/obj/effect/turf_decal/siding/wideplating_new/corner,
-/obj/effect/turf_decal/siding/wideplating_new/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 8
- },
-/obj/machinery/newscaster/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"ddT" = (
-/obj/structure/closet/radiation,
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 1
- },
-/area/station/engineering/supermatter/room)
-"ddW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"deg" = (
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"dej" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"dek" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"del" = (
-/obj/machinery/door/airlock/shuttle,
-/turf/open/floor/mineral/plastitanium,
-/area/station/maintenance/floor2/starboard/aft)
-"deu" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/arrow_ccw,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"deF" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"deG" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"deK" = (
-/obj/structure/secure_safe/directional/south,
-/turf/open/floor/mineral/plastitanium,
-/area/station/maintenance/floor2/starboard/aft)
-"deM" = (
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"dfa" = (
-/obj/item/flashlight/lamp/green,
-/obj/structure/table/wood,
-/obj/item/instrument/guitar,
-/obj/machinery/duct,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"dff" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"dfi" = (
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"dfl" = (
-/obj/structure/chair/comfy/teal{
- dir = 4
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"dfm" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"dfn" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/commons/locker)
-"dfp" = (
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/spawner/random/trash/grime,
-/turf/open/floor/light/colour_cycle/dancefloor_a,
-/area/station/medical/abandoned)
-"dfs" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"dfw" = (
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/openspace,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"dfA" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"dfB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/window/preopen{
- dir = 1;
- name = "Medbay Lockdown Shutters";
- id = "med_lockdown"
- },
-/turf/open/floor/plating,
-/area/station/medical/medbay/lobby)
-"dfP" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/structure/sign/poster/contraband/red_rum/directional/east,
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/fitness)
-"dfR" = (
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/locker)
-"dfU" = (
-/obj/machinery/computer/pandemic,
-/obj/structure/sign/poster/official/periodic_table/directional/north,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"dgb" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"dge" = (
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"dgp" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"dgq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"dgs" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"dgw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/silver{
- name = "Bathroom"
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment2)
-"dgA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sign/warning/pods/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"dgU" = (
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"dgZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"dhb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/public/glass{
- name = "Petting Zoo"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"dhs" = (
-/obj/structure/table/wood/fancy/royalblack,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/carpet/neon/simple/white,
-/area/station/commons/dorms/room3)
-"dhE" = (
-/obj/machinery/power/turbine/inlet_compressor{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"dhJ" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"dhX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"dhZ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/paramedic)
-"dil" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/aft)
-"dim" = (
-/obj/structure/chair/stool/bar/directional/east,
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"din" = (
-/obj/structure/cable,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"dit" = (
-/obj/effect/decal/cleanable/blood/gibs/old,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"diA" = (
-/turf/closed/wall,
-/area/station/service/kitchen/coldroom)
-"diS" = (
-/obj/machinery/door/airlock/freezer{
- name = "Bathroom"
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"diU" = (
-/obj/effect/decal/cleanable/ash,
-/obj/structure/disposalpipe/broken{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"diW" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"djc" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"djd" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"dje" = (
-/obj/structure/chair/stool/bamboo,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"dji" = (
-/obj/structure/table,
-/obj/machinery/recharger,
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"djs" = (
-/obj/structure/railing,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"djv" = (
-/obj/effect/landmark/start/research_director,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"djx" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/displaycase/forsale/kitchen{
- pixel_y = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"djy" = (
-/turf/closed/wall/mineral/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"djF" = (
-/obj/structure/rack,
-/obj/item/chair/plastic,
-/obj/item/chair/plastic{
- pixel_y = 4
- },
-/obj/item/chair/plastic{
- pixel_y = 8
- },
-/obj/item/chair/plastic{
- pixel_y = 12
- },
-/obj/item/chair/plastic{
- pixel_y = 14
- },
-/obj/effect/turf_decal/trimline/green/warning,
-/turf/open/floor/pod,
-/area/station/maintenance/floor3/starboard)
-"djH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/genetics,
-/obj/structure/cable,
-/obj/machinery/door/airlock/science{
- name = "Genetics"
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"djJ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"djX" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"dke" = (
-/obj/machinery/door/window/left/directional/south,
-/obj/machinery/door/window/left/directional/north,
-/obj/machinery/holopad,
-/turf/open/floor/circuit/green,
-/area/station/science/server)
-"dkf" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"dkh" = (
-/obj/machinery/camera/motion/directional/south{
- name = "Minisat - Starboard";
- network = list("minisat")
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"dkk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible/layer2,
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"dkn" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"dks" = (
-/obj/structure/girder,
-/obj/item/stack/sheet/iron,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"dkD" = (
-/obj/machinery/computer/cargo/request{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"dkP" = (
-/obj/structure/bodycontainer/morgue{
- dir = 2
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"dkQ" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/structure/filingcabinet/chestdrawer,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"dla" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"dlp" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/storage/tcomms)
-"dlt" = (
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"dly" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/safe)
-"dlR" = (
-/obj/item/radio/intercom/directional/north{
- broadcasting = 1;
- frequency = 1447;
- listening = 0;
- name = "Private Channel"
- },
-/obj/machinery/recharge_station,
-/obj/machinery/computer/security/telescreen/minisat/directional/east,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"dlW" = (
-/turf/closed/wall,
-/area/station/maintenance/floor4/starboard/aft)
-"dmc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/eva,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"dmx" = (
-/obj/docking_port/stationary{
- dir = 8;
- dwidth = 12;
- height = 18;
- name = "Emergency Shuttle Dock";
- shuttle_id = "emergency_home";
- width = 32
- },
-/turf/open/space/basic,
-/area/space)
-"dmG" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"dmR" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"dmS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor1/aft)
-"dmU" = (
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"dnx" = (
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"dny" = (
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/cargo/office)
-"dnH" = (
-/obj/structure/table/reinforced,
-/obj/item/reagent_containers/cup/beaker/large,
-/obj/item/reagent_containers/dropper,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"dnJ" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"dnM" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"dnR" = (
-/obj/structure/disposalpipe/junction{
- dir = 2
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"dnS" = (
-/obj/structure/lattice/catwalk,
-/turf/open/space/openspace,
-/area/station/solars/port/aft)
-"dnT" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"dnU" = (
-/turf/closed/wall,
-/area/station/security/office)
-"dog" = (
-/obj/structure/showcase/cyborg/old{
- dir = 8;
- pixel_x = 9;
- pixel_y = 2
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"doh" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"dop" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/stairs/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"dou" = (
-/obj/effect/decal/cleanable/ash,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"doy" = (
-/obj/machinery/light/directional/east,
-/obj/machinery/shower/directional/south,
-/turf/open/floor/iron/freezer,
-/area/station/service/chapel)
-"doC" = (
-/obj/effect/spawner/structure/window/hollow/plasma/middle{
- dir = 4
- },
-/obj/structure/girder/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
-/turf/open/floor/engine,
-/area/station/science/ordnance/burnchamber)
-"doJ" = (
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"doT" = (
-/obj/structure/table/reinforced,
-/obj/item/grenade/chem_grenade{
- pixel_x = -4
- },
-/obj/item/grenade/chem_grenade{
- pixel_x = 5
- },
-/obj/item/grenade/chem_grenade,
-/obj/item/stack/cable_coil,
-/obj/item/screwdriver{
- pixel_y = 10
- },
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"dpd" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/machinery/newscaster/directional/south,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"dps" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"dpC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"dpH" = (
-/turf/closed/wall/r_wall,
-/area/station/cargo/miningdock)
-"dpL" = (
-/turf/closed/wall,
-/area/station/science/lower)
-"dpM" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/arrow_cw{
- dir = 4
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"dpP" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"dpQ" = (
-/obj/structure/filingcabinet/security,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/service/lawoffice)
-"dpR" = (
-/obj/item/paper{
- default_raw_text = "The SM DOES IN FACT LOOP The gas goes in from the top side of the SM, and comes out of the bottom side once out of the SM and into the orange pipes it goes out into space. The gas cools in space and then comes back to the filters to be put into the SM again. Remember, the gas is not sent to space but is sent to a room north of the SM to be recycled. You'll need to set that up.";
- name = "HOW TO SET UP THE SM"
- },
-/obj/structure/table/reinforced,
-/obj/machinery/light/directional/west,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"dqe" = (
-/obj/effect/turf_decal/siding/wood/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"dqm" = (
-/obj/structure/closet/crate/freezer,
-/obj/item/reagent_containers/blood/random,
-/obj/item/reagent_containers/blood/random,
-/obj/item/reagent_containers/blood/random,
-/obj/item/reagent_containers/blood/random,
-/obj/item/reagent_containers/blood/o_plus{
- pixel_x = -2;
- pixel_y = -1
- },
-/obj/item/reagent_containers/blood/o_minus,
-/obj/item/reagent_containers/blood/b_plus,
-/obj/item/reagent_containers/blood/b_minus,
-/obj/item/reagent_containers/blood/a_plus,
-/obj/item/reagent_containers/blood/a_minus,
-/obj/item/reagent_containers/blood/lizard,
-/obj/item/reagent_containers/blood/ethereal,
-/obj/item/reagent_containers/blood{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/reagent_containers/blood{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/reagent_containers/blood{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/effect/turf_decal/box/white,
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"dqn" = (
-/obj/machinery/power/shuttle_engine/heater{
- icon_state = "router"
- },
-/turf/closed/wall,
-/area/station/maintenance/floor1/port/aft)
-"dqB" = (
-/obj/item/clothing/mask/breath{
- pixel_x = -4
- },
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/mask/breath{
- pixel_x = 4
- },
-/obj/structure/table,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"dqF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/broken/directional/south,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"dqM" = (
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/brown/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/landmark/start/bitrunner,
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 8
- },
-/area/station/cargo/bitrunning/den)
-"dqQ" = (
-/turf/closed/wall/r_wall,
-/area/station/security/medical)
-"dqV" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/atmos)
-"dqX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-14";
- location = "2-13"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"drk" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"drm" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"dro" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/dim/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"drp" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/starboard/fore)
-"drw" = (
-/obj/structure/closet/secure_closet/captains,
-/obj/item/camera,
-/obj/machinery/status_display/evac/directional/north,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"drA" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"drB" = (
-/obj/machinery/processor/slime,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"drD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/button/door/directional/south{
- id = "law-priv";
- name = "Shutters"
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"dsb" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"dsl" = (
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"dso" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"dsv" = (
-/obj/item/flamethrower,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"dsz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"dsB" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"dtb" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Break Room"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/breakroom)
-"dtc" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 4
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"dtj" = (
-/obj/structure/window/reinforced/tinted/spawner/directional/west,
-/obj/structure/filingcabinet,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"dtl" = (
-/obj/machinery/door/airlock/public{
- name = "Funeral Hall"
- },
-/obj/effect/mapping_helpers/airlock/access/all/service/crematorium,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"dtm" = (
-/obj/machinery/camera/directional/east{
- c_tag = "Cytology - Cytology Containment"
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"dts" = (
-/obj/effect/turf_decal/trimline/purple/arrow_ccw,
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"dtv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"dtx" = (
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"dty" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"dtI" = (
-/obj/structure/table/reinforced,
-/obj/item/clothing/glasses/welding,
-/obj/item/clothing/head/utility/welding,
-/obj/item/radio/intercom/directional/north,
-/obj/effect/turf_decal/trimline/dark_blue/end{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"dtJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"dtM" = (
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"dtO" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/space_heater,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"dtU" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"dtX" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"dtY" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"dui" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/siding/wideplating_new/dark{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"dus" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"duu" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "arrivalsprivacy";
- name = "Arrivals Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/hallway/secondary/entry)
-"duv" = (
-/obj/structure/holosign/barrier,
-/obj/effect/decal/cleanable/glass,
-/obj/item/shard,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"duw" = (
-/obj/machinery/status_display/evac/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/purple,
-/area/station/maintenance/floor1/port/aft)
-"duC" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"duZ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/camera/directional/south{
- c_tag = "Security - Shooting Range"
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/range)
-"dvc" = (
-/obj/structure/sign/poster/contraband/random/directional/west,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 8
- },
-/obj/item/plant_analyzer,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"dvA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"dvB" = (
-/obj/machinery/light/directional/east,
-/obj/machinery/smartfridge/drying,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"dvC" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Garden"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"dvF" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/white/arrow_ccw{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/secondary/entry)
-"dvJ" = (
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"dvP" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/status_display/ai/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"dvT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"dwi" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"dwx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"dwE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/warning/vacuum/external{
- pixel_x = 32
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"dwG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"dwN" = (
-/obj/machinery/chem_master,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"dxd" = (
-/turf/open/floor/engine/o2,
-/area/station/engineering/atmos)
-"dxr" = (
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = 32
- },
-/obj/effect/spawner/random/maintenance,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"dxu" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"dxv" = (
-/obj/machinery/griddle{
- name = "hibachi grill"
- },
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"dxz" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"dxD" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"dxE" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"dxG" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/service/hydroponics/garden)
-"dxK" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"dxP" = (
-/obj/structure/punching_bag,
-/turf/open/floor/noslip,
-/area/station/commons/fitness)
-"dxS" = (
-/obj/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"dxY" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/medical/office)
-"dya" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/table,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"dyk" = (
-/obj/structure/transit_tube/station/dispenser{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"dyo" = (
-/obj/machinery/door/airlock/medical{
- name = "Recovery Room"
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/patients_rooms)
-"dyq" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/aft)
-"dyt" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"dyG" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/sign/departments/medbay/alt/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"dyQ" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/vending/wallmed/directional/north,
-/obj/item/radio/intercom/directional/west,
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"dyS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"dyW" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/fore)
-"dyX" = (
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 8
- },
-/obj/machinery/flasher/directional/west{
- id = "secentranceflasher"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"dzg" = (
-/obj/machinery/light/directional/west,
-/obj/structure/chair/sofa/middle/maroon{
- dir = 4
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"dzo" = (
-/obj/machinery/computer/mech_bay_power_console{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 6
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/warehouse)
-"dzq" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/structure/table/reinforced,
-/obj/item/reagent_containers/cup/glass/shaker,
-/obj/item/holosign_creator/robot_seat/bar,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"dzr" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "fore_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"dzs" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/secondary/exit)
-"dzB" = (
-/obj/structure/marker_beacon/burgundy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"dzE" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/detective,
-/obj/machinery/door/airlock/security/glass{
- name = "Detective's Backroom"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"dzM" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"dzQ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"dzR" = (
-/obj/structure/closet/emcloset,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"dzY" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/directional,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"dAc" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Cafeteria"
- },
-/obj/effect/turf_decal/tile/bar{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/corner,
-/area/station/cargo/miningdock)
-"dAe" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/table/wood,
-/obj/item/book/manual/wiki/security_space_law{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/deputy,
-/obj/machinery/camera/directional/north{
- c_tag = "Security - Head of Security's Office"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"dAi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"dAk" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"dAn" = (
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"dAo" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/maintenance/solars/starboard/fore)
-"dAp" = (
-/obj/item/radio/intercom/directional/east,
-/obj/structure/bookcase/random/nonfiction,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"dAr" = (
-/obj/machinery/hydroponics/soil,
-/obj/machinery/camera/directional/west{
- c_tag = "Prison Forestry";
- network = list("ss13","prison")
- },
-/obj/machinery/light/directional/west,
-/turf/open/misc/dirt/jungle,
-/area/station/security/prison/garden)
-"dAB" = (
-/obj/structure/closet/firecloset,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"dAF" = (
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/airlock/medical/glass{
- name = "Triage"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"dAI" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- name = "Ports To Supermatter"
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"dAN" = (
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"dAU" = (
-/obj/effect/decal/cleanable/blood/tracks,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"dBb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/floodlight_frame,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"dBf" = (
-/obj/item/kirbyplants/random,
-/obj/structure/sign/painting/library{
- pixel_x = 32
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"dBh" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"dBj" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"dBo" = (
-/obj/structure/sign/poster/official/cleanliness/directional/west,
-/obj/machinery/holopad,
-/obj/machinery/camera/directional/west{
- name = "Security - Medical"
- },
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"dBu" = (
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"dBw" = (
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"dBO" = (
-/obj/effect/turf_decal/siding/wideplating,
-/obj/structure/table/reinforced,
-/obj/item/stack/sheet/mineral/plasma/five,
-/obj/item/clothing/glasses/science,
-/obj/machinery/light/cold/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"dBY" = (
-/obj/machinery/door/airlock{
- name = "Janitor's Closet"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/service/janitor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/service/janitor)
-"dBZ" = (
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"dCt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"dCx" = (
-/obj/structure/closet/secure_closet/psychology,
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"dCD" = (
-/obj/effect/spawner/random/entertainment/arcade,
-/obj/machinery/light/blacklight/directional/north,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"dCK" = (
-/turf/closed/wall/r_wall,
-/area/station/command/bridge)
-"dCL" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"dCU" = (
-/turf/closed/wall,
-/area/station/commons/dorms/room2)
-"dCW" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"dDk" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"dDs" = (
-/obj/machinery/vending/clothing,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"dDu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/stack/cable_coil/cut,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"dDv" = (
-/obj/machinery/holopad,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"dDw" = (
-/obj/structure/bed,
-/obj/effect/landmark/start/detective,
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"dDz" = (
-/obj/machinery/computer/records/security{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"dDC" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"dDF" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"dDG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"dDH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/barricade/wooden/crude,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"dDR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/window/left/directional/north{
- name = "Infirmary"
- },
-/turf/open/floor/iron/white/side{
- dir = 10
- },
-/area/station/security/medical)
-"dEa" = (
-/obj/structure/closet/crate,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/spawner/random/engineering/tool,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"dEb" = (
-/mob/living/carbon/human/species/monkey,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"dEc" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor1/port/aft)
-"dEq" = (
-/obj/structure/chair/stool/directional/east,
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"dEt" = (
-/turf/closed/wall,
-/area/station/maintenance/floor2/starboard/aft)
-"dED" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 5
- },
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"dEJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"dEN" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/item/camera,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"dEO" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"dEQ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"dFb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/obj/structure/ladder,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"dFd" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"dFj" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/button/door/directional/east{
- id = "arrivalsprivacy";
- name = "Privacy Control"
- },
-/obj/structure/table/reinforced,
-/obj/item/radio/headset{
- pixel_x = -3;
- pixel_y = -2
- },
-/obj/item/radio/headset,
-/obj/item/radio/headset{
- pixel_x = 3;
- pixel_y = 2
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"dFn" = (
-/obj/structure/sign/poster/random/directional/north,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 5
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"dFq" = (
-/obj/structure/cable,
-/obj/machinery/power/terminal,
-/obj/machinery/power/port_gen/pacman,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/plating,
-/area/station/engineering/gravity_generator)
-"dFy" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/service/hydroponics/garden)
-"dFL" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"dFN" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"dFR" = (
-/obj/machinery/power/emitter,
-/obj/machinery/camera{
- c_tag = "Secure Storage";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"dFT" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/lobby)
-"dFZ" = (
-/obj/structure/railing,
-/obj/machinery/light/small/red/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"dGa" = (
-/obj/effect/turf_decal/stripes,
-/obj/effect/decal/cleanable/xenoblood,
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"dGe" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/reinforced,
-/obj/item/clothing/suit/toggle/labcoat,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"dGf" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"dGo" = (
-/turf/open/floor/engine/hull/reinforced,
-/area/station/science/xenobiology)
-"dGp" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"dGE" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"dGF" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"dGG" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"dGS" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor3/fore)
-"dHa" = (
-/obj/structure/closet/boxinggloves,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"dHf" = (
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/floor1/aft)
-"dHg" = (
-/obj/structure/table,
-/obj/item/pipe_dispenser,
-/obj/item/pipe_dispenser,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"dHn" = (
-/obj/structure/closet/emcloset,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"dHq" = (
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"dHD" = (
-/obj/structure/grille,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/security/checkpoint)
-"dHR" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"dHY" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"dId" = (
-/obj/structure/chair/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"dIh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/table_or_rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"dIi" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"dIl" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"dIv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"dIx" = (
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen/diner)
-"dIz" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"dIJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"dIO" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing/corner,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"dIQ" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"dIU" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"dIX" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"dJf" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"dJh" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/bar/atrium)
-"dJo" = (
-/obj/effect/landmark/navigate_destination/gateway,
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"dJq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"dJs" = (
-/obj/machinery/vatgrower{
- dir = 4
- },
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/obj/machinery/status_display/evac/directional/south,
-/turf/open/misc/sandy_dirt,
-/area/station/science/cytology)
-"dJu" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/space/openspace,
-/area/station/solars/starboard/aft)
-"dJx" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/closet/l3closet/virology,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"dJy" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"dJC" = (
-/obj/machinery/light/small/dim/directional/east,
-/turf/open/openspace,
-/area/station/command/heads_quarters/hop)
-"dJF" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "law-priv";
- name = "Law Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/service/lawoffice)
-"dJI" = (
-/obj/effect/landmark/start/research_director,
-/turf/open/floor/engine,
-/area/station/command/heads_quarters/rd)
-"dJL" = (
-/obj/effect/spawner/random/entertainment/arcade{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"dJO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"dJV" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"dKb" = (
-/obj/structure/kitchenspike,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"dKf" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"dKk" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"dKz" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"dKF" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"dKJ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/south,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/railing/corner/end/flip{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"dKL" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"dKS" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"dKU" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"dLe" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"dLj" = (
-/obj/structure/chair/plastic,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"dLu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/cigbutt,
-/obj/structure/sign/poster/contraband/random/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"dLL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"dLT" = (
-/obj/machinery/door/airlock/external{
- name = "Atmospherics External Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal/incinerator)
-"dLV" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Hydroponics - Garden"
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"dMb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"dMj" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/wood{
- name = "Dining Room"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/kitchen/diner)
-"dMk" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"dMm" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"dMr" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "Escape Airlock"
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"dMt" = (
-/obj/machinery/computer/security/telescreen/minisat/directional/east,
-/obj/machinery/camera/directional/south{
- c_tag = "MiniSat Exterior Access";
- network = list("minisat")
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"dMA" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/white/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock{
- name = "Arrivals"
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"dMO" = (
-/obj/structure/sign/warning/chem_diamond/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"dMV" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"dMY" = (
-/obj/structure/bed/double,
-/obj/item/bedsheet/captain/double,
-/obj/effect/landmark/start/captain,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"dNm" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"dNn" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 4
- },
-/obj/effect/landmark/start/bartender,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"dNp" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"dNx" = (
-/obj/machinery/door/airlock/engineering/glass{
- name = "Engineering"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "engimain"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/construction,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"dNy" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"dNA" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"dNG" = (
-/obj/structure/rack,
-/obj/item/pai_card,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"dNH" = (
-/obj/effect/turf_decal/delivery,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"dNI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/delivery,
-/obj/item/stack/sheet/cloth/five,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"dNL" = (
-/obj/structure/frame/machine,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"dOa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"dOg" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"dOl" = (
-/obj/structure/chair/plastic{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"dOs" = (
-/turf/open/floor/pod,
-/area/station/cargo/storage)
-"dOv" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/food/drug/moon_rock,
-/obj/item/food/drug/moon_rock{
- pixel_x = 12
- },
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"dOD" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"dOI" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/storage/tech)
-"dOK" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/pen,
-/obj/item/taperecorder,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"dOM" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"dOQ" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"dPf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/office)
-"dPh" = (
-/obj/effect/turf_decal/siding/blue/corner{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"dPk" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"dPv" = (
-/obj/machinery/chem_master/condimaster{
- desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments.";
- name = "SapMaster XP"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"dPx" = (
-/obj/machinery/computer/quantum_console{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_corner,
-/area/station/cargo/bitrunning/den)
-"dPC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"dPH" = (
-/turf/closed/wall/r_wall,
-/area/station/security/brig)
-"dPS" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Brig Fore Entrance"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/machinery/scanner_gate/preset_guns,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"dPT" = (
-/obj/machinery/light/small/red/directional/east,
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"dQg" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"dQi" = (
-/obj/effect/spawner/random/engineering/material_cheap,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"dQn" = (
-/obj/structure/sign/poster/contraband/power,
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"dQo" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/warehouse)
-"dQs" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"dQH" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"dQI" = (
-/obj/structure/girder/reinforced,
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/engineering/atmos/project)
-"dQM" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark,
-/obj/effect/turf_decal/siding/wideplating_new/dark/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/carbon_output,
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"dQQ" = (
-/obj/effect/turf_decal/tile/blue/anticorner{
- dir = 4
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/ai_monitored/turret_protected/ai)
-"dQU" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/engineering_all,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"dQX" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/machinery/quantumpad,
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"dRb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/ash,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"dRn" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"dRs" = (
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"dRE" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"dRI" = (
-/obj/structure/filingcabinet/security,
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"dRR" = (
-/obj/machinery/door/airlock{
- name = "Locker Room"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"dRX" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"dRY" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/airlock/external{
- name = "Escape Airlock";
- space_dir = 4
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"dSa" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/airlock/command/glass{
- name = "Bridge"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/command/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "bridge_blast";
- name = "Bridge Blast Door"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"dSe" = (
-/obj/effect/spawner/random/vending/colavend,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"dSf" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"dSl" = (
-/obj/structure/table,
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/machinery/reagentgrinder{
- pixel_x = 6;
- pixel_y = 6
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"dSm" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"dSn" = (
-/obj/structure/closet{
- name = "Evidence Closet 5"
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"dSv" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/reagent_containers/pill/happinesspsych{
- desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug.";
- list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10);
- name = "strange pill";
- pixel_x = 9
- },
-/obj/item/reagent_containers/pill/happinesspsych{
- desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug.";
- list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10);
- name = "strange pill"
- },
-/obj/item/reagent_containers/pill/happinesspsych{
- desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug.";
- list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10);
- name = "strange pill";
- pixel_x = -9;
- pixel_y = -8
- },
-/obj/item/reagent_containers/pill/happinesspsych{
- desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug.";
- list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10);
- name = "strange pill";
- pixel_y = -8
- },
-/obj/item/reagent_containers/pill/happinesspsych{
- desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug.";
- list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10);
- name = "strange pill";
- pixel_x = -9
- },
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"dSw" = (
-/obj/structure/table,
-/obj/item/storage/medkit/regular,
-/obj/item/storage/backpack/duffelbag/sec/surgery{
- pixel_y = 5
- },
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"dSE" = (
-/obj/machinery/shower/directional/south,
-/turf/open/floor/iron/freezer,
-/area/station/service/chapel)
-"dSF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"dSH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/aft)
-"dSI" = (
-/obj/structure/grille,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"dSS" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle,
-/obj/structure/girder/reinforced,
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible,
-/turf/open/floor/plating,
-/area/station/engineering/atmos/pumproom)
-"dTe" = (
-/obj/structure/chair/wood/wings{
- dir = 4
- },
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"dTk" = (
-/obj/item/storage/pill_bottle,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_x = -32
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/light/colour_cycle/dancefloor_a,
-/area/station/medical/abandoned)
-"dTm" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"dTn" = (
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"dTB" = (
-/obj/structure/table/wood,
-/obj/item/newspaper{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/folder/red,
-/obj/item/pen,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"dTF" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/filled/corner,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"dTJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/virology{
- id_tag = "viro-iso";
- name = "Virology Isolation"
- },
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/medical/virology/isolation)
-"dTN" = (
-/obj/structure/table/wood,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"dTX" = (
-/obj/machinery/telecomms/server/presets/security,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"dTY" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/detective,
-/obj/machinery/door/airlock/security{
- name = "Detective's Office"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/checkpoint)
-"dUh" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"dUi" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/sign/warning/biohazard/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"dUj" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/machinery/disposal/bin,
-/obj/machinery/button/door/directional/south{
- name = "Medbay Lockdown Shutters";
- id = "med_lockdown"
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"dUr" = (
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor1/aft)
-"dUF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"dUJ" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/aft)
-"dUP" = (
-/obj/machinery/disposal/bin{
- name = "Book Returns"
- },
-/obj/structure/disposalpipe/trunk{
- dir = 2
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/structure/disposalpipe/trunk,
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron,
-/area/station/service/library)
-"dUQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/cargo/miningoffice)
-"dUT" = (
-/obj/structure/cable,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"dUU" = (
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"dUW" = (
-/obj/effect/turf_decal/trimline/white/arrow_ccw{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"dUY" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/half,
-/area/station/command/gateway)
-"dVf" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"dVi" = (
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"dVk" = (
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 1
- },
-/obj/machinery/door/poddoor/shutters{
- id = "evashutter";
- name = "E.V.A. Storage Shutter"
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"dVt" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"dVx" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/yellow/fourcorners,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"dVy" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"dVB" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"dVD" = (
-/obj/effect/spawner/random/engineering/canister,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"dVH" = (
-/turf/open/misc/asteroid/snow/standard_air{
- icon_state = "snow10"
- },
-/area/station/maintenance/floor2/port/aft)
-"dVQ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/textured_half,
-/area/station/cargo/office)
-"dVV" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"dVW" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"dWg" = (
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"dWh" = (
-/obj/structure/cable,
-/obj/machinery/meter/monitored/waste_loop,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"dWi" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"dWj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"dWl" = (
-/obj/machinery/vending/hydroseeds,
-/obj/effect/turf_decal/siding/green{
- dir = 10
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"dWn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/status_display/ai/directional/west,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"dWt" = (
-/obj/machinery/camera/directional/north{
- name = "Law Backroom"
- },
-/obj/machinery/light/small/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/service/lawoffice)
-"dWu" = (
-/obj/structure/table/wood,
-/obj/machinery/fax{
- fax_name = "Captain's Office";
- name = "Captain's Fax Machine"
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"dWv" = (
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"dWz" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 5
- },
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"dWF" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark,
-/obj/effect/turf_decal/siding/wideplating_new/dark{
- dir = 1
- },
-/obj/machinery/air_sensor/carbon_tank,
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"dWG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"dWK" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/box/white,
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"dWL" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/effect/landmark/start/hangover,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/floor4/fore)
-"dWT" = (
-/obj/effect/turf_decal/tile/green/fourcorners,
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/machinery/door/airlock/virology{
- autoclose = 0;
- frequency = 1449;
- id_tag = "virology_airlock_exterior";
- name = "Virology Exterior Airlock"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/medical/virology,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "viro"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"dXc" = (
-/obj/machinery/air_sensor/ordnance_burn_chamber,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/burnchamber)
-"dXh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"dXo" = (
-/obj/structure/weightmachine,
-/turf/open/floor/noslip,
-/area/station/commons/fitness)
-"dXp" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"dXr" = (
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"dXy" = (
-/obj/structure/table/glass,
-/obj/machinery/defibrillator_mount/directional/east,
-/obj/item/storage/box/syringes{
- pixel_y = 6
- },
-/obj/item/stack/medical/mesh,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"dXz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = -32
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"dXA" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner,
-/area/station/hallway/floor2/aft)
-"dXJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"dXX" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/rnd/production/techfab/department/security,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"dXY" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"dYf" = (
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"dYh" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor4/aft)
-"dYj" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"dYl" = (
-/obj/effect/mapping_helpers/burnt_floor,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"dYq" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/mineral/plastitanium,
-/area/station/maintenance/floor2/starboard)
-"dYB" = (
-/obj/effect/turf_decal/tile/green/anticorner,
-/obj/structure/rack,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/mask/breath,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"dYM" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/reinforced/rglass,
-/obj/item/storage/belt/medical,
-/obj/item/storage/belt/medical{
- pixel_y = 6
- },
-/obj/item/storage/belt/medical{
- pixel_y = 12
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"dYX" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"dZa" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"dZf" = (
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 5
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"dZt" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/railing,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"dZz" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"dZQ" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/machinery/air_sensor/oxygen_tank,
-/turf/open/floor/engine/o2,
-/area/station/engineering/atmos)
-"dZW" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/hedge,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"eac" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction,
-/turf/open/floor/iron/checker,
-/area/station/commons/locker)
-"eae" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"eai" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"eao" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/junction/yjunction,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"eas" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/commons/locker)
-"eaB" = (
-/obj/structure/chair/comfy/carp,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"eaI" = (
-/obj/structure/railing,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"eaW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"ebl" = (
-/obj/effect/turf_decal/siding/wideplating_new/end{
- dir = 1
- },
-/turf/open/floor/engine/airless,
-/area/space/nearstation)
-"ebm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"ebn" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"ebz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"ebA" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"ebE" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"ebG" = (
-/obj/structure/dresser,
-/turf/open/floor/carpet/purple,
-/area/station/commons/dorms/apartment1)
-"ebK" = (
-/turf/closed/wall,
-/area/station/security/checkpoint)
-"ebN" = (
-/obj/effect/turf_decal/siding/white{
- dir = 9
- },
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"ebO" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"ebY" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"ecf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/paper_bin/construction{
- pixel_x = -6
- },
-/obj/item/paper_bin/construction,
-/obj/item/paper_bin/construction{
- pixel_x = 6
- },
-/obj/item/storage/crayons{
- pixel_x = 6;
- pixel_y = -3
- },
-/turf/open/floor/iron,
-/area/station/security/prison)
-"ecl" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/curtain/cloth,
-/obj/structure/closet/secure_closet/personal/patient,
-/turf/open/floor/wood/parquet,
-/area/station/medical/patients_rooms)
-"ecB" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"ecF" = (
-/obj/effect/decal/cleanable/food/flour,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"ecI" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"ecN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"ede" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"edj" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/security/prison/visit)
-"edm" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"edA" = (
-/obj/structure/ladder,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"edI" = (
-/obj/structure/dresser,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/room1)
-"edO" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"edS" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"edT" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/vending/wallmed/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"edX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Curator's Desk"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/library,
-/turf/open/floor/wood/parquet,
-/area/station/service/library)
-"edZ" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/ai_monitored/turret_protected/ai)
-"eea" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"eee" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/fore)
-"eem" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"eep" = (
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"eey" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"eeB" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible,
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/supermatter/room)
-"eeC" = (
-/obj/item/paperplane,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"eeL" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"eeN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/gibs/up,
-/obj/effect/decal/cleanable/blood,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"eeP" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 5
- },
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"eeQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"efa" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"efb" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"efe" = (
-/obj/structure/chair/stool/bar/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"efn" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/mecha_part_fabricator{
- dir = 4
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"efr" = (
-/obj/structure/table,
-/obj/item/gun/ballistic/revolver/russian,
-/obj/machinery/light/dim,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"efz" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"efF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"efW" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"efX" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"efY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"egx" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"egz" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"egD" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"egG" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/siding/thinplating_new/corner{
- dir = 8
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"egJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"ehg" = (
-/obj/machinery/fax{
- fax_name = "Cargo Office";
- name = "Cargo Office Fax Machine"
- },
-/obj/structure/table,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"ehh" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/item/kirbyplants/random,
-/obj/item/radio/intercom/directional/west,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"ehk" = (
-/obj/structure/table/wood,
-/obj/item/folder/blue,
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"ehl" = (
-/obj/effect/turf_decal/trimline/purple/warning,
-/obj/machinery/light/red/dim/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"ehm" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"eho" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"ehr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/item/electronics/apc{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/electronics/apc,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"ehu" = (
-/obj/structure/chair/sofa/corp{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"ehA" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"ehD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"ehG" = (
-/turf/closed/wall,
-/area/station/cargo/miningdock)
-"ehL" = (
-/obj/machinery/atmospherics/components/binary/crystallizer{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"ehO" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"ehQ" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"ehR" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/security/glass{
- name = "Departure Lounge Security Post"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"ehX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/command/teleporter)
-"eir" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"eiw" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-13";
- location = "3-12"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"eiD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"eiJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"eiM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"eiO" = (
-/obj/effect/turf_decal/stripes/end,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"eiP" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white/textured_edge,
-/area/station/medical/abandoned)
-"eiV" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 1
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"ejb" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/hallway/secondary/entry)
-"ejl" = (
-/obj/structure/table/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/storage/toolbox/mechanical,
-/obj/item/knife,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"ejr" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 8
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"ejE" = (
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"ejF" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/airalarm/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"ejG" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/aft)
-"ejI" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"ejK" = (
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"ejN" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/port/aft)
-"ejP" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"ejS" = (
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"ejZ" = (
-/obj/structure/rack,
-/obj/item/circuitboard/machine/telecomms/broadcaster,
-/obj/item/circuitboard/machine/telecomms/bus,
-/obj/item/circuitboard/machine/telecomms/processor,
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"ekj" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"ekk" = (
-/obj/structure/rack,
-/obj/item/trash/boritos/red{
- pixel_x = 4;
- pixel_y = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"eky" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ekB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"ekI" = (
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/atmos/hfr_room)
-"ekY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/green/visible{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"ell" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"elB" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"elD" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"elE" = (
-/obj/effect/mapping_helpers/airlock/access/any/science/ordnance_storage,
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 4
- },
-/obj/machinery/door/airlock/research/glass{
- name = "Ordnance Lab"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/siding/thinplating/dark/end{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"elI" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/public/glass{
- name = "Departures"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"elX" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"ema" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"emg" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"emj" = (
-/obj/effect/turf_decal/trimline/yellow/corner,
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/landmark/start/station_engineer,
-/turf/open/floor/iron/corner,
-/area/station/engineering/lobby)
-"emk" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"eml" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"emp" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/reagent_containers/cup/blastoff_ampoule,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"emr" = (
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"emu" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin,
-/obj/effect/turf_decal/siding/wideplating,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 1
- },
-/obj/machinery/light/cold/directional/north,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"emv" = (
-/obj/machinery/camera{
- c_tag = "Atmos Tank #3 - Mixed Air";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine/air,
-/area/station/engineering/atmos)
-"emx" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"emI" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"emJ" = (
-/obj/item/kitchen/fork/plastic,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"emK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light_switch/directional/south{
- pixel_x = 8
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"emP" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"emS" = (
-/obj/machinery/door_buttons/access_button{
- dir = 1;
- idDoor = "virology_airlock_exterior";
- idSelf = "virology_airlock_control";
- name = "Virology Access Button";
- pixel_y = -24;
- req_access = list("virology")
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/arrows/white{
- dir = 8;
- pixel_y = 16
- },
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"emU" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"emV" = (
-/obj/structure/closet/secure_closet/brig/genpop,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/item/card/id/advanced/prisoner/two,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"emZ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"enl" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/disposal/bin/tagger,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"enp" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-7";
- location = "2-6"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"enB" = (
-/obj/machinery/door/window/brigdoor/left/directional/north,
-/mob/living/basic/mothroach,
-/turf/open/floor/noslip,
-/area/station/maintenance/floor1/port)
-"enE" = (
-/obj/structure/table/wood,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/gun/ballistic/revolver/russian,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"enF" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"enJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"enX" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"enZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"eod" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"eoe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/button/door/directional/north{
- id = "public_toilets_a";
- name = "Door Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"eop" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"eov" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/flashlight/flare,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"eoG" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"eoI" = (
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"eoL" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/machinery/airalarm/directional/west,
-/obj/effect/decal/cleanable/blood/old,
-/obj/structure/closet/crate/bin{
- name = "biowaste bin"
- },
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"eoQ" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"epb" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"epk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/box,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"epm" = (
-/obj/structure/railing,
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"eps" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/broken/directional/north,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"epu" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/obj/machinery/status_display/ai/directional/north,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"epv" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/window/spawner/directional/east,
-/obj/structure/window/spawner/directional/north,
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"epz" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 6
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"epB" = (
-/obj/machinery/destructive_scanner,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"epO" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/side{
- dir = 8
- },
-/area/station/medical/pharmacy)
-"epQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/marker_beacon/ten,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"eqa" = (
-/obj/structure/chair/comfy/brown{
- dir = 8
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/structure/window/spawner/directional/east,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"eqk" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"eqs" = (
-/obj/effect/turf_decal/stripes,
-/obj/machinery/conveyor_switch/oneway{
- id = "disposals"
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/maintenance/disposal)
-"eqF" = (
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"eqK" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"eqN" = (
-/obj/structure/table/reinforced,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"eqQ" = (
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"eqV" = (
-/obj/structure/disposalpipe/trunk/multiz/down,
-/turf/open/openspace,
-/area/station/maintenance/floor4/port/aft)
-"erp" = (
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor4/aft)
-"erN" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"erR" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock{
- name = "Arrivals"
- },
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"erU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"erY" = (
-/obj/machinery/vending/wardrobe/bar_wardrobe,
-/turf/open/floor/wood,
-/area/station/service/bar)
-"esk" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/flip,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"ess" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"esu" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"esx" = (
-/obj/machinery/suit_storage_unit/atmos,
-/obj/machinery/light/directional/east,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/office)
-"esz" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating/airless,
-/area/station/maintenance/disposal)
-"esB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"esG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-0";
- location = "1-19"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"esH" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"esR" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/food/grown/harebell,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"esV" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/north,
-/obj/machinery/power/energy_accumulator/tesla_coil/anchored,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible/layer2,
-/obj/machinery/camera{
- c_tag = "Supermatter Engine Camera";
- dir = 8;
- network = list("ss13","engine")
- },
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"etb" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/north,
-/obj/structure/rack,
-/obj/item/stock_parts/power_store/cell/lead,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"etj" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"etv" = (
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"etA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"etV" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 6
- },
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"eub" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"eud" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"euu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"euy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"euA" = (
-/obj/machinery/vending/autodrobe,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"euC" = (
-/obj/structure/table/wood,
-/obj/item/storage/bag/plants/portaseeder,
-/obj/item/shovel/spade,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"euS" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/obj/machinery/status_display/evac/directional/north,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"euW" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"evi" = (
-/obj/machinery/door/airlock/science{
- name = "Monkey Atrium"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/science/genetics,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"evn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"evo" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/nuke_storage)
-"evt" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/light/directional/north,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"evB" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/smooth_large,
-/area/station/tcommsat/server)
-"evI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"evN" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/circuitboard/machine/processor{
- pixel_y = 10
- },
-/obj/item/circuitboard/machine/oven,
-/obj/item/circuitboard/machine/microwave{
- pixel_y = -10
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/vacant_room/commissary)
-"evR" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/construction)
-"evW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"ewd" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"ewm" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/camera/directional/south{
- c_tag = "Genetics Lab"
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"ewp" = (
-/obj/effect/turf_decal/trimline/white/filled/corner{
- color = "#065C93";
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/command/bridge)
-"ewq" = (
-/obj/machinery/washing_machine,
-/obj/machinery/status_display/ai/directional/west,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"ewz" = (
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 1
- },
-/obj/effect/turf_decal/caution/stand_clear,
-/turf/open/floor/iron/smooth_edge,
-/area/station/science/robotics/mechbay)
-"ewA" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"ewB" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"ewH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"ewK" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"ewM" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output,
-/obj/effect/turf_decal/trimline/red/line,
-/turf/open/floor/engine/n2,
-/area/station/engineering/atmos)
-"ewW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/structure/railing/corner/end{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"ewY" = (
-/obj/structure/sign/poster/random/directional/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"exc" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"exe" = (
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/openspace,
-/area/station/maintenance/floor4/starboard/fore)
-"exl" = (
-/obj/structure/disposalpipe/junction{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"exp" = (
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"exw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"exL" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"exN" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/chair/comfy/shuttle{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"eyk" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/sign/poster/contraband/got_wood/directional/west,
-/turf/open/floor/wood,
-/area/station/maintenance/floor1/port/aft)
-"eyo" = (
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"eys" = (
-/obj/machinery/status_display/ai/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"eyB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/girder,
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"eyJ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/library/lounge)
-"eyO" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"eyV" = (
-/obj/machinery/door/airlock/public{
- name = "Arcade"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"eyY" = (
-/obj/machinery/requests_console/directional/north{
- department = "Tool Storage";
- name = "Tool Storage Requests Console"
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/commons/storage/primary)
-"ezd" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/machinery/duct,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"ezi" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/storage/primary)
-"ezm" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"ezw" = (
-/obj/machinery/shower/directional/west,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/entry)
-"ezy" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/science/robotics/lab)
-"ezC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"ezF" = (
-/obj/structure/transit_tube/horizontal{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"ezH" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/electrolyzer,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/disposal/incinerator)
-"ezI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"ezK" = (
-/obj/machinery/iv_drip,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"ezM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"ezQ" = (
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"ezR" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"ezX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"eAa" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/machinery/camera/directional/west{
- c_tag = "Science - Foyer #3"
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"eAi" = (
-/obj/machinery/light_switch/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"eAl" = (
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/structure/frame/machine,
-/obj/item/seeds/cannabis,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"eAm" = (
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"eAr" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/entry)
-"eAv" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"eAE" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"eAP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"eAV" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/item/lighter/greyscale,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"eAY" = (
-/obj/machinery/button/door/directional/south{
- id = "nsminingdorm3";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/carpet/blue,
-/area/station/cargo/miningdock)
-"eBf" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/structure/table/glass,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/storage/box/beakers{
- pixel_x = 12;
- pixel_y = 6
- },
-/obj/item/flashlight/lamp{
- pixel_x = -7;
- pixel_y = 5
- },
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"eBg" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"eBo" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"eBu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate_abandoned,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"eBy" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/office)
-"eBM" = (
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"eBQ" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"eBT" = (
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/suit_storage_unit/ce,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"eBY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/mob/living/carbon/human/species/monkey{
- name = "Banana"
- },
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"eCf" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 1
- },
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"eCg" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"eCj" = (
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible{
- dir = 6
- },
-/turf/closed/wall/r_wall,
-/area/station/maintenance/disposal/incinerator)
-"eCr" = (
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"eCz" = (
-/obj/machinery/door/window/left/directional/south{
- name = "Pen 4";
- req_access = list("xenobiology")
- },
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"eCD" = (
-/obj/machinery/airalarm/directional/east,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"eCJ" = (
-/obj/structure/railing,
-/obj/structure/table,
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"eCK" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"eCM" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/command/nuke_storage)
-"eCO" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"eCP" = (
-/obj/machinery/airalarm/directional/north,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"eCQ" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/obj/item/clothing/glasses/meson,
-/obj/item/clothing/glasses/meson,
-/obj/item/clothing/glasses/meson,
-/turf/open/floor/iron/dark,
-/area/station/engineering/supermatter/room)
-"eDe" = (
-/turf/closed/wall,
-/area/station/hallway/floor3/fore)
-"eDj" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"eDl" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"eDm" = (
-/obj/machinery/light/cold/directional/east,
-/obj/machinery/newscaster/directional/east,
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"eDt" = (
-/obj/effect/turf_decal/trimline/purple/warning,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"eDC" = (
-/obj/machinery/light/cold/directional/south,
-/turf/open/openspace,
-/area/station/medical/pharmacy)
-"eEd" = (
-/obj/machinery/door/airlock/command/glass{
- name = "Ancient Office"
- },
-/obj/effect/mapping_helpers/airlock/access/all/command/gateway,
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"eEf" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/service/library/printer)
-"eEn" = (
-/obj/machinery/light/small/directional/west,
-/obj/structure/easel,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/plating,
-/area/station/security/prison/work)
-"eEp" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"eEr" = (
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"eEu" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"eEA" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/landmark/start/station_engineer,
-/turf/open/floor/iron/dark,
-/area/station/engineering/lobby)
-"eEB" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"eEE" = (
-/obj/structure/railing{
- dir = 5
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"eEN" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"eEQ" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/checker,
-/area/station/commons/locker)
-"eET" = (
-/obj/structure/filingcabinet/medical,
-/turf/open/floor/iron/dark/corner,
-/area/station/service/lawoffice)
-"eEZ" = (
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/button/door/directional/west{
- id = "med_lockdown";
- name = "Medbay Lockdown Shutters";
- req_access = list("medical")
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"eFc" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/cargo/miningdock)
-"eFe" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"eFq" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/ai_monitored/command/storage/eva)
-"eFr" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/dim/directional/east,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"eFz" = (
-/obj/structure/chair/wood,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"eFC" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"eFJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"eFO" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"eFY" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"eGb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible,
-/obj/machinery/meter,
-/turf/open/floor/iron/dark/textured_half,
-/area/station/engineering/supermatter/room)
-"eGl" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"eGp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"eGr" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"eGF" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/obj/structure/closet/radiation,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"eGK" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"eGQ" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"eHc" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/genetics)
-"eHf" = (
-/obj/machinery/light/floor,
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"eHk" = (
-/obj/effect/decal/cleanable/oil,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"eHr" = (
-/obj/machinery/button/door/directional/north{
- id = "stationawaygate";
- name = "Gateway Shutters";
- req_access = list("gateway")
- },
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor4/fore)
-"eHD" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"eHG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"eHK" = (
-/obj/effect/turf_decal/trimline/white/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output,
-/turf/open/floor/engine/air,
-/area/station/engineering/atmos)
-"eHN" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"eHT" = (
-/obj/machinery/firealarm/directional/east,
-/obj/structure/railing,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"eHU" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"eHW" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"eHX" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock{
- name = "Arrivals"
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/secondary/entry)
-"eIb" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/trimline/white/filled/line{
- color = "#065C93";
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/bridge)
-"eIg" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/machinery/turretid{
- control_area = "/area/station/ai_monitored/turret_protected/ai_upload";
- icon_state = "control_stun";
- name = "AI Upload turret control";
- pixel_y = 28
- },
-/obj/machinery/computer/security/telescreen/aiupload/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"eIq" = (
-/obj/structure/chair/stool/directional/west,
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"eIr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"eIs" = (
-/obj/machinery/airlock_sensor/incinerator_ordmix{
- pixel_x = 24
- },
-/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{
- dir = 8
- },
-/obj/machinery/atmospherics/components/binary/pump/off/general{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/science/ordnance/burnchamber)
-"eIt" = (
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/hfr_room)
-"eIw" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"eIK" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"eIU" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"eIW" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"eJc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"eJd" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"eJl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 10
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"eJs" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"eJy" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 8
- },
-/obj/effect/turf_decal/tile/dark_blue,
-/obj/effect/turf_decal/weather/dirt{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison/garden)
-"eJF" = (
-/obj/machinery/airalarm/directional/south,
-/obj/item/kirbyplants/random,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"eJU" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"eJX" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/item/radio/intercom/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/command/teleporter)
-"eKd" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Applied Mechanics"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"eKe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/checkpoint)
-"eKf" = (
-/obj/item/radio/intercom/directional/east,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"eKg" = (
-/obj/effect/turf_decal/box/white{
- color = "#EFB341"
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"eKk" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"eKl" = (
-/obj/structure/disposalpipe/segment{
- dir = 2
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"eKn" = (
-/obj/machinery/telecomms/broadcaster/preset_right,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"eKp" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"eKB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/sink/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"eKC" = (
-/turf/closed/wall,
-/area/station/science/xenobiology/hallway)
-"eKD" = (
-/obj/structure/railing{
- dir = 5
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"eKY" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"eLd" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor3/fore)
-"eLe" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"eLg" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"eLq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"eLt" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/power/emitter/welded,
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"eLw" = (
-/turf/closed/wall,
-/area/station/commons/vacant_room/commissary)
-"eLB" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/machinery/space_heater/improvised_chem_heater,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"eLC" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"eLF" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{
- dir = 8
- },
-/turf/closed/wall/r_wall,
-/area/station/engineering/supermatter/waste)
-"eLK" = (
-/obj/structure/railing{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"eLQ" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/machinery/rnd/production/circuit_imprinter,
-/obj/machinery/firealarm/directional/south,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/machinery/camera{
- c_tag = "Engineering Foyer #2";
- dir = 4;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/lobby)
-"eLS" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/bci_implanter,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"eMg" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/sink/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"eMi" = (
-/obj/machinery/light/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"eMp" = (
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"eMR" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"eNa" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/turf_decal/caution/white{
- pixel_y = -5
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/aft)
-"eNi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"eNj" = (
-/turf/closed/wall/r_wall,
-/area/station/security/mechbay)
-"eNk" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister/plasma,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"eNo" = (
-/obj/machinery/camera/autoname/directional/south,
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"eNw" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"eNM" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/misc/snow/actually_safe{
- icon_state = "snow4"
- },
-/area/station/hallway/floor2/fore)
-"eNN" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningdock)
-"eNS" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/restroom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"eNX" = (
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"eNY" = (
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"eOf" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/wood,
-/area/station/maintenance/floor2/starboard)
-"eOh" = (
-/obj/structure/table/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"eOy" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"eOz" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"eOC" = (
-/obj/machinery/bluespace_vendor/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"eOP" = (
-/turf/closed/wall/r_wall,
-/area/station/hallway/floor4/aft)
-"eOY" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ePa" = (
-/turf/closed/wall/r_wall,
-/area/station/science/lab)
-"ePp" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"ePs" = (
-/obj/structure/railing/corner,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"ePv" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/commons/locker)
-"ePH" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"ePJ" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"ePM" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-3";
- location = "3-2"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"ePT" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"ePU" = (
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/prison/garden)
-"ePV" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"ePY" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/pod,
-/area/station/hallway/secondary/entry)
-"eQd" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/pdapainter/security,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"eQe" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"eQi" = (
-/obj/structure/chair/plastic{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 4
- },
-/obj/machinery/flasher/directional/east{
- name = "drunktank"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"eQm" = (
-/obj/structure/chair/sofa/left{
- dir = 8
- },
-/obj/item/toy/plush/beeplushie{
- desc = "A cute bee toy to calm down hysteric patients.";
- name = "Bee Haave"
- },
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"eQD" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"eQG" = (
-/obj/effect/turf_decal/caution,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit)
-"eQH" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/psychology)
-"eQN" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/computer/security{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"eQP" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"eQZ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/engineering/atmos)
-"eRe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"eRu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"eRZ" = (
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"eSa" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/spawner/random/trash/hobo_squat,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"eSc" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"eSn" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"eSq" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"eSw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/stool/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"eSx" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/airlock/external{
- name = "Escape Airlock"
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"eSI" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"eSJ" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"eSP" = (
-/obj/structure/bed/double,
-/obj/effect/spawner/random/bedsheet/double,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/landmark/start/shaft_miner,
-/turf/open/floor/carpet,
-/area/station/cargo/miningdock)
-"eSX" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/obj/structure/window/spawner/directional/west,
-/obj/structure/window/spawner/directional/north,
-/obj/structure/window/spawner/directional/south,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"eTa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"eTd" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/aft)
-"eTp" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"eTr" = (
-/obj/structure/chair/sofa/corner/brown{
- dir = 1
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"eTH" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/mob/living/carbon/human/species/monkey,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"eTJ" = (
-/obj/structure/chair/sofa/corp/right{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white/corner{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/structure/sign/poster/random/directional/north,
-/obj/effect/landmark/start/paramedic,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"eTQ" = (
-/obj/structure/chair/stool/directional/north,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 4
- },
-/area/station/medical/abandoned)
-"eTR" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"eTT" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"eTV" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"eUn" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/line,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"eUp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-6";
- location = "3-5"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"eUq" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/machinery/shower/directional/north,
-/obj/effect/turf_decal/trimline/green/end{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"eUx" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/closet/l3closet/scientist,
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"eUJ" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/item/radio/intercom/directional/west,
-/obj/structure/railing/corner/end/flip{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"eUM" = (
-/obj/structure/spider/stickyweb,
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"eUT" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/structure/grille,
-/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"eUU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/security/brig)
-"eUW" = (
-/obj/structure/railing,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"eUX" = (
-/obj/item/kirbyplants/random,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"eUZ" = (
-/obj/structure/table,
-/obj/effect/spawner/random/food_or_drink/snack,
-/obj/effect/spawner/random/food_or_drink/snack,
-/obj/item/food/gumball,
-/obj/item/food/gumball,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"eVh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"eVk" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"eVl" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 6
- },
-/obj/structure/closet/crate/science{
- name = "Protein Collection Supplies"
- },
-/obj/item/clothing/gloves/butchering,
-/obj/item/knife/hunting,
-/obj/item/gun/energy/laser/retro/old,
-/obj/item/paper{
- default_raw_text = "Just do what comes natural -J";
- name = "odd note"
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"eVo" = (
-/obj/machinery/suit_storage_unit/captain,
-/obj/machinery/light/directional/north,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"eVN" = (
-/obj/structure/grille/broken,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"eVQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"eVV" = (
-/obj/effect/landmark/start/chemist,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"eWb" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/structure/barricade/wooden/crude,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"eWg" = (
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/prison)
-"eWl" = (
-/obj/structure/closet/secure_closet/brig{
- name = "Prisoner Locker"
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"eWC" = (
-/obj/machinery/airalarm/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"eWI" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"eWS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"eWV" = (
-/obj/structure/stairs/north,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"eWW" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/duct,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"eXg" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"eXi" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"eXp" = (
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"eXy" = (
-/turf/closed/wall,
-/area/station/science/breakroom)
-"eXB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"eXL" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "ai_sat"
- },
-/obj/machinery/door/airlock/hatch{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"eXR" = (
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 1
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/delivery,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/mid_joiner{
- dir = 1
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"eXT" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/north,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"eYa" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"eYh" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 9
- },
-/obj/item/radio/intercom,
-/obj/effect/turf_decal/trimline/blue/corner,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"eYj" = (
-/obj/structure/lattice/catwalk,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"eYm" = (
-/obj/machinery/door/airlock/hatch{
- name = "Psych Office Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"eYp" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"eYq" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"eYw" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"eYL" = (
-/obj/structure/table/reinforced,
-/obj/item/mmi{
- pixel_x = -5;
- pixel_y = 8
- },
-/obj/item/mmi{
- pixel_y = 4
- },
-/obj/item/mmi{
- pixel_x = 5
- },
-/obj/machinery/light/cold/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"eYN" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"eYQ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"eYY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/built/directional/south,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/warehouse)
-"eZa" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"eZu" = (
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"eZA" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"eZD" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"eZQ" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"fae" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/camera/autoname/directional/south,
-/obj/effect/landmark/start/psychologist,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"faq" = (
-/obj/effect/turf_decal/trimline/purple/end,
-/obj/machinery/shower/directional/south,
-/turf/open/floor/noslip{
- icon_state = "textured_dark"
- },
-/area/station/science/robotics/lab)
-"faw" = (
-/obj/machinery/light/directional/south,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/departure_lounge)
-"fax" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/machinery/telecomms/bus/preset_four,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"faA" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"faL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate/freezer,
-/obj/effect/spawner/random/medical/memeorgans,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"faM" = (
-/obj/machinery/airalarm/directional/north,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"faP" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"faS" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"fbd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/small/red/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"fbe" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/science/xenobiology/hallway)
-"fbl" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/light/small/directional/west,
-/obj/machinery/power/smes/full,
-/turf/open/floor/plating,
-/area/station/engineering/gravity_generator)
-"fbo" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/structure/rack,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"fbt" = (
-/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"fbC" = (
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"fbD" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"fbO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/lobby)
-"fbV" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/abandoned)
-"fcp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/obj/machinery/meter,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"fcz" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"fcC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"fcS" = (
-/obj/machinery/camera{
- c_tag = "Atmos Tank #6 - N2O";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine/n2o,
-/area/station/engineering/atmos)
-"fdp" = (
-/obj/effect/turf_decal/stripes,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"fdr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"fdx" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/white/smooth_corner{
- dir = 8
- },
-/area/station/cargo/miningdock)
-"fdB" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/landmark/start/warden,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"fdG" = (
-/obj/effect/turf_decal/trimline/white/filled/corner{
- color = "#065C93"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/command/bridge)
-"fdW" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "surg_a_privacy";
- name = "Surgery Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/surgery/fore)
-"fdX" = (
-/obj/item/stack/sheet/iron,
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"fey" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/machinery/button/elevator/directional/west{
- id = "fore_vator"
- },
-/obj/machinery/lift_indicator/directional/west{
- linked_elevator_id = "fore_vator";
- pixel_y = -4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"feH" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/science/robotics/lab)
-"feP" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"feR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"feX" = (
-/turf/open/openspace,
-/area/station/hallway/floor2/fore)
-"ffb" = (
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"ffe" = (
-/turf/closed/wall/r_wall,
-/area/station/security/holding_cell)
-"ffh" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"ffi" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/structure/table/glass,
-/obj/item/cultivator,
-/obj/item/stack/cable_coil,
-/obj/item/clothing/glasses/science,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"ffv" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/machinery/status_display/ai/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"ffz" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"ffA" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/duct,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"ffD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"ffN" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"ffV" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/drip,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"ffZ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/effect/landmark/start/janitor,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"fgr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"fgz" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/item/reagent_containers/spray/cleaner,
-/obj/item/reagent_containers/cup/rag,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"fgB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"fgD" = (
-/turf/open/floor/iron/white/corner,
-/area/station/hallway/floor2/fore)
-"fgN" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/cargo/office)
-"fhl" = (
-/obj/structure/bed{
- dir = 1
- },
-/obj/item/toy/plush/snakeplushie{
- pixel_x = -6;
- pixel_y = 7
- },
-/obj/item/bedsheet/purple{
- dir = 1
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/purple,
-/area/station/commons/dorms/apartment1)
-"fho" = (
-/obj/machinery/computer/crew{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"fhp" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 1
- },
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"fhr" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"fhv" = (
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark/corner,
-/area/station/security/brig)
-"fhx" = (
-/obj/effect/landmark/blobstart,
-/turf/open/floor/fakebasalt,
-/area/station/maintenance/floor3/port)
-"fhy" = (
-/obj/effect/turf_decal/trimline/white/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/turf_decal/caution/white{
- pixel_y = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"fhA" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"fhC" = (
-/obj/structure/closet/l3closet/virology,
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 5
- },
-/obj/structure/sign/warning/biohazard/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"fhG" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"fhN" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"fhO" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"fhX" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor1/fore)
-"fhZ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"fij" = (
-/obj/effect/spawner/structure/window/hollow/middle,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"fio" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"fiw" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"fix" = (
-/obj/structure/chair/wood,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"fiz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/tile/light,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"fiA" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"fiI" = (
-/obj/structure/closet,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/spawner/random/exotic/tool,
-/obj/effect/spawner/random/maintenance/two,
-/obj/item/stack/cable_coil,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"fiO" = (
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit)
-"fiT" = (
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"fiX" = (
-/obj/structure/chair/comfy/brown,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"fja" = (
-/turf/closed/wall/r_wall,
-/area/station/science/lobby)
-"fje" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/dark_blue{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison/garden)
-"fji" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/window/brigdoor/right/directional/south{
- name = "Chemistry Lab";
- req_access = list("plumbing")
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"fjo" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"fjq" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"fjv" = (
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"fjx" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/turf_decal/trimline/green/end{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"fjD" = (
-/obj/structure/chair/sofa/right/brown{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"fjF" = (
-/obj/effect/spawner/random/engineering/tank,
-/obj/effect/turf_decal/trimline/dark_blue/end{
- dir = 4
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"fjG" = (
-/obj/machinery/computer/atmos_control/nitrogen_tank,
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"fjK" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/iron/dark/side,
-/area/station/command/teleporter)
-"fjN" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/cargo/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"fjQ" = (
-/obj/machinery/button/flasher{
- id = "virosec_flash";
- pixel_x = -26
- },
-/obj/effect/turf_decal/trimline/red/filled/end{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"fjS" = (
-/obj/machinery/door/airlock/highsecurity,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"fkf" = (
-/obj/effect/spawner/random/vending/colavend,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"fkj" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock{
- name = "Service Hall"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"fko" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fkp" = (
-/obj/structure/chair/pew/left{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"fkv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"fkA" = (
-/turf/closed/wall/r_wall,
-/area/station/security/execution/education)
-"fkD" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 5
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fkE" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/light_construct/directional/north,
-/obj/item/bot_assembly/floorbot,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"fkG" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/engineering/storage/tech)
-"fkJ" = (
-/obj/item/stack/tile/pod,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"fkL" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/turf_decal/trimline/blue,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"fkN" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/recharger,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"fkW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"flf" = (
-/obj/machinery/button/door/directional/east{
- id = "psy";
- name = "Window Privacy"
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"fli" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"flk" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner,
-/obj/structure/window/spawner/directional/east,
-/obj/item/flashlight/lamp/green{
- pixel_y = 2
- },
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"fll" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/table/wood,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"flx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/hangover,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"flD" = (
-/obj/machinery/smartfridge,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "viro-inner";
- name = "Virology Inner Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/virology)
-"flN" = (
-/obj/machinery/duct,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/catwalk_floor/iron_white,
-/area/station/cargo/miningdock)
-"flS" = (
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"flX" = (
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"fmb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"fmg" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/engineering/storage/tcomms)
-"fmk" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"fmq" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output,
-/obj/effect/turf_decal/trimline/purple/line,
-/turf/open/floor/engine/plasma,
-/area/station/engineering/atmos)
-"fmx" = (
-/obj/structure/table,
-/obj/item/paper_bin/carbon{
- pixel_x = -2;
- pixel_y = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"fmE" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"fmF" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"fmG" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/airalarm/directional/west,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"fmK" = (
-/obj/structure/mirror/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"fmN" = (
-/obj/effect/spawner/structure/electrified_grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"fmO" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"fna" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-1";
- location = "1-0"
- },
-/mob/living/simple_animal/bot/secbot/beepsky/officer{
- name = "Beepsky the First"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"fnq" = (
-/obj/machinery/button/door/directional/south{
- id = "radshutnorth"
- },
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"fnB" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/small/directional/west,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"fnF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"fnL" = (
-/obj/machinery/status_display/evac/directional/north,
-/obj/machinery/power/terminal{
- dir = 4
- },
-/obj/machinery/power/port_gen/pacman/pre_loaded,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"fnM" = (
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor3/starboard/fore)
-"fnO" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 5
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"fnS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{
- dir = 8
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/engineering/atmos)
-"fnT" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-3";
- location = "1-2"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"fnW" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"foa" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/machinery/door/window/left/directional/north{
- name = "Fitness Room"
- },
-/obj/effect/turf_decal/trimline/neutral/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"fod" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/flashlight/flare/candle,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"foh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"fok" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"fou" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/chair/plastic,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"fov" = (
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"foB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing/corner,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"foF" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"foI" = (
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"foK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"foL" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"foT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"fpb" = (
-/obj/structure/table/wood,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"fpg" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"fpn" = (
-/obj/structure/chair/office,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"fpp" = (
-/obj/structure/table/wood,
-/obj/item/paint_palette,
-/obj/item/paint_palette,
-/obj/item/paint_palette,
-/obj/machinery/light/directional/north,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"fps" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/aft)
-"fpD" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"fpF" = (
-/obj/structure/table,
-/obj/structure/reagent_dispensers/servingdish,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"fpH" = (
-/obj/structure/table,
-/obj/item/folder/blue{
- pixel_y = 2
- },
-/obj/item/pen,
-/obj/item/radio/off{
- pixel_x = -6;
- pixel_y = 7
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"fpN" = (
-/obj/effect/turf_decal/stripes,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"fpU" = (
-/turf/open/floor/glass,
-/area/station/service/library)
-"fpW" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"fqe" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/gravity_generator)
-"fqg" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"fqn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/turf_decal/bot_white{
- color = "#74b2d3"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"fqo" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"fqu" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"fqx" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"fqE" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"fqJ" = (
-/obj/structure/closet/bombcloset/security,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 9
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"fqP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/structure/sign/poster/random/directional/west,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"frw" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/obj/machinery/plumbing/input{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"fry" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"frz" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/structure/rack,
-/obj/item/storage/box/syringes{
- pixel_y = 3
- },
-/obj/item/storage/box/beakers,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"frL" = (
-/turf/closed/wall,
-/area/station/engineering/gravity_generator)
-"frU" = (
-/obj/structure/filingcabinet/chestdrawer{
- pixel_y = 2
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"frV" = (
-/obj/structure/weightmachine,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/iron/smooth_large,
-/area/station/medical/psychology)
-"frW" = (
-/turf/closed/wall,
-/area/station/service/theater)
-"fsg" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"fst" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/vault,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/nuke_storage)
-"fsu" = (
-/obj/structure/girder/displaced,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fsv" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"fsD" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"fsI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fsJ" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"fsK" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/effect/landmark/start/hangover,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"fsR" = (
-/obj/item/kirbyplants/random,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"fsY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"ftl" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"ftp" = (
-/obj/structure/table,
-/obj/item/grenade/chem_grenade/antiweed,
-/obj/item/grenade/chem_grenade/antiweed,
-/obj/item/grenade/chem_grenade/antiweed,
-/obj/item/reagent_containers/spray/plantbgone{
- pixel_x = 13;
- pixel_y = 5
- },
-/obj/item/reagent_containers/spray/plantbgone{
- pixel_x = 8;
- pixel_y = 8
- },
-/obj/item/watertank,
-/obj/item/reagent_containers/spray/plantbgone{
- pixel_y = 3
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"ftt" = (
-/obj/structure/table,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/item/radio/intercom/directional/west,
-/obj/effect/spawner/random/engineering/tool{
- pixel_x = 1;
- pixel_y = 3
- },
-/obj/effect/spawner/random/engineering/tool{
- pixel_x = 1;
- pixel_y = 3
- },
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"ftu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/cafeteria,
-/area/station/security/prison)
-"ftv" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"ftJ" = (
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"ftT" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"ftZ" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"fuq" = (
-/obj/structure/closet/wardrobe/grey,
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/spawner/random/maintenance/four,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"fur" = (
-/obj/machinery/destructive_scanner,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"fuy" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/red/line{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"fuH" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"fuI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"fuJ" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "ExoDrone Launchbay"
- },
-/obj/effect/mapping_helpers/airlock/access/all/supply/general,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/cargo/drone_bay)
-"fvb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"fve" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/shieldgen,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"fvr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"fvx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"fvy" = (
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/obj/effect/turf_decal/trimline/red,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"fvA" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "brig-entrance-aft"
- },
-/obj/machinery/door/airlock/security/glass{
- id_tag = "outerbrig";
- name = "Brig Aft Entrance"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/all/security/entrance,
-/obj/machinery/scanner_gate/preset_guns,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"fvD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"fvJ" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"fvO" = (
-/obj/structure/sign/departments/cargo/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"fvV" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 1
- },
-/obj/machinery/gulag_item_reclaimer{
- pixel_y = 24
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"fwb" = (
-/obj/structure/frame/computer{
- dir = 8
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/east,
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"fwj" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"fws" = (
-/obj/machinery/button/door/directional/north{
- id = "radshutsouth"
- },
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"fwJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = 32
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fwK" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"fwM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-0";
- location = "2-19"
- },
-/mob/living/basic/bot/medbot/autopatrol,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"fwV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/service/chapel)
-"fxd" = (
-/obj/structure/closet/firecloset,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"fxm" = (
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"fxo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"fxG" = (
-/obj/machinery/vending/cola/pwr_game,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"fxI" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"fxS" = (
-/obj/effect/landmark/carpspawn,
-/turf/open/space/basic,
-/area/space)
-"fxT" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/fancy/donut_box{
- pixel_x = -4;
- pixel_y = 4
- },
-/obj/item/storage/fancy/donut_box,
-/obj/machinery/status_display/ai/directional/south,
-/obj/item/binoculars,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"fyb" = (
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"fyg" = (
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/cargo/drone_bay)
-"fyQ" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"fyT" = (
-/obj/structure/cable,
-/obj/machinery/modular_computer/preset/engineering{
- dir = 8
- },
-/obj/machinery/light_switch/directional/north,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fzr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"fzw" = (
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"fzy" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"fzB" = (
-/obj/machinery/door/airlock/engineering/glass{
- name = "Main Power Connector"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"fzG" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"fzL" = (
-/obj/effect/turf_decal/trimline/yellow/corner,
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"fzR" = (
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "aband_armour";
- name = "Armoury Shutters"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fzU" = (
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"fzV" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"fzY" = (
-/obj/item/weldingtool/mini,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"fzZ" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/commons/locker)
-"fAp" = (
-/obj/machinery/door/airlock{
- name = "Escape Pod B"
- },
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/escape_pod)
-"fAy" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"fAz" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/kitchen)
-"fAP" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"fAT" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"fAU" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"fBa" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"fBf" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/machinery/button/elevator/directional/east{
- id = "aft_vator"
- },
-/obj/machinery/lift_indicator/directional/east{
- linked_elevator_id = "aft_vator";
- pixel_y = -4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"fBk" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"fBt" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit/escape_pod)
-"fBu" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"fBw" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/carpet/blue,
-/area/station/command/heads_quarters/hop)
-"fBA" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/trimline/white/filled/line{
- color = "#065C93"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/bridge)
-"fBJ" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"fBM" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"fBO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"fBP" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"fBT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"fBX" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/spawner/random/trash/mess,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"fBY" = (
-/obj/structure/table,
-/obj/item/stock_parts/scanning_module{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/stock_parts/matter_bin,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"fCc" = (
-/obj/structure/stairs/north,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"fCq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"fCx" = (
-/obj/structure/rack,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"fCz" = (
-/obj/structure/rack,
-/obj/item/storage/box/firingpins{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/firingpins,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"fCA" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 1
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"fCE" = (
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Foyer"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/brig)
-"fCG" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fCH" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/obj/machinery/newscaster/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fCM" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/engineering/toolbox,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"fCQ" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"fCS" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"fCU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/item/stack/sheet/cardboard{
- amount = 14
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/security/prison/work)
-"fDq" = (
-/obj/structure/sign/poster/contraband/atmosia_independence/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"fDv" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"fDA" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/obj/machinery/ai_slipper{
- uses = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"fDF" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"fDI" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"fDM" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"fDN" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"fDO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/barricade/security,
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"fDR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"fDS" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/emergency,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fDT" = (
-/obj/effect/turf_decal/bot_white/right,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"fDZ" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/light/cold/directional/south,
-/obj/machinery/modular_computer/preset/cargochat/medical{
- dir = 1
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/break_room)
-"fEj" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/turf/closed/wall,
-/area/station/medical/treatment_center)
-"fEn" = (
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"fEp" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Worship Hall"
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"fEr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/robot_debris/down,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"fEv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"fED" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"fEG" = (
-/obj/structure/mineral_door/paperframe,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"fES" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/structure/bed/medical/emergency,
-/obj/machinery/iv_drip,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/office)
-"fEZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"fFo" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"fFt" = (
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"fFu" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fFA" = (
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"fFB" = (
-/obj/effect/turf_decal/siding/wood/corner,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/firealarm/directional/west,
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"fFF" = (
-/obj/effect/turf_decal/siding/white{
- dir = 9
- },
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"fFI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/dresser,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/carpet/orange,
-/area/station/command/heads_quarters/qm)
-"fFT" = (
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"fFY" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/gravity_generator)
-"fGc" = (
-/obj/structure/sign/departments/engineering/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"fGi" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos)
-"fGm" = (
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"fGn" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"fGt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"fGx" = (
-/obj/effect/turf_decal/trimline/dark_blue/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/dark_blue/corner,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"fGy" = (
-/obj/structure/falsewall,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"fGD" = (
-/obj/structure/transit_tube/curved,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/hallway/floor4/aft)
-"fGJ" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"fGK" = (
-/obj/structure/rack,
-/obj/item/trash/champagne_cork{
- pixel_x = 8;
- pixel_y = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"fGP" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"fGW" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/rack,
-/obj/item/mop{
- pixel_x = -4
- },
-/obj/item/mop,
-/obj/item/mop{
- pixel_x = 4
- },
-/obj/item/reagent_containers/cup/bucket,
-/obj/item/reagent_containers/cup/bucket,
-/obj/item/reagent_containers/cup/bucket,
-/obj/structure/sign/poster/random/directional/east,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"fGX" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"fHb" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fHd" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"fHe" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Research and Development"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fHf" = (
-/obj/effect/turf_decal/arrows/white,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"fHy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fHz" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"fHE" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"fHM" = (
-/obj/machinery/light/small/red/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"fHW" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"fIa" = (
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"fIg" = (
-/obj/machinery/door/firedoor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"fIk" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"fIs" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"fIv" = (
-/obj/item/clothing/gloves/color/yellow,
-/obj/item/storage/toolbox/electrical{
- pixel_y = 10
- },
-/obj/structure/table,
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 1
- },
-/area/station/engineering/storage/tech)
-"fIz" = (
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"fID" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"fIF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/contraband/cannabis,
-/obj/structure/table,
-/obj/effect/spawner/random/maintenance/four,
-/obj/machinery/light/broken/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"fIK" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/mechanical,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fIM" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fIU" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/light/cold/directional/east,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"fIX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"fJa" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"fJl" = (
-/obj/machinery/door/airlock/external/glass,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"fJo" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fJw" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"fJy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"fJz" = (
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/showcase/perfect_employee,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"fJA" = (
-/obj/structure/stairs/north,
-/turf/open/floor/plating,
-/area/station/medical/psychology)
-"fJE" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/south,
-/obj/machinery/power/energy_accumulator/tesla_coil/anchored,
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer4,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"fJT" = (
-/obj/effect/turf_decal/tile/green/anticorner/contrasted{
- dir = 1
- },
-/obj/structure/cable,
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"fJU" = (
-/obj/structure/bodycontainer/morgue{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"fJY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 4
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"fKd" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/spawner/random/structure/table_fancy,
-/obj/structure/sign/painting/library{
- pixel_y = 32
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"fKi" = (
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/gravity_generator)
-"fKr" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/rd)
-"fKs" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"fKC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"fKH" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{
- dir = 4
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"fKL" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"fKS" = (
-/obj/structure/sink/directional/west,
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"fKU" = (
-/obj/machinery/telecomms/receiver/preset_right,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"fKZ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/structure/closet/emcloset,
-/obj/effect/landmark/start/hangover/closet,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"fLf" = (
-/obj/structure/window/spawner/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"fLn" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/pumproom)
-"fLu" = (
-/obj/structure/window/plasma/spawner/directional/east,
-/obj/structure/window/plasma/spawner/directional/south,
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on,
-/turf/open/floor/plating,
-/area/station/science/server)
-"fLv" = (
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"fLx" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/disposaloutlet{
- dir = 1
- },
-/obj/structure/disposalpipe/trunk,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"fLz" = (
-/obj/effect/turf_decal/stripes/end,
-/obj/effect/turf_decal/stripes/white/end,
-/obj/effect/turf_decal/arrows/white{
- dir = 1
- },
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron/large,
-/area/station/command/gateway)
-"fLR" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 6
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"fMc" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"fMf" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"fMl" = (
-/obj/structure/ladder,
-/obj/structure/lattice/catwalk,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"fMm" = (
-/obj/effect/decal/cleanable/glass,
-/obj/item/shard,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"fMs" = (
-/turf/open/floor/plating/airless,
-/area/station/maintenance/floor3/port/aft)
-"fMu" = (
-/obj/structure/girder/reinforced,
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle{
- dir = 4
- },
-/obj/machinery/door/poddoor/preopen{
- id = "Xenolab";
- name = "Test Chamber Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/science/cytology)
-"fMB" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"fMY" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/obj/machinery/shieldgen,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"fNe" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/medbay/alt/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"fNg" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"fNh" = (
-/obj/effect/landmark/start/hangover,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"fNq" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin,
-/obj/item/pen,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"fNt" = (
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"fNy" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 5
- },
-/obj/machinery/status_display/ai/directional/west,
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"fNA" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"fNK" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fNL" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"fNT" = (
-/turf/closed/wall,
-/area/station/hallway/floor2/fore)
-"fNV" = (
-/obj/machinery/seed_extractor,
-/obj/effect/turf_decal/tile/dark_blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/security/prison/garden)
-"fNY" = (
-/obj/effect/decal/cleanable/robot_debris/up,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"fOg" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"fOj" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/command/teleporter)
-"fOk" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"fOl" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"fOq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"fOu" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"fOw" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"fOA" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"fOH" = (
-/obj/machinery/monkey_recycler,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"fOI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"fOK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"fOR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"fOS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"fOU" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"fPf" = (
-/obj/effect/turf_decal/tile/blue/half,
-/turf/open/floor/iron/textured_edge,
-/area/station/medical/chemistry)
-"fPj" = (
-/obj/machinery/barsign,
-/turf/closed/wall,
-/area/station/maintenance/floor3/starboard/fore)
-"fPl" = (
-/obj/machinery/requests_console/directional/south{
- department = "Medbay";
- name = "Medbay Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/closet/secure_closet/medical3,
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"fPo" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"fPD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
-"fPH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"fPW" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"fPX" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"fQf" = (
-/obj/machinery/vending/autodrobe,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"fQi" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"fQj" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"fQl" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"fQm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"fQs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"fQv" = (
-/obj/structure/table/wood,
-/obj/item/gavelblock,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"fQx" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"fQA" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"fQF" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/machinery/light/directional/north,
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/ai_monitored/command/storage/eva)
-"fQH" = (
-/obj/structure/cable,
-/obj/machinery/door/window/brigdoor/left/directional/south{
- name = "Coroner's Office";
- req_access = list("morgue_secure")
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"fQQ" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"fQY" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/item/pickaxe/improvised,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fRa" = (
-/obj/effect/turf_decal/trimline/neutral/filled/line{
- dir = 9
- },
-/obj/effect/turf_decal/trimline/neutral/filled/corner,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"fRd" = (
-/obj/effect/turf_decal/trimline/neutral/filled/line,
-/obj/effect/turf_decal/trimline/neutral/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"fRm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"fRo" = (
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"fRx" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port)
-"fRy" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"fRA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"fRH" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"fRJ" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"fRN" = (
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/obj/structure/closet/l3closet/virology,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"fRS" = (
-/obj/machinery/air_sensor/incinerator_tank{
- pixel_y = 24
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/layer4{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"fSi" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin{
- pixel_x = -2;
- pixel_y = 1
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"fSv" = (
-/obj/machinery/door/airlock/atmos{
- name = "Hypertorus Fusion Reactor"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"fSA" = (
-/obj/structure/barricade/sandbags,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"fSO" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"fSS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fSV" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/yjunction,
-/obj/structure/noticeboard/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"fSX" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"fTa" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/barricade/sandbags,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"fTb" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"fTd" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fTn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"fTo" = (
-/obj/structure/table/reinforced,
-/obj/item/cautery{
- pixel_x = 7;
- pixel_y = 6
- },
-/obj/item/retractor{
- pixel_x = -6;
- pixel_y = 10
- },
-/obj/item/circular_saw{
- pixel_y = -4
- },
-/obj/item/radio/intercom/directional/east,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"fTu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/shreds,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"fTv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"fTE" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor1/port/aft)
-"fTN" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"fTO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/light/small/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/cafeteria,
-/area/station/security/prison)
-"fUg" = (
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor2/aft)
-"fUi" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"fUk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"fUm" = (
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"fUq" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/navigate_destination/det,
-/obj/structure/sign/poster/official/report_crimes/directional/west,
-/turf/open/floor/wood,
-/area/station/hallway/floor4/fore)
-"fUv" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"fUM" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"fUT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"fUZ" = (
-/obj/effect/turf_decal/tile/red,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/corner,
-/area/station/security/brig)
-"fVe" = (
-/obj/effect/turf_decal/trimline/neutral/filled/line,
-/obj/effect/turf_decal/trimline/neutral/filled/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"fVf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/weather/dirt{
- dir = 6
- },
-/obj/structure/sign/poster/random/directional/east,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"fVi" = (
-/obj/effect/turf_decal/tile/brown/opposingcorners,
-/obj/effect/turf_decal/tile/brown/opposingcorners,
-/obj/effect/turf_decal/stripes/white/line,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/obj/machinery/module_duplicator,
-/turf/open/floor/iron/dark,
-/area/station/science/circuits)
-"fVq" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"fVA" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 4
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"fVF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"fVV" = (
-/turf/closed/wall,
-/area/station/service/chapel/funeral)
-"fWa" = (
-/obj/effect/turf_decal/trimline/white/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/arrows/white{
- dir = 4;
- pixel_y = 16
- },
-/obj/machinery/camera/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"fWc" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 1
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"fWf" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/turf/open/floor/engine/air,
-/area/station/engineering/supermatter/waste)
-"fWh" = (
-/obj/effect/turf_decal/trimline/neutral/filled/line{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/neutral/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"fWl" = (
-/obj/structure/table,
-/obj/effect/spawner/random/food_or_drink/cake_ingredients,
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"fWr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"fWz" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"fWD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"fWE" = (
-/obj/effect/turf_decal/stripes,
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/cargo/miningdock)
-"fWY" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"fWZ" = (
-/obj/structure/table,
-/obj/item/stack/sheet/plasteel/fifty,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"fXa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/siding/wood,
-/obj/effect/turf_decal/trimline/blue/line,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"fXb" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"fXd" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/machinery/modular_computer/preset/engineering{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/lobby)
-"fXm" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"fXq" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"fXr" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"fXs" = (
-/turf/closed/wall,
-/area/station/maintenance/floor4/port)
-"fXy" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/machinery/power/smes/engineering,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/disposal/incinerator)
-"fXB" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"fXD" = (
-/obj/structure/chair/comfy/black,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"fXF" = (
-/obj/structure/chair/office,
-/obj/effect/landmark/start/atmospheric_technician,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/office)
-"fXM" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/left/directional/south{
- name = "Atmospherics Desk"
- },
-/obj/machinery/door/window/brigdoor/left/directional/north{
- name = "Atmospherics Desk";
- req_access = list("atmospherics")
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/plating,
-/area/station/engineering/atmos/office)
-"fXR" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"fXU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"fXV" = (
-/obj/machinery/door/airlock/highsecurity{
- name = "Secure Tech"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage,
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/storage/tech)
-"fYa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"fYf" = (
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/circuit/green,
-/area/station/science/robotics/mechbay)
-"fYg" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/structure/closet/secure_closet/engineering_personal,
-/obj/item/radio/intercom/directional/east,
-/obj/item/clothing/gloves/color/yellow,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 8
- },
-/area/station/engineering/lobby)
-"fYi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/secondary/entry)
-"fYj" = (
-/obj/structure/chair,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 10
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"fYm" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/structure/chair/sofa/left/brown{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"fYr" = (
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"fYt" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/paramedic)
-"fYu" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"fYw" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/science/auxlab)
-"fYz" = (
-/turf/open/floor/plating,
-/area/station/engineering/atmos/hfr_room)
-"fYH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/vacant_room/commissary)
-"fYJ" = (
-/obj/structure/chair/sofa/bench/left,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"fYM" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/flashlight/flare/candle{
- pixel_x = 1;
- pixel_y = 7
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/food/ready_donk,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"fYR" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"fZg" = (
-/obj/structure/chair/sofa/bench,
-/obj/effect/turf_decal/tile/green/half/contrasted,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"fZl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/service/library/private)
-"fZn" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing,
-/turf/open/space/openspace,
-/area/station/solars/starboard/aft)
-"fZv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"fZC" = (
-/turf/open/floor/fakebasalt,
-/area/station/maintenance/floor3/port)
-"fZI" = (
-/obj/structure/closet/firecloset/full,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"fZP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-1";
- location = "2-0"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"fZV" = (
-/obj/structure/grille,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"fZX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"fZZ" = (
-/obj/structure/closet/crate,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"gaf" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"gaA" = (
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/reagentgrinder{
- pixel_x = 6;
- pixel_y = 6
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"gaB" = (
-/obj/machinery/newscaster/directional/east,
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen/fountain,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"gaC" = (
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/structure/cable,
-/obj/machinery/door/window/brigdoor/right/directional/south{
- name = "Warden's Desk";
- req_access = list("armory")
- },
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/left/directional/north{
- name = "Warden's Desk"
- },
-/obj/item/paper_bin{
- pixel_x = -6
- },
-/obj/structure/desk_bell{
- pixel_x = 7
- },
-/turf/open/floor/plating,
-/area/station/security/warden)
-"gaH" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"gaJ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/vending/wallmed/directional/east,
-/obj/machinery/modular_computer/preset/civilian{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"gaL" = (
-/turf/closed/wall,
-/area/station/medical/patients_rooms)
-"gaM" = (
-/obj/structure/hedge/opaque,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"gaT" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"gaU" = (
-/obj/machinery/light/small/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"gaW" = (
-/obj/effect/spawner/random/trash/graffiti{
- pixel_x = -32
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"gaY" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"gbh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"gbj" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"gbk" = (
-/obj/structure/closet/secure_closet/freezer/kitchen,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"gbp" = (
-/obj/structure/cable,
-/obj/structure/chair/sofa/bench/right{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/security/prison)
-"gby" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"gbR" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/sunny/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"gbU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"gbW" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/firealarm/directional/west,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"gbZ" = (
-/obj/structure/bodycontainer/crematorium{
- dir = 8;
- id = "crematorium_chapel"
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"gcf" = (
-/obj/structure/table/wood/poker,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/spawner/random/entertainment/coin,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"gcj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/poddoor/shutters{
- id = "warehouseqm"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"gcm" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/reinforced/rglass,
-/obj/item/pai_card,
-/obj/item/reagent_containers/spray/cleaner,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"gcs" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/effect/turf_decal/tile/green/half,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/service/hydroponics/garden)
-"gct" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"gcE" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 6
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"gcG" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"gcH" = (
-/obj/machinery/light/directional/south,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"gdg" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"gdm" = (
-/obj/structure/reagent_dispensers/plumbed,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"gdr" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"gdt" = (
-/obj/item/stack/sheet/sandblock/five,
-/obj/structure/table_frame/wood,
-/obj/item/camera{
- pixel_x = 5;
- pixel_y = 6
- },
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = 32
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"gdA" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/shieldgen,
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"gdM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"gdS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"gdY" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/machinery/light/directional/north,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"gdZ" = (
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/disposals,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/disposal)
-"geb" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard)
-"gec" = (
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor3/fore)
-"gef" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"geh" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"gej" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/tile/green/half,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/service/hydroponics/garden)
-"gem" = (
-/obj/structure/table/wood,
-/obj/item/camera,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"geA" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"geD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/blue,
-/area/station/command/heads_quarters/hop)
-"geH" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"geL" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"geY" = (
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor1/fore)
-"geZ" = (
-/obj/machinery/camera{
- c_tag = "Atmos Tank #7 - Mixing Chamber";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine/vacuum,
-/area/station/engineering/atmos)
-"gfb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=4-2";
- location = "4-1"
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor4/fore)
-"gfg" = (
-/obj/effect/turf_decal/box/corners{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"gfn" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/cargo/drone_bay)
-"gfr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/departments/security/directional/east,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"gfD" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/aft)
-"gfP" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/artgallery)
-"gfQ" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/rnd_secure_all,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/machinery/camera/directional/east{
- c_tag = "Secure Tech Storage";
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 8
- },
-/area/station/engineering/storage/tech)
-"ggd" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/aft)
-"ggg" = (
-/obj/structure/ladder,
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"ggi" = (
-/obj/machinery/vending/coffee,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"ggp" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 8
- },
-/obj/effect/turf_decal/siding/yellow{
- dir = 8;
- pixel_x = 15
- },
-/obj/structure/chair,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"ggD" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/obj/machinery/light_switch/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"ggH" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/structure/closet/secure_closet/atmospherics,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"ggO" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"ggQ" = (
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"ggS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/checkpoint)
-"ggW" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/newscaster/directional/south,
-/obj/machinery/duct,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"ggX" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"gha" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"ghg" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 10
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"gho" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"ghv" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/maintenance/disposal)
-"ghy" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/reinforced/rglass,
-/obj/machinery/cell_charger{
- pixel_y = 10
- },
-/obj/machinery/cell_charger{
- pixel_y = 1
- },
-/obj/item/stock_parts/power_store/cell/high{
- pixel_y = 9;
- pixel_x = -1
- },
-/obj/item/stock_parts/power_store/cell/high{
- pixel_x = -1
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"ghH" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/teleporter)
-"ghJ" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"ghX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/landmark/blobstart,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"ghZ" = (
-/obj/structure/table,
-/obj/item/inspector{
- pixel_x = -5;
- pixel_y = 12
- },
-/obj/item/inspector{
- pixel_x = 5
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"gid" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"gih" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"gip" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/status_display/ai/directional/south,
-/obj/structure/closet/secure_closet/freezer/empty{
- name = "sashimi fridge"
- },
-/obj/item/fish/angelfish,
-/obj/item/fish/guppy,
-/obj/item/food/boiledrice,
-/obj/item/food/boiledrice,
-/obj/item/food/boiledrice,
-/obj/item/food/boiledrice,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"giq" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"gir" = (
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor4/fore)
-"giv" = (
-/turf/closed/wall,
-/area/station/service/janitor)
-"giy" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/stairs/right{
- dir = 1
- },
-/area/station/command/heads_quarters/cmo)
-"giC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/dim/directional/north,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"giQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"giV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"gja" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"gjb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"gjd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Transit Tube Access"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"gjf" = (
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"gjh" = (
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"gjn" = (
-/obj/structure/table,
-/obj/item/stock_parts/matter_bin,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"gjq" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/corner,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"gjr" = (
-/obj/effect/spawner/structure/electrified_grille,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"gjy" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"gjC" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/warning,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"gjH" = (
-/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"gjP" = (
-/obj/effect/turf_decal/trimline/white/filled/corner,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"gjR" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"gkq" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/checker,
-/area/station/commons/locker)
-"gkx" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"gkI" = (
-/obj/machinery/field/generator,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"gkX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"gle" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"gll" = (
-/obj/machinery/door/airlock/security{
- name = "Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"glo" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 5
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"glp" = (
-/obj/effect/spawner/random/entertainment/drugs,
-/obj/effect/spawner/random/entertainment/drugs,
-/obj/structure/table,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/secondary/exit)
-"glr" = (
-/obj/item/stack/sheet/glass/fifty,
-/obj/effect/turf_decal/delivery,
-/obj/structure/table,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"gls" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/window/spawner/directional/north,
-/obj/structure/window/spawner/directional/south,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"glu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor3/aft)
-"glw" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/fore)
-"glH" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"glI" = (
-/obj/structure/closet/crate/trashcart/filled,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"glN" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/armory,
-/obj/machinery/door/airlock/security/glass{
- name = "Armoury"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/turf/open/floor/iron,
-/area/station/security/brig)
-"glY" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"gmj" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/effect/landmark/start/chemist,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"gmk" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"gmp" = (
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"gmw" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"gmA" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"gmC" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/machinery/airalarm/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"gmF" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock{
- name = "Arrivals"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"gmH" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"gmO" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"gmQ" = (
-/obj/effect/spawner/random/trash/graffiti,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"gmW" = (
-/obj/effect/turf_decal/trimline/brown/arrow_ccw,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/cargo/lobby)
-"gni" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/arcade_boards,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"gnj" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"gns" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"gnx" = (
-/obj/machinery/door/airlock/highsecurity{
- name = "Atmos Access"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/pumproom)
-"gnL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"gnW" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Briefing Room"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/effect/turf_decal/tile/red/half,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/office)
-"gnY" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/station_engineer,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/engineering/lobby)
-"goe" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"goh" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"gok" = (
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"goy" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/item/wallframe/light_fixture{
- dir = 1
- },
-/obj/structure/table,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"goD" = (
-/obj/structure/rack,
-/obj/item/restraints/legcuffs/bola/energy,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"goJ" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"goX" = (
-/obj/effect/mapping_helpers/airlock/access/all/medical/cmo,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical{
- name = "CMO Office"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"gpf" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"gpg" = (
-/obj/machinery/door/airlock/atmos{
- name = "Incinerator"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"gph" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"gpt" = (
-/obj/structure/lattice/catwalk,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"gpu" = (
-/obj/machinery/door/airlock/silver{
- name = "Bathroom"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/rd,
-/turf/open/floor/iron/white/textured_half{
- dir = 1
- },
-/area/station/command/heads_quarters/rd)
-"gpA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/plate_press,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron,
-/area/station/security/prison/work)
-"gpM" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/printer)
-"gpW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/marker_beacon/jade,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"gpZ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/camera/directional/south,
-/obj/machinery/lift_indicator/directional/south{
- linked_elevator_id = "com_vator";
- pixel_y = -36
- },
-/obj/machinery/button/elevator/directional/south{
- id = "com_vator"
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"gqi" = (
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"gqm" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"gqp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/machinery/shower/directional/east,
-/obj/effect/turf_decal/stripes/full,
-/turf/open/floor/noslip,
-/area/station/engineering/supermatter/room)
-"gqs" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 4
- },
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/science/robotics/lab)
-"gqF" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"gqI" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/security/prison)
-"gqJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/floor2/starboard/aft)
-"gqO" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"gqP" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"gqU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"gqV" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"grb" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"grg" = (
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"gri" = (
-/obj/effect/turf_decal/stripes,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"grk" = (
-/obj/effect/landmark/start/roboticist,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"grv" = (
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"grA" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"grD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port/aft)
-"grE" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/south,
-/obj/structure/window/reinforced/plasma/spawner/directional/north,
-/obj/structure/window/reinforced/plasma/spawner/directional/west,
-/obj/machinery/power/shuttle_engine/heater{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"grI" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"grN" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/paramedic)
-"grW" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"grX" = (
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"gsh" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"gsn" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/chair/stool/bar/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"gsp" = (
-/obj/machinery/door/airlock/medical{
- id_tag = "asylum_airlock_exterior";
- name = "Asylum Airlock"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"gss" = (
-/obj/machinery/computer/operating{
- dir = 1
- },
-/obj/machinery/vending/wallmed/directional/south,
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"gst" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"gsx" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"gsy" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"gsD" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"gsN" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"gsP" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 4
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"gsS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock{
- name = "Service Hall"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"gsV" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/portable_atmospherics/pump,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"gta" = (
-/obj/structure/closet{
- name = "Evidence Closet 2"
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"gts" = (
-/obj/item/rack_parts,
-/obj/item/weldingtool/mini,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"gtt" = (
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"gtu" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"gtw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"gty" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 6
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"gtO" = (
-/obj/structure/closet/athletic_mixed,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"gtQ" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/suit_storage_unit/radsuit,
-/obj/machinery/camera{
- c_tag = "Shared Engineering Storage #1";
- dir = 8;
- network = list("ss13","engine")
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/pumproom)
-"gtX" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/white/smooth_corner{
- dir = 1
- },
-/area/station/cargo/miningdock)
-"guk" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"gup" = (
-/obj/structure/frame/machine{
- anchored = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/circuit,
-/area/station/science/cytology)
-"guF" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/newscaster/directional/west,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"guI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
-"guQ" = (
-/turf/open/floor/engine/hull,
-/area/station/maintenance/floor1/starboard/aft)
-"guT" = (
-/obj/structure/flora/bush/flowers_yw/style_random,
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"gvc" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/item/melee/baton/security/cattleprod,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"gvh" = (
-/obj/machinery/vending/snack/blue,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"gvj" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/science/xenobiology)
-"gvn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_white,
-/area/station/medical/abandoned)
-"gvp" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/airlock/public/glass{
- name = "Medbay"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/medbay/lobby)
-"gvx" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"gvM" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/table,
-/obj/item/folder/white,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"gvN" = (
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/airlock/medical/glass{
- name = "Triage"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"gvO" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"gvQ" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"gvU" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"gvX" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"gwb" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/table/wood,
-/obj/structure/window/reinforced/tinted/spawner/directional/west,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"gwe" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"gwl" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/spawner/random/trash/moisture_trap,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"gws" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/weather/dirt{
- dir = 1
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"gwz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/structure/sign/departments/aisat/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor2/aft)
-"gwE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/security/brig)
-"gwH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/smooth_large,
-/area/station/tcommsat/computer)
-"gwL" = (
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/fore)
-"gwN" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/hydroponics/constructable{
- anchored = 0
- },
-/obj/machinery/light/small/broken/directional/south,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"gwT" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/spawner/random/engineering/tool,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"gxb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable/multilayer/multiz,
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"gxc" = (
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"gxd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 8
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"gxf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/cigbutt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"gxi" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/paramedic)
-"gxn" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"gxr" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"gxH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"gxP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"gxQ" = (
-/obj/machinery/airalarm/directional/north,
-/obj/structure/closet/toolcloset,
-/obj/effect/turf_decal/trimline/dark_blue/end{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"gxT" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/obj/machinery/airalarm/directional/east,
-/obj/item/multitool,
-/obj/item/screwdriver,
-/obj/item/wrench,
-/obj/item/stack/cable_coil,
-/turf/open/floor/iron/dark,
-/area/station/engineering/storage/tcomms)
-"gxU" = (
-/obj/machinery/vending/medical,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/medbay/central)
-"gxW" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/item/storage/box/mousetraps,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"gxX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/chair,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"gyd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/maintenance/two,
-/obj/structure/closet/crate/cardboard,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"gyf" = (
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"gyp" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"gyr" = (
-/turf/closed/wall,
-/area/station/service/kitchen)
-"gyu" = (
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/arrow_ccw,
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"gyy" = (
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"gyz" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"gyG" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"gyI" = (
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"gyS" = (
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"gyW" = (
-/obj/structure/weightmachine/weightlifter,
-/obj/machinery/light/directional/east,
-/turf/open/floor/noslip,
-/area/station/commons/fitness)
-"gyX" = (
-/obj/structure/chair/sofa/left/brown{
- dir = 1
- },
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"gzc" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/sign/directions/security/directional/west{
- dir = 2
- },
-/obj/structure/sign/directions/command/directional/west{
- dir = 2;
- pixel_y = -8
- },
-/obj/structure/sign/directions/vault/directional/west{
- dir = 2;
- pixel_y = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"gzt" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"gzv" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"gzw" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"gzM" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/cytology)
-"gzO" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"gzT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/tcommsat/computer)
-"gzU" = (
-/obj/effect/decal/cleanable/garbage,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"gAe" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"gAf" = (
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"gAg" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"gAi" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/brig)
-"gAt" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"gAC" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"gAD" = (
-/obj/structure/closet/secure_closet/personal/patient,
-/obj/machinery/vending/wallmed/directional/south,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"gAP" = (
-/obj/item/reagent_containers/spray/syndicate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"gAT" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"gAW" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"gBo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"gBp" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"gBr" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"gBs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/mop,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"gBu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"gBz" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/paramedic)
-"gBG" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"gBK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate{
- icon_state = "crateopen"
- },
-/obj/effect/spawner/random/entertainment/plushie,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"gBN" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"gBU" = (
-/obj/item/radio/intercom/directional/north,
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 1
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor4/fore)
-"gBV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/directional/north{
- c_tag = "Medbay - Treatment Center";
- name = "medbay camera";
- network = list("ss13","medbay");
- dir = 2
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"gBX" = (
-/obj/effect/turf_decal/trimline/blue/corner,
-/obj/structure/window/spawner/directional/east,
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 8
- },
-/obj/machinery/recharge_station,
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/engineering/lobby)
-"gCv" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/button/door/directional/north{
- id = "disposals-launch";
- req_access = list("cargo")
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/disposal)
-"gCw" = (
-/obj/machinery/vending/wardrobe/coroner_wardrobe,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"gCC" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"gCD" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"gCE" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"gCG" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/fore)
-"gCH" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"gCM" = (
-/obj/structure/table,
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 10
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"gCP" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/structure/sign/departments/psychology/directional/west{
- name = "Asylum Entrance"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"gDe" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"gDx" = (
-/turf/closed/wall,
-/area/station/security/interrogation)
-"gDy" = (
-/turf/closed/wall,
-/area/station/maintenance/floor4/starboard)
-"gDL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/poster/random/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"gDM" = (
-/obj/effect/turf_decal/siding/wideplating,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"gDO" = (
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"gDW" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"gEa" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"gEc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"gEe" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Third Deck Outpost"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"gEf" = (
-/turf/closed/wall,
-/area/station/solars/port/aft)
-"gEh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/start/warden,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"gEk" = (
-/obj/machinery/suit_storage_unit/security,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"gEl" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"gEv" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Genetics Lab"
- },
-/obj/effect/turf_decal/siding/purple{
- dir = 10
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"gEB" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"gEL" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"gET" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"gEW" = (
-/obj/machinery/computer/communications{
- dir = 1
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/bridge)
-"gEZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"gFh" = (
-/obj/effect/spawner/random/engineering/tank,
-/obj/effect/turf_decal/trimline/dark_blue/end{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"gFk" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/department/engine/atmos)
-"gFz" = (
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 1
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"gFO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"gFS" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"gFT" = (
-/obj/machinery/firealarm/directional/south,
-/obj/machinery/camera/directional/south{
- c_tag = "Security - Office Aft"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"gGe" = (
-/obj/machinery/telecomms/bus/preset_one,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"gGi" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"gGp" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"gGt" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{
- dir = 4
- },
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"gGx" = (
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/port/aft)
-"gGA" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/machinery/button/door/directional/south{
- id = "workshop-sci";
- name = "shutters control"
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"gGB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/lead_pipe,
-/obj/structure/closet/cardboard/metal,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"gGH" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"gGO" = (
-/obj/machinery/camera/directional/west,
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"gGX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"gHi" = (
-/obj/structure/table/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"gHk" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 9
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"gHp" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/sign/poster/official/safety_internals/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"gHs" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"gHu" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"gHw" = (
-/obj/machinery/exodrone_launcher,
-/obj/item/exodrone,
-/turf/open/floor/plating/elevatorshaft,
-/area/station/cargo/drone_bay)
-"gHB" = (
-/obj/item/clothing/suit/toggle/owlwings/griffinwings,
-/obj/item/clothing/under/costume/griffin,
-/obj/item/clothing/shoes/griffin,
-/obj/structure/sign/poster/contraband/the_griffin/directional/north,
-/obj/structure/closet/cabinet,
-/turf/open/floor/wood/parquet,
-/area/station/maintenance/floor2/port/aft)
-"gHJ" = (
-/obj/effect/mapping_helpers/burnt_floor,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"gHM" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"gHO" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"gHU" = (
-/obj/structure/rack,
-/obj/item/storage/box/syringes,
-/obj/item/storage/box/beakers{
- pixel_x = 2;
- pixel_y = 2
- },
-/obj/effect/turf_decal/box/white,
-/obj/item/storage/bag/chemistry,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"gHV" = (
-/obj/effect/decal/cleanable/oil,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"gHY" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"gIa" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"gIb" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"gId" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sign/warning/pods/directional/east,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"gIf" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"gIg" = (
-/obj/structure/table/wood,
-/obj/item/airlock_painter/decal/tile{
- pixel_y = -5
- },
-/obj/item/airlock_painter,
-/obj/item/airlock_painter/decal{
- pixel_y = 5
- },
-/obj/structure/sign/poster/random/directional/east,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"gIh" = (
-/obj/structure/table/reinforced,
-/obj/item/screwdriver{
- pixel_y = -3
- },
-/obj/item/multitool{
- pixel_x = -5;
- pixel_y = 6
- },
-/obj/item/stock_parts/micro_laser{
- pixel_y = 7
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/floor1/aft)
-"gIl" = (
-/turf/closed/wall,
-/area/station/command/teleporter)
-"gIo" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "roboprivacy";
- name = "Robotics Shutters"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/left/directional/south{
- name = "Robotics Lab";
- req_access = list("robotics")
- },
-/obj/structure/desk_bell{
- pixel_x = -3;
- pixel_y = 2
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"gIs" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"gIz" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"gIK" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"gJg" = (
-/obj/structure/chair/comfy/brown{
- dir = 4
- },
-/obj/effect/landmark/start/captain,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"gJl" = (
-/obj/machinery/computer/security/telescreen/engine_waste/directional/north,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"gJm" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"gJo" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/grimy,
-/area/station/science/xenobiology/hallway)
-"gJp" = (
-/obj/structure/table/reinforced/rglass,
-/obj/item/flashlight/lamp{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/effect/spawner/random/entertainment/coin,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/black,
-/area/station/hallway/secondary/service)
-"gJq" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"gJr" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/light/directional/west,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"gJs" = (
-/obj/machinery/door/airlock/hatch{
- name = "External Path Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"gJu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/navigate_destination/court,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"gJy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"gJz" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/modular_computer/preset/civilian{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"gJA" = (
-/obj/structure/rack,
-/obj/item/restraints/handcuffs{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs{
- pixel_x = 4;
- pixel_y = -3
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"gJI" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"gKa" = (
-/obj/effect/turf_decal/tile/dark/half/contrasted,
-/obj/effect/turf_decal/tile/dark/half/contrasted,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"gKg" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/gravity_generator)
-"gKi" = (
-/obj/effect/landmark/blobstart,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"gKp" = (
-/obj/machinery/door/airlock/research{
- name = "Research Director's Experimentation Bay"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/rd,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"gKu" = (
-/obj/structure/table,
-/obj/item/stack/cable_coil,
-/obj/item/stack/cable_coil{
- pixel_x = -1;
- pixel_y = -3
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"gKy" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"gKG" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 6
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor1/fore)
-"gKN" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"gKO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"gKV" = (
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"gLb" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/plate,
-/obj/item/food/donut/caramel{
- pixel_x = 1;
- pixel_y = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"gLf" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"gLt" = (
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/north,
-/mob/living/simple_animal/bot/floorbot,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"gLy" = (
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Warden's Office"
- },
-/obj/structure/bed/dogbed/mcgriff,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/light/directional/east,
-/mob/living/basic/pet/dog/pug/mcgriff,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"gLA" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-13";
- location = "1-12"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"gLD" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"gLE" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"gLI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"gLK" = (
-/obj/structure/table,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/pipe_dispenser,
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"gMe" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/preopen{
- id = "bridge_glass";
- name = "Bridge Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/command/bridge)
-"gMf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"gMi" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen/fountain,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"gMo" = (
-/obj/structure/rack,
-/obj/item/gun/energy/ionrifle,
-/obj/item/clothing/suit/hooded/ablative,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"gMs" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"gMv" = (
-/obj/effect/mapping_helpers/airlock/access/any/science/ordnance,
-/obj/machinery/door/airlock/research/glass{
- name = "Ordnance Stairway"
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"gMz" = (
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"gMQ" = (
-/obj/structure/cable/multilayer/multiz,
-/obj/effect/turf_decal/stripes/box,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"gMZ" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"gNc" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"gNi" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "disposals"
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"gNm" = (
-/obj/structure/table/wood,
-/obj/machinery/newscaster/directional/south,
-/obj/item/reagent_containers/spray/cleaner,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"gNL" = (
-/obj/item/radio/intercom/directional/east,
-/obj/machinery/button/door/directional/south{
- id = "secmechbay";
- name = "Security Mech Garage Door Controls";
- req_access = list("security")
- },
-/obj/effect/turf_decal/trimline/brown/filled/end{
- dir = 8
- },
-/obj/machinery/modular_computer/preset/cargochat/security{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/security/office)
-"gNN" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard)
-"gNS" = (
-/obj/structure/flora/rock,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/fakebasalt,
-/area/station/maintenance/floor3/port)
-"gNU" = (
-/obj/machinery/modular_computer/preset/id,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"gOd" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"gOf" = (
-/obj/effect/turf_decal/trimline/yellow/corner,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"gOp" = (
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"gOx" = (
-/obj/machinery/computer{
- desc = "Looks like someone punched the keyboard until it stopped working.";
- dir = 8;
- name = "Shattered Records Console"
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"gOz" = (
-/obj/structure/grille/broken,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"gOF" = (
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/effect/turf_decal/stripes{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"gOO" = (
-/obj/structure/table,
-/obj/machinery/newscaster/directional/east,
-/obj/item/hand_labeler,
-/obj/item/book/manual/chef_recipes{
- pixel_x = 2;
- pixel_y = 6
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"gOU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/end{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"gOZ" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/chem_mass_spec,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"gPb" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"gPc" = (
-/obj/machinery/suit_storage_unit/engine,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 4
- },
-/area/station/engineering/lobby)
-"gPr" = (
-/turf/open/floor/iron/textured_corner{
- dir = 1
- },
-/area/station/cargo/office)
-"gPt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"gPJ" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"gPR" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/fore)
-"gQa" = (
-/obj/machinery/firealarm/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/canister,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"gQh" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"gQx" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/closed/wall/r_wall,
-/area/station/hallway/floor2/aft)
-"gQy" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/radio/intercom/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"gQA" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/end{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"gQI" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"gQO" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"gQU" = (
-/obj/structure/table/wood,
-/obj/machinery/coffeemaker/impressa,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"gQV" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"gRf" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor1/aft)
-"gRh" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"gRj" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"gRw" = (
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 10
- },
-/turf/closed/wall/r_wall,
-/area/station/maintenance/disposal/incinerator)
-"gRx" = (
-/obj/machinery/holopad,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"gRA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/weldingtool/mini,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"gRI" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"gRQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/broken/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"gSd" = (
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"gSj" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"gSk" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/textured_half,
-/area/station/hallway/secondary/entry)
-"gSn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"gSs" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"gSu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/structure/electrified_grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"gSw" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/white/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/storage/tech)
-"gSx" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"gSD" = (
-/obj/structure/rack,
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/armory/bulletproof_armor,
-/obj/effect/spawner/random/armory/bulletproof_helmet,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"gSS" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"gTd" = (
-/obj/structure/cable,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"gTk" = (
-/obj/structure/stairs/south,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"gTp" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"gTs" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"gTt" = (
-/obj/structure/reagent_dispensers/water_cooler,
-/obj/structure/sign/departments/restroom/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"gTA" = (
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"gTF" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"gTL" = (
-/obj/effect/turf_decal/trimline/purple/warning,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"gTR" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"gTT" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"gTW" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{
- dir = 5
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"gTZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/computer/security/telescreen/engine_waste/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/pumproom)
-"gUc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"gUp" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"gUs" = (
-/turf/open/floor/engine/air,
-/area/station/engineering/atmos)
-"gUH" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/armory/laser_gun,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"gUO" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/purple,
-/obj/item/radio/intercom/directional/south,
-/obj/item/reagent_containers/cup/mortar,
-/obj/item/pestle,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningdock)
-"gUR" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"gUS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/mech_bay_recharge_port{
- dir = 2
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/warehouse)
-"gUT" = (
-/mob/living/basic/slime,
-/turf/open/floor/grass,
-/area/station/maintenance/floor3/starboard)
-"gUX" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/science/server)
-"gVm" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/machinery/recharge_station,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"gVw" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"gVx" = (
-/obj/structure/closet/firecloset,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"gVA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/structure/electrified_grille,
-/obj/effect/decal/cleanable/glass,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"gVI" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"gVR" = (
-/obj/machinery/camera/motion/directional/north{
- c_tag = "Armoury - Exterior"
- },
-/turf/open/openspace,
-/area/station/maintenance/floor4/port/aft)
-"gVS" = (
-/obj/structure/hedge,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"gWg" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"gWv" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"gWA" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/aft)
-"gWF" = (
-/obj/effect/landmark/start/prisoner,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"gWN" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"gWU" = (
-/obj/machinery/computer/security/labor,
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"gWY" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"gWZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"gXi" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"gXl" = (
-/obj/machinery/computer/cargo{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"gXo" = (
-/obj/structure/punching_bag,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"gXp" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"gXs" = (
-/obj/structure/flora/bush/grassy/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"gXG" = (
-/obj/structure/chair/sofa/bench{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"gXH" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"gXM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = -32;
- spawn_loot_chance = 50
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"gXO" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"gXW" = (
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"gYa" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 4
- },
-/obj/effect/turf_decal/siding/blue{
- dir = 4;
- pixel_x = -15
- },
-/obj/effect/landmark/start/assistant,
-/obj/structure/chair,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"gYb" = (
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/station/solars/port/aft)
-"gYc" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/structure/table/reinforced/rglass,
-/obj/item/screwdriver,
-/turf/open/floor/iron/large,
-/area/station/science/robotics/lab)
-"gYe" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"gYh" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"gYj" = (
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = 32
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"gYt" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"gYI" = (
-/obj/structure/fluff/shower_drain,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"gYN" = (
-/obj/machinery/airalarm/directional/west,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/locker)
-"gYO" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"gYS" = (
-/turf/closed/wall/r_wall,
-/area/station/hallway/floor4/fore)
-"gYX" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"gZf" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/table,
-/turf/open/floor/iron/white/side,
-/area/station/hallway/floor2/fore)
-"gZm" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"gZn" = (
-/obj/structure/table/bronze,
-/obj/item/storage/fancy/candle_box{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/storage/fancy/candle_box{
- pixel_x = -2;
- pixel_y = 2
- },
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"gZu" = (
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"gZG" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"gZL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"gZQ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{
- dir = 1
- },
-/obj/effect/landmark/start/atmospheric_technician,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"hab" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "cmoshutter";
- name = "CMO Privacy Shutters"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/cmo)
-"hah" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white/smooth_corner{
- dir = 4
- },
-/area/station/cargo/miningdock)
-"hai" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/rack,
-/obj/item/stack/sheet/iron/ten,
-/obj/item/circuitboard/machine/exoscanner,
-/obj/item/circuitboard/machine/exoscanner,
-/obj/item/circuitboard/machine/exoscanner,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/corner,
-/area/station/cargo/drone_bay)
-"haj" = (
-/obj/effect/landmark/start/psychologist,
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"har" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/computer/security/telescreen/entertainment/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"has" = (
-/obj/item/radio/intercom/directional/north,
-/obj/structure/closet/secure_closet/personal/cabinet,
-/turf/open/floor/wood,
-/area/station/cargo/miningdock)
-"hat" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"hav" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"hax" = (
-/obj/machinery/photobooth,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"haB" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/iv_drip,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"haK" = (
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"haL" = (
-/obj/structure/flora/bush/flowers_pp/style_random,
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"haM" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"haS" = (
-/obj/structure/fluff/paper/stack{
- desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging.";
- dir = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"haV" = (
-/obj/item/radio/intercom/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"haW" = (
-/obj/structure/table/bronze,
-/obj/item/book/bible,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"hbe" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/effect/spawner/random/engineering/canister,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"hbg" = (
-/obj/machinery/vending/cigarette,
-/turf/open/floor/wood,
-/area/station/hallway/floor4/fore)
-"hbi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"hbj" = (
-/obj/machinery/door/window/left/directional/north{
- name = "Smoking Area"
- },
-/obj/effect/turf_decal/trimline/neutral/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"hbk" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"hbl" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"hbm" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"hbs" = (
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 1
- },
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"hbw" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/locker)
-"hbz" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"hbN" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"hbS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"hbW" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/structure/closet/firecloset,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"hbX" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/maintenance/disposal)
-"hca" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"hch" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"hci" = (
-/obj/machinery/power/terminal{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"hcj" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"hcr" = (
-/obj/effect/turf_decal/tile/neutral/half/contrasted,
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth_edge{
- dir = 1
- },
-/area/station/science/robotics/mechbay)
-"hct" = (
-/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"hcF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"hcO" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/locker)
-"hcR" = (
-/obj/structure/ladder,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"hcT" = (
-/turf/open/openspace,
-/area/station/maintenance/floor3/port/aft)
-"hdg" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/remains/human,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/burnt_floor,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"hdh" = (
-/obj/structure/sign/poster/random/directional/west,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/apartment1)
-"hdj" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"hds" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"hdx" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"hdy" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"hdz" = (
-/obj/structure/curtain/cloth,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/fitness)
-"hdA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"hdL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"hdN" = (
-/obj/structure/sign/painting/large/library{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/end{
- dir = 8
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/artgallery)
-"hdS" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/airalarm/directional/south,
-/obj/structure/sink/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"hdX" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"hee" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"heg" = (
-/obj/machinery/space_heater/improvised_chem_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"hem" = (
-/obj/effect/turf_decal/trimline/brown/arrow_ccw{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/cargo/lobby)
-"hep" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 10
- },
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"hex" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"heC" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/clothing/costume,
-/obj/item/clothing/mask/balaclava,
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"heF" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"heI" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"heR" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "chem-lock-f";
- name = "Chemistry Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/pharmacy)
-"heY" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"hfb" = (
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"hfd" = (
-/obj/structure/bed/medical/emergency,
-/obj/machinery/iv_drip,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"hfe" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/spawner/random/trash/box,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"hfm" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"hfz" = (
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"hfC" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"hfD" = (
-/obj/machinery/atmospherics/components/binary/pump,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"hfE" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"hfO" = (
-/obj/structure/window/reinforced/tinted/spawner/directional/east,
-/obj/structure/filingcabinet/chestdrawer,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"hge" = (
-/turf/open/floor/engine,
-/area/station/command/heads_quarters/rd)
-"hgn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"hgB" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"hgC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"hgD" = (
-/obj/machinery/vending/coffee,
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"hgE" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"hgK" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"hgM" = (
-/obj/machinery/libraryscanner,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"hgN" = (
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 8
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"hgQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/floor2/starboard/aft)
-"hgS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hhb" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{
- dir = 4
- },
-/obj/machinery/light/cold/directional/north,
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"hhf" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/aft)
-"hhk" = (
-/obj/structure/foamedmetal,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"hhl" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"hhw" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"hhx" = (
-/turf/closed/wall,
-/area/station/hallway/secondary/exit)
-"hhz" = (
-/obj/machinery/computer/turbine_computer{
- dir = 8;
- mapping_id = "main_turbine"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/disposal/incinerator)
-"hhI" = (
-/obj/effect/turf_decal/caution/stand_clear,
-/obj/effect/turf_decal/siding/dark_blue,
-/obj/effect/turf_decal/siding/dark_blue{
- dir = 1
- },
-/obj/machinery/door/poddoor/shutters/window{
- id = "stationawaygate";
- name = "Gateway Access Shutters"
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"hhQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/security/prison)
-"hhX" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"hic" = (
-/obj/item/bodybag,
-/obj/structure/closet/crate,
-/obj/effect/spawner/random/medical/surgery_tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"hio" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"hip" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"hit" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/radio/intercom,
-/obj/item/paper/fluff/jobs/engineering/frequencies,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"hiu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"hiD" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/disposal)
-"hiF" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"hiJ" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/turf_decal/bot,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/mechbay)
-"hiQ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"hiU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"hjd" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/effect/landmark/start/chemist,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"hje" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"hjg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"hjr" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"hjs" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"hjx" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"hjz" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"hjE" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
-/turf/open/space/basic,
-/area/space/nearstation)
-"hjF" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"hjH" = (
-/obj/structure/chair/comfy,
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/landmark/start/depsec/medical,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"hjK" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/medical/psychology)
-"hjN" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"hjP" = (
-/obj/structure/chair/office{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard/aft)
-"hjV" = (
-/obj/item/stack/sheet/iron,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"hkd" = (
-/obj/structure/sign/warning/vacuum/external{
- pixel_x = 32
- },
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 4
- },
-/obj/vehicle/ridden/secway,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"hke" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"hkq" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos)
-"hkw" = (
-/turf/open/floor/iron/white/side{
- dir = 6
- },
-/area/station/hallway/floor2/fore)
-"hkK" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/machinery/newscaster/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"hkV" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"hkZ" = (
-/obj/machinery/door/airlock{
- name = "Service Hall"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"hle" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"hlo" = (
-/obj/structure/reagent_dispensers/watertank/high,
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"hlG" = (
-/obj/structure/closet/mini_fridge{
- pixel_x = 6;
- pixel_y = 5
- },
-/obj/structure/table,
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment2)
-"hlP" = (
-/obj/machinery/button/door/directional/north{
- id = "mechbay";
- name = "Mech Bay Shutters Control";
- req_access = list("robotics")
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/science/robotics/mechbay)
-"hlU" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/item/kirbyplants/random,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"hlX" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/obj/structure/chair/sofa/right/brown{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"hma" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/delivery,
-/obj/structure/table,
-/obj/item/storage/toolbox/electrical{
- pixel_y = 10
- },
-/obj/item/airlock_painter/decal/tile,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"hmn" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/fore)
-"hmu" = (
-/obj/structure/dresser,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"hmH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"hmJ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"hmM" = (
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/machinery/portable_atmospherics/pump,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
-"hmN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 10
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
-"hmX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"hnb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/stairs{
- dir = 1
- },
-/area/station/cargo/bitrunning/den)
-"hng" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"hni" = (
-/obj/machinery/door/airlock/highsecurity{
- name = "AI Upload"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"hns" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/obj/machinery/modular_computer/preset/civilian{
- dir = 8
- },
-/obj/effect/turf_decal/bot_white,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"hnz" = (
-/obj/effect/spawner/random/maintenance,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"hnC" = (
-/obj/structure/bed/dogbed/ian,
-/mob/living/basic/pet/dog/corgi/ian,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"hnG" = (
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"hnL" = (
-/obj/structure/table/reinforced,
-/obj/item/flashlight/lamp,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"hnS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/science/lobby)
-"hnU" = (
-/obj/effect/turf_decal/loading_area,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"hnX" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/siding/thinplating_new,
-/mob/living/basic/butterfly,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"hnZ" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"hoa" = (
-/obj/structure/table/reinforced,
-/obj/item/book/manual/wiki/ordnance{
- pixel_x = 4;
- pixel_y = 1
- },
-/obj/item/computer_disk,
-/obj/item/computer_disk{
- pixel_y = 4
- },
-/obj/item/computer_disk{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/computer_disk/ordnance{
- pixel_x = -4;
- pixel_y = -1
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"hoj" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"hoo" = (
-/obj/effect/turf_decal/siding/white/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"hoy" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin{
- pixel_y = 3
- },
-/obj/item/pen,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"hoB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"hoF" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"hoK" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"hoM" = (
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/machinery/door/airlock/security/glass{
- name = "Security Entrance"
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"hoW" = (
-/obj/machinery/door/airlock/silver/glass{
- name = "Kitchen"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"hpc" = (
-/obj/effect/turf_decal/box/white,
-/obj/effect/turf_decal/arrows/white{
- color = "#0000FF";
- pixel_y = 15
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"hpe" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"hpg" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"hpi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"hpj" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"hpn" = (
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit)
-"hpz" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/machinery/digital_clock/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"hpF" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"hpI" = (
-/turf/closed/wall,
-/area/station/commons/fitness/recreation)
-"hpV" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/closet/crate,
-/obj/item/shard,
-/obj/item/shard,
-/obj/item/stack/cable_coil,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"hpW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"hqh" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"hqi" = (
-/obj/machinery/computer/arcade/amputation,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"hqv" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"hqy" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/structure/chair/office{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"hqD" = (
-/obj/machinery/atmospherics/components/unary/passive_vent{
- name = "killroom vent"
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/station/science/xenobiology)
-"hqG" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #7";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"hqR" = (
-/obj/structure/railing/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"hrc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"hre" = (
-/obj/machinery/vending/wardrobe/law_wardrobe,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/service/lawoffice)
-"hrp" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/hobo_squat,
-/obj/item/clothing/neck/necklace/dope{
- desc = "A memento, it belonged to a man's murdered father.";
- name = "significant gold necklace"
- },
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hrw" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/chair/plastic{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"hry" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"hrB" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"hrC" = (
-/obj/structure/sign/poster/contraband/syndicate_pistol,
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"hrL" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"hrW" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"hsa" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"hse" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/secondary/entry)
-"hsh" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/structure/barricade/wooden/snowed,
-/obj/effect/turf_decal/weather/snow/corner{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hss" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"hsA" = (
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"hsG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"hsI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"hsK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/bucket,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hsT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/structure/window/hollow/plasma/middle,
-/obj/structure/girder/reinforced,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard)
-"hsU" = (
-/obj/structure/chair/stool/bar/directional/south,
-/obj/item/stack/arcadeticket,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"hsW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"htc" = (
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"hte" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"htg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"hto" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"htq" = (
-/obj/effect/decal/cleanable/plastic,
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"htr" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"htD" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"htF" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/aft)
-"htG" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"htW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"hug" = (
-/obj/structure/toilet{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/captain/private)
-"huh" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"huk" = (
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"hur" = (
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/lobby)
-"hut" = (
-/obj/structure/stairs/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"huz" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/reagent_dispensers/plumbed{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/science/genetics)
-"huJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"huR" = (
-/obj/machinery/door/airlock/medical{
- name = "The Blue Door"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/blue,
-/area/station/maintenance/floor3/port/aft)
-"huT" = (
-/obj/structure/cable,
-/obj/machinery/status_display/ai/directional/west,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"hvb" = (
-/obj/machinery/mech_bay_recharge_port{
- dir = 2
- },
-/obj/effect/turf_decal/tile/red/anticorner,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"hvc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/silver/glass{
- name = "Kitchen"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"hvf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"hvv" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"hvB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Evidence Lockers"
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"hvC" = (
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"hvD" = (
-/obj/machinery/camera{
- c_tag = "Atmos Tank #2 - O2";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine/o2,
-/area/station/engineering/atmos)
-"hvE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"hvF" = (
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"hvY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"hwd" = (
-/obj/structure/rack,
-/obj/item/storage/briefcase/secure,
-/obj/item/restraints/handcuffs,
-/obj/machinery/light/small/directional/south,
-/obj/machinery/camera/directional/east{
- c_tag = "Detective's Backroom"
- },
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"hwe" = (
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/disposal/delivery_chute{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw,
-/obj/structure/window/reinforced/tinted/spawner/directional/south,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/turf_decal/trimline/green/filled/mid_joiner,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"hwi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"hwr" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"hwt" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"hww" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 8
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"hwL" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"hwM" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"hwN" = (
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/turretid{
- control_area = "/area/station/ai_monitored/turret_protected/aisat_interior";
- name = "Antechamber Turret Control";
- pixel_y = -32
- },
-/turf/open/openspace,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"hwP" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"hwQ" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"hwV" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"hxl" = (
-/obj/structure/toilet{
- dir = 4
- },
-/obj/structure/curtain,
-/obj/machinery/shower/directional/south,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"hxy" = (
-/obj/structure/hedge,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"hxz" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"hxF" = (
-/obj/structure/closet/wardrobe/black,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hxJ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "captain_privacy";
- name = "Captain's Private Room Shutters"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/captain/private)
-"hxL" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"hxN" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"hxP" = (
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/apartment2)
-"hyp" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"hys" = (
-/obj/structure/spider/stickyweb,
-/obj/item/chair,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"hyt" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"hyx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"hyD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"hyL" = (
-/obj/structure/cable,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/atmos/hfr_room)
-"hyN" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/firealarm/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"hyR" = (
-/obj/machinery/light/directional/west,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"hyW" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"hyY" = (
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"hzf" = (
-/obj/machinery/computer/rdconsole{
- dir = 8
- },
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"hzq" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"hzu" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat)
-"hzv" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/trunk/multiz,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"hzE" = (
-/obj/structure/chair/comfy/brown,
-/obj/effect/turf_decal/siding/wood/end{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"hzI" = (
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"hzJ" = (
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/atmos,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-16";
- location = "1-15"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"hzL" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"hzQ" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"hzR" = (
-/obj/item/shovel,
-/turf/open/misc/asteroid/snow/standard_air{
- icon_state = "snow5"
- },
-/area/station/maintenance/floor2/port/aft)
-"hzU" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/theatre,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"hzV" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"hzX" = (
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"hAc" = (
-/obj/effect/decal/cleanable/blood/tracks,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"hAg" = (
-/turf/open/openspace,
-/area/station/maintenance/floor2/port)
-"hAk" = (
-/obj/structure/flora/tree/jungle/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"hAn" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/lobby)
-"hAs" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/flora/bush/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"hAH" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"hAI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"hAO" = (
-/obj/structure/table/wood,
-/obj/item/storage/fancy/cigarettes/cigpack_midori{
- pixel_x = -6;
- pixel_y = -4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/lighter{
- pixel_x = 8;
- pixel_y = 7
- },
-/obj/effect/spawner/random/entertainment/drugs,
-/turf/open/floor/carpet/purple,
-/area/station/maintenance/floor1/port/aft)
-"hAP" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/brigdoor/right/directional/south{
- name = "Armoury Desk";
- req_access = list("armory")
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"hAR" = (
-/obj/effect/turf_decal/tile/neutral/half/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth_edge{
- dir = 1
- },
-/area/station/science/robotics/mechbay)
-"hAT" = (
-/obj/structure/stairs/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"hAV" = (
-/obj/structure/table,
-/obj/machinery/button/ticket_machine{
- pixel_x = -24;
- pixel_y = -6
- },
-/obj/item/stamp/head/hop{
- pixel_x = 8;
- pixel_y = 5
- },
-/obj/item/flashlight/lamp{
- pixel_x = -4;
- pixel_y = 3
- },
-/obj/machinery/button/photobooth{
- pixel_y = 6;
- pixel_x = -24
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"hBe" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"hBw" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"hBx" = (
-/obj/effect/mapping_helpers/airlock/access/all/command/captain,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/silver{
- name = "Captain's Bathroom"
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/captain/private)
-"hBG" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"hBN" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hBT" = (
-/obj/structure/table,
-/obj/structure/bedsheetbin,
-/obj/item/razor,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"hCh" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/blue/warning,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"hCs" = (
-/obj/item/storage/toolbox/mechanical,
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/obj/structure/table,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"hCt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"hCv" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/turf_decal/caution/stand_clear/white,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/aft)
-"hCD" = (
-/obj/structure/table,
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/stack/rods/fifty,
-/obj/item/stack/rods/fifty,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"hCJ" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"hCK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"hCM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"hCT" = (
-/obj/item/stack/sheet/iron/fifty,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/delivery,
-/obj/structure/table,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"hCV" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/item/storage/pill_bottle/mutadone{
- pixel_x = -9
- },
-/obj/item/toy/figure/geneticist,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"hDa" = (
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/plating/elevatorshaft,
-/area/station/cargo/drone_bay)
-"hDb" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/effect/turf_decal/weather/dirt{
- dir = 9
- },
-/obj/machinery/duct,
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"hDf" = (
-/obj/structure/cable,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"hDr" = (
-/turf/closed/indestructible/riveted{
- desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease";
- name = "hyper-reinforced wall"
- },
-/area/station/science/ordnance/bomb)
-"hDy" = (
-/obj/effect/turf_decal/trimline/green,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"hDI" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/structure/table/reinforced,
-/obj/item/storage/toolbox/mechanical{
- pixel_y = 10
- },
-/obj/item/storage/toolbox/electrical{
- pixel_x = 3;
- pixel_y = 1
- },
-/obj/item/clothing/glasses/welding{
- pixel_x = -1;
- pixel_y = -3
- },
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"hDK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"hDU" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"hDZ" = (
-/obj/structure/table/wood,
-/obj/machinery/computer/security/telescreen/entertainment/directional/east,
-/obj/machinery/recharger,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"hEc" = (
-/obj/structure/bodycontainer/crematorium{
- name = "broken crematorium"
- },
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"hEm" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"hEo" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"hEu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"hED" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"hEM" = (
-/obj/machinery/camera/directional/east{
- c_tag = "Xenobio - Kill Room"
- },
-/obj/structure/sign/warning/cold_temp/directional/east,
-/turf/open/floor/engine/hull/reinforced,
-/area/station/science/xenobiology)
-"hEO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"hEQ" = (
-/obj/structure/filingcabinet,
-/obj/effect/turf_decal/bot_white,
-/obj/item/folder/documents,
-/obj/effect/turf_decal/tile/blue/full,
-/turf/open/floor/iron/textured_large,
-/area/station/ai_monitored/command/nuke_storage)
-"hFa" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit)
-"hFb" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/fore)
-"hFc" = (
-/obj/structure/table/wood,
-/obj/item/chisel,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"hFi" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/entry)
-"hFA" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"hFE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-18";
- location = "2-17"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"hFL" = (
-/obj/effect/turf_decal/siding/purple,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"hFM" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/machinery/drone_dispenser,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"hFS" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/right/directional/north{
- name = "Research Desk";
- req_access = list("science")
- },
-/obj/item/experi_scanner,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"hFW" = (
-/obj/item/stack/sheet/cardboard,
-/obj/item/newspaper,
-/obj/structure/rack,
-/obj/effect/spawner/random/food_or_drink/donkpockets,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"hGa" = (
-/obj/machinery/light_switch/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"hGj" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/textured_edge{
- dir = 1
- },
-/area/station/medical/chemistry)
-"hGp" = (
-/obj/structure/bookcase/random/reference,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"hGy" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"hGz" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/warning/pods/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/escape_pod)
-"hGA" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"hGB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"hGC" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{
- dir = 1
- },
-/obj/effect/spawner/structure/window/hollow/plasma/middle,
-/obj/machinery/atmospherics/pipe/smart/simple/purple,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"hGG" = (
-/obj/structure/rack,
-/obj/item/stock_parts/micro_laser{
- pixel_y = 7
- },
-/obj/item/stock_parts/power_store/cell/high{
- pixel_x = -4;
- pixel_y = -6
- },
-/obj/item/vending_refill/wardrobe/science_wardrobe{
- pixel_y = 18
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"hGL" = (
-/obj/machinery/light/small/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/blue,
-/area/station/maintenance/floor3/port/aft)
-"hGP" = (
-/obj/structure/chair/comfy/black,
-/obj/structure/sign/departments/botany/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/fore)
-"hGQ" = (
-/obj/structure/rack,
-/obj/machinery/light/red/dim/directional/east,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"hGW" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"hHa" = (
-/obj/effect/spawner/random/engineering/tank,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/maintenance/floor2/starboard/fore)
-"hHc" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"hHe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 8
- },
-/obj/structure/table/reinforced/rglass,
-/obj/machinery/door/window/right/directional/east{
- name = "First Aid Supplies";
- req_access = list("medical")
- },
-/obj/structure/desk_bell{
- pixel_y = 1;
- pixel_x = -5
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/lobby)
-"hHi" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/closet/crate/science{
- name = "Parts crate"
- },
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/prox_sensor,
-/obj/item/assembly/signaler,
-/obj/item/assembly/signaler,
-/obj/item/assembly/signaler,
-/obj/item/assembly/signaler,
-/obj/item/assembly/signaler,
-/obj/item/assembly/signaler,
-/obj/item/assembly/timer,
-/obj/item/assembly/timer,
-/obj/item/assembly/timer,
-/obj/item/assembly/timer,
-/obj/machinery/light_switch/directional/west,
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"hHn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/broken/directional/east,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"hHq" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"hHr" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"hHB" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"hHH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"hIb" = (
-/turf/closed/wall,
-/area/station/hallway/floor4/fore)
-"hIe" = (
-/obj/machinery/vending/coffee,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 10
- },
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"hIj" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/exoscanner,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/cargo/drone_bay)
-"hIk" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"hIn" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"hIp" = (
-/obj/item/skillchip/light_remover,
-/obj/structure/closet/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"hIB" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/turf/open/floor/iron/large,
-/area/station/command/gateway)
-"hII" = (
-/obj/structure/chair/sofa/bench{
- dir = 1
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"hIQ" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"hIR" = (
-/obj/effect/turf_decal/tile/dark_blue/opposingcorners,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/security/prison/garden)
-"hJc" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"hJg" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 1
- },
-/obj/item/radio/intercom/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"hJq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"hJy" = (
-/turf/closed/wall,
-/area/station/maintenance/floor1/port/fore)
-"hJD" = (
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"hJF" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"hJG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"hJJ" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/keycard_auth/wall_mounted/directional/south,
-/obj/item/kirbyplants/random,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"hJK" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"hJQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"hJU" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"hJV" = (
-/obj/structure/stairs/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"hKa" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"hKg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/hallway/floor4/fore)
-"hKm" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/brown{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"hKq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/lobby)
-"hKt" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/command/gateway)
-"hKv" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/reagent_containers/syringe/contraband/space_drugs,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"hKw" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"hKx" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"hKN" = (
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/qm)
-"hKS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"hKU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"hKZ" = (
-/obj/machinery/button/door/directional/south{
- id = "dorms_1_bolts";
- name = "Dorms 1 Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/commons/dorms/room1)
-"hLd" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/service/library)
-"hLg" = (
-/obj/structure/closet/wardrobe/mixed,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"hLk" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 9
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_corner,
-/area/station/engineering/supermatter/room)
-"hLo" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"hLq" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"hLs" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/engineering/storage/tech)
-"hLv" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-8";
- location = "2-7"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"hLy" = (
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"hLz" = (
-/turf/closed/wall,
-/area/station/maintenance/floor2/port/fore)
-"hLB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"hLL" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"hLP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"hLX" = (
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"hMd" = (
-/turf/closed/wall,
-/area/station/security/prison/visit)
-"hMg" = (
-/obj/effect/turf_decal/trimline/blue/warning,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"hMm" = (
-/obj/machinery/vending/cart,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"hMp" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"hMr" = (
-/obj/machinery/computer/order_console/bitrunning{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/end{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"hMs" = (
-/obj/structure/table,
-/obj/effect/spawner/random/food_or_drink/refreshing_beverage,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"hML" = (
-/obj/structure/railing{
- dir = 9
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"hMU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/contraband/random/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hMV" = (
-/turf/open/floor/iron/stairs/medium,
-/area/station/science/lobby)
-"hNf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"hNg" = (
-/obj/machinery/modular_computer/preset/cargochat/cargo{
- dir = 1
- },
-/turf/open/floor/iron/textured_corner,
-/area/station/cargo/office)
-"hNh" = (
-/obj/machinery/suit_storage_unit/standard_unit,
-/obj/effect/turf_decal/bot_white/left,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"hNj" = (
-/obj/machinery/door/poddoor/massdriver_ordnance,
-/obj/structure/fans/tiny,
-/turf/open/floor/plating,
-/area/station/science/ordnance/storage)
-"hNr" = (
-/obj/effect/turf_decal/tile/brown/opposingcorners,
-/obj/effect/turf_decal/tile/brown/opposingcorners,
-/obj/effect/turf_decal/stripes/white/line,
-/obj/structure/table,
-/turf/open/floor/iron/dark,
-/area/station/science/circuits)
-"hNz" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/structure/disposalpipe/segment{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"hNA" = (
-/obj/effect/turf_decal/stripes/end{
- dir = 8
- },
-/obj/machinery/door/window/right/directional/west{
- name = "Containment";
- req_access = list("xenobiology")
- },
-/obj/machinery/door/poddoor/preopen{
- id = "Xenolab";
- name = "Test Chamber Blast Door"
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"hNB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"hNO" = (
-/obj/machinery/door/window/brigdoor/security/cell/left/directional/west{
- id = "cell-3";
- name = "3rd Floor Prisoner Tube"
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/disposal/delivery_chute{
- name = "prisoner transport";
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"hNU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"hNY" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"hOy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{
- dir = 1
- },
-/obj/machinery/meter,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"hOF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/command/gateway)
-"hOP" = (
-/obj/machinery/incident_display/delam/directional/south,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"hOR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/obj/machinery/meter,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"hOV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"hOX" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 8
- },
-/obj/effect/turf_decal/siding/yellow{
- dir = 8;
- pixel_x = 15
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"hPf" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"hPk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/server)
-"hPq" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"hPA" = (
-/obj/structure/ladder,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"hPK" = (
-/obj/effect/spawner/random/vending/colavend,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"hPL" = (
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"hPX" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/table,
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/duct,
-/obj/item/stack/medical/suture,
-/obj/item/stack/medical/mesh,
-/obj/item/healthanalyzer,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"hQg" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"hQl" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"hQp" = (
-/obj/structure/girder/reinforced,
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/engineering/storage/tcomms)
-"hQy" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos/hfr_room)
-"hQA" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-8";
- location = "3-7"
- },
-/mob/living/simple_animal/bot/secbot/beepsky/officer{
- name = "Beepsky the Third"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"hQE" = (
-/obj/effect/turf_decal/tile/green/fourcorners,
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/machinery/door/airlock/virology{
- autoclose = 0;
- frequency = 1449;
- id_tag = "virology_airlock_interior";
- name = "Virology Interior Airlock"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/medical/virology,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "viro"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"hQK" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"hQO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"hQQ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"hQT" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"hQX" = (
-/obj/structure/table/wood,
-/obj/machinery/newscaster/directional/south,
-/obj/effect/spawner/random/entertainment/money_small,
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"hRd" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"hRg" = (
-/obj/structure/closet/secure_closet/hydroponics,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"hRm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"hRp" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"hRH" = (
-/obj/structure/table,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"hRI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/prison)
-"hRP" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"hRR" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{
- dir = 8
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"hSd" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"hSh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"hSl" = (
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"hSo" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"hSt" = (
-/obj/machinery/status_display/ai/directional/north,
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"hSD" = (
-/obj/structure/closet/secure_closet/hos,
-/obj/machinery/button/door/directional/west{
- id = "hosprivacy";
- name = "Privacy Shutters Control";
- pixel_y = 6
- },
-/obj/machinery/keycard_auth/wall_mounted/directional/west{
- pixel_y = -8
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"hSH" = (
-/obj/machinery/door/airlock{
- id_tag = "CabinS";
- name = "Private Cabin"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/turf/open/floor/iron/dark/smooth_edge,
-/area/station/hallway/secondary/service)
-"hSI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/aft)
-"hSJ" = (
-/obj/structure/rack,
-/obj/item/storage/medkit/regular,
-/obj/item/clothing/glasses/blindfold,
-/obj/item/clothing/mask/muzzle,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"hSO" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"hSP" = (
-/obj/structure/railing/corner,
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"hSQ" = (
-/obj/structure/filingcabinet/employment,
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/service/lawoffice)
-"hST" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"hTd" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"hTj" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"hTr" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"hTu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"hTz" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"hTD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/checkpoint)
-"hTJ" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"hTK" = (
-/obj/machinery/medical_kiosk,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"hTP" = (
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/brown/line,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/cargo/bitrunning/den)
-"hUc" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"hUe" = (
-/obj/machinery/vending/cigarette,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"hUj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"hUk" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"hUA" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "viro-outer";
- name = "Virology Outer Shutters"
- },
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"hUE" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"hUN" = (
-/obj/machinery/mineral/stacking_machine{
- input_dir = 2
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"hUP" = (
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/aft)
-"hUR" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/command{
- name = "Teleporter Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/teleporter,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"hUT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/science/xenobiology)
-"hUX" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"hUY" = (
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"hVk" = (
-/obj/machinery/light/red/dim/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"hVq" = (
-/obj/machinery/washing_machine,
-/obj/machinery/camera/autoname/directional/west,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"hVt" = (
-/obj/structure/hedge/opaque,
-/turf/open/floor/carpet/green,
-/area/station/service/kitchen/diner)
-"hVB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"hVG" = (
-/obj/structure/sign/directions/engineering/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"hVI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"hVK" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"hVZ" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/obj/effect/turf_decal/tile/green/anticorner/contrasted{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"hWn" = (
-/obj/effect/spawner/random/vending/colavend,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor3/fore)
-"hWp" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"hWr" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/components/unary/passive_vent/layer2,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"hWu" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"hWx" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/aft)
-"hWD" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/textured_half,
-/area/station/hallway/secondary/entry)
-"hWF" = (
-/obj/effect/turf_decal/trimline/purple/arrow_ccw,
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"hWG" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"hWH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"hWN" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"hWS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"hWV" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"hXa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/blue,
-/area/station/cargo/miningdock)
-"hXm" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/fore)
-"hXo" = (
-/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"hXp" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/girder,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/turf/open/floor/engine/hull/reinforced,
-/area/station/science/xenobiology)
-"hXr" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 9
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"hXs" = (
-/obj/structure/chair/plastic{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"hXt" = (
-/obj/structure/bed/medical/emergency,
-/obj/machinery/iv_drip,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"hXu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"hXB" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Ration Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"hXI" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"hXQ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos)
-"hYb" = (
-/obj/machinery/light/small/red/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"hYe" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"hYk" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"hYm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"hYo" = (
-/obj/effect/landmark/navigate_destination/dockesc,
-/obj/machinery/light/directional/west,
-/obj/structure/sign/warning/docking/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"hYN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"hZm" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"hZn" = (
-/obj/effect/spawner/structure/window/hollow/directional,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"hZq" = (
-/obj/structure/table/wood,
-/obj/machinery/fax{
- fax_name = "Chief Medical Officer's Office";
- name = "Chief Medical Officer's Fax Machine"
- },
-/obj/machinery/duct,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"hZs" = (
-/obj/machinery/vending/clothing,
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"hZt" = (
-/obj/machinery/modular_computer/preset/id{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/requests_console/directional/south{
- department = "Chief Engineer's Desk";
- name = "Chief Engineer's Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"hZJ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"hZL" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"hZP" = (
-/obj/effect/turf_decal/siding/blue,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"iaf" = (
-/obj/structure/table,
-/obj/structure/extinguisher_cabinet/directional/north,
-/obj/item/knife/shiv,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"iag" = (
-/obj/machinery/computer/records/security{
- dir = 4
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"iah" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"iaq" = (
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"iay" = (
-/obj/effect/spawner/random/trash/bucket,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"iaz" = (
-/obj/effect/turf_decal/arrows/red{
- dir = 1
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"iaC" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"iaF" = (
-/obj/machinery/button/door/directional/south{
- id = "dorms_4_bolts";
- name = "Dorms 4 Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"iaO" = (
-/obj/structure/rack,
-/obj/structure/sign/nanotrasen{
- pixel_x = 32
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/armory/riot_armor,
-/obj/effect/spawner/random/armory/riot_helmet,
-/obj/effect/spawner/random/armory/riot_shield,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"iaS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/structure/chair/sofa/corner/brown,
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"ibi" = (
-/obj/effect/turf_decal/loading_area/white{
- color = "#52B4E9"
- },
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/hallway/floor4/fore)
-"ibk" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/medical/medbay/aft)
-"ibo" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor4/starboard/fore)
-"ibs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"ibu" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/tcommsat/server)
-"ibw" = (
-/turf/closed/wall,
-/area/station/science/genetics)
-"ibE" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"ibF" = (
-/obj/structure/table/wood/fancy/green,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/spawner/random/contraband/permabrig_weapon,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"ibJ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"ibK" = (
-/obj/docking_port/stationary{
- dir = 8;
- dwidth = 2;
- height = 13;
- name = "port bay 2";
- shuttle_id = "ferry_home";
- width = 5
- },
-/turf/open/space/openspace,
-/area/space)
-"ibL" = (
-/obj/structure/cable,
-/obj/machinery/power/smes/engineering,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron,
-/area/station/engineering/engine_smes)
-"ibT" = (
-/obj/effect/turf_decal/delivery,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"ibW" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/sign/departments/medbay/alt/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/aft)
-"ica" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/commons/storage/primary)
-"ick" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/machinery/firealarm/directional/south,
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"icn" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/dark_blue{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison/garden)
-"icp" = (
-/obj/machinery/light_switch/directional/north,
-/obj/structure/table/wood,
-/obj/item/reagent_containers/cup/glass/mug{
- pixel_x = 13;
- pixel_y = 7
- },
-/obj/item/reagent_containers/cup/glass/mug{
- pixel_x = 6;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/glass/mug{
- pixel_x = 13;
- pixel_y = -1
- },
-/obj/item/reagent_containers/cup/glass/shaker{
- pixel_x = -2;
- pixel_y = 12
- },
-/obj/item/reagent_containers/cup/glass/ice{
- pixel_x = -4;
- pixel_y = 2
- },
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"icq" = (
-/obj/docking_port/stationary{
- dheight = 4;
- dwidth = 4;
- height = 9;
- name = "Aux Base Zone";
- roundstart_template = /datum/map_template/shuttle/aux_base/default;
- shuttle_id = "aux_base_zone";
- width = 9
- },
-/turf/open/floor/plating,
-/area/station/construction/mining/aux_base)
-"icr" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"icE" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/turf_decal/box,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"icY" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"idn" = (
-/obj/structure/sign/directions/science/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"ido" = (
-/obj/machinery/computer/security/telescreen/entertainment/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/showcase/machinery/tv/broken,
-/turf/open/floor/carpet/purple,
-/area/station/maintenance/floor1/port/aft)
-"idr" = (
-/obj/structure/closet/secure_closet/freezer/empty{
- name = "sushi fridge"
- },
-/obj/item/food/seaweedsheet,
-/obj/item/food/seaweedsheet,
-/obj/item/food/seaweedsheet,
-/obj/item/food/seaweedsheet,
-/obj/item/food/grown/carrot,
-/obj/item/food/grown/carrot,
-/obj/item/food/grown/potato,
-/obj/item/food/grown/potato,
-/obj/item/food/grown/onion,
-/obj/item/food/grown/onion,
-/obj/item/food/grown/chili,
-/obj/item/food/grown/chili,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"idu" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"idw" = (
-/obj/structure/table,
-/obj/item/clothing/neck/scarf{
- pixel_x = 6;
- pixel_y = 4
- },
-/obj/item/clothing/under/suit/white,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"idy" = (
-/obj/effect/turf_decal/trimline/green/filled/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"idM" = (
-/obj/structure/table,
-/obj/machinery/status_display/evac/directional/north,
-/obj/item/papercutter,
-/obj/machinery/light/cold/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"iea" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"ieC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"ieE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"ieI" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"ieM" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"ieP" = (
-/obj/structure/sign/poster/contraband/eat/directional/west,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"ieX" = (
-/obj/structure/bed/dogbed/lia,
-/obj/machinery/requests_console/directional/north{
- department = "Head of Security's Desk";
- name = "Head of Security Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/mob/living/basic/carp/pet/lia,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"iff" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"ifh" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"ifk" = (
-/obj/structure/sign/directions/dorms/directional/north{
- dir = 2
- },
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor4/aft)
-"ifo" = (
-/obj/structure/tank_holder/emergency_oxygen,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"ift" = (
-/obj/structure/closet/wardrobe/white,
-/obj/item/radio/intercom/directional/east,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"ifw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/hatch{
- name = "Emergency Ladder Access"
- },
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor4/aft)
-"ifx" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_empty/crate/with_loot,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"ifA" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/item/controller{
- pixel_x = 5;
- pixel_y = -3
- },
-/obj/item/controller,
-/obj/item/controller{
- pixel_x = -5;
- pixel_y = 3
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"ifF" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Briefing Room"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/office)
-"ifG" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor2/aft)
-"ifS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/gravity_generator)
-"ifV" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/chair/comfy{
- dir = 8
- },
-/obj/effect/landmark/start/depsec/medical,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"igd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"igw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"igy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"igA" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"igE" = (
-/turf/closed/wall,
-/area/station/science/robotics/mechbay)
-"igI" = (
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/obj/effect/turf_decal/caution{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"igQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"igS" = (
-/obj/structure/table,
-/obj/item/clothing/neck/tie/red,
-/obj/item/clothing/under/suit/black_really/skirt,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"ihj" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/landmark/start/chemist,
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/medical/pharmacy)
-"ihm" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/closet/l3closet/virology,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"ihn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/skillchip/wine_taster,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"iho" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/contraband/random/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"ihp" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/vending/drugs,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"ihC" = (
-/obj/item/stack/sheet/iron,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"ihH" = (
-/obj/structure/cable,
-/obj/machinery/power/terminal{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"ihL" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/medical/glass{
- name = "Medbay Hall"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "med_lockdown";
- name = "Medbay Lockdown Shutters"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"ihQ" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor1/fore)
-"ihV" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"iia" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"iid" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"iie" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"iil" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"iim" = (
-/obj/machinery/shower/directional/east,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment1)
-"iir" = (
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"iit" = (
-/obj/effect/spawner/random/structure/closet_private{
- dir = 4
- },
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/carpet/black,
-/area/station/hallway/secondary/service)
-"iiA" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"iiM" = (
-/obj/machinery/door/airlock/hatch{
- name = "MiniSat Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"iiQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 6
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"iiR" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"iiW" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"ijd" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"ijs" = (
-/obj/structure/closet/emcloset,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"ijJ" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/railing/corner,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"ijL" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"ijQ" = (
-/obj/machinery/computer/station_alert,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"ijS" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/auxlab)
-"ijT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/machinery/requests_console/directional/north{
- department = "Security";
- name = "Security Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/office)
-"ijV" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/computer/security/telescreen/rd/directional/west,
-/obj/machinery/pdapainter/research,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"ijX" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/directional,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"ijZ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 8
- },
-/obj/item/radio/intercom/directional/west{
- broadcasting = 1;
- frequency = 1447;
- listening = 0;
- name = "Private Channel"
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"ikg" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"iki" = (
-/obj/structure/table_frame,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"ikn" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"iko" = (
-/obj/machinery/shieldgen,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"iky" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/random/directional/east,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"ikG" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"ikT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/sofa/bench/left,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"ikV" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/obj/structure/grille,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"ilb" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"ilg" = (
-/obj/structure/table/reinforced,
-/obj/machinery/reagentgrinder,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"ilk" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/door/airlock{
- name = "Vacant Commissary"
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/vacant_room/commissary)
-"ilq" = (
-/obj/machinery/airalarm/directional/north,
-/obj/effect/spawner/random/maintenance/three,
-/obj/effect/spawner/random/structure/table_or_rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"ils" = (
-/obj/machinery/telecomms/receiver/preset_left,
-/obj/machinery/telecomms/receiver/preset_right,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"ilx" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 8
- },
-/obj/machinery/newscaster/directional/east,
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 4
- },
-/obj/effect/turf_decal/bot/right,
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
-"ilA" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/blue/end{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"ilG" = (
-/obj/machinery/button/door/directional/north{
- id = "CabinS";
- name = "Cabin Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/black,
-/area/station/hallway/secondary/service)
-"ilI" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Medbay - Treatment Center";
- name = "medbay camera";
- network = list("ss13","medbay");
- dir = 2
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"ilK" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"ilR" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/medbay/lobby)
-"ilV" = (
-/obj/item/radio/intercom/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/black,
-/area/station/hallway/secondary/service)
-"ilY" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/port/fore)
-"img" = (
-/obj/structure/cable,
-/obj/structure/girder,
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"imj" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/yellow/filled/warning{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"imm" = (
-/obj/structure/table/wood,
-/obj/structure/sign/poster/contraband/pwr_game/directional/north,
-/turf/open/floor/wood,
-/area/station/maintenance/floor2/starboard)
-"imq" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/closet/crate/hydroponics,
-/obj/item/wrench,
-/obj/item/secateurs,
-/obj/item/shovel/spade,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"ims" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"imt" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"imI" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"imJ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"imO" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth_half,
-/area/station/cargo/warehouse)
-"imR" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"imS" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"imY" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/commons/fitness/recreation)
-"imZ" = (
-/obj/structure/chair/sofa/bench/right,
-/obj/machinery/light/directional/north,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"inj" = (
-/obj/machinery/computer/records/security{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"inl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/turretid{
- icon_state = "control_stun";
- name = "AI Chamber turret control";
- pixel_x = 3;
- pixel_y = -23
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"inq" = (
-/turf/closed/wall,
-/area/station/security/checkpoint/escape)
-"inE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"inJ" = (
-/obj/machinery/washing_machine,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"inK" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"inM" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/camera/autoname/directional/west,
-/obj/item/kirbyplants/random,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"inR" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 10
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"inS" = (
-/obj/effect/spawner/random/vending/snackvend,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"iog" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"iom" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"ion" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"iot" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/machinery/door/window/left/directional/west{
- name = "Xenocytology Desk";
- req_access = list("xenobiology")
- },
-/obj/structure/desk_bell{
- pixel_x = 6;
- pixel_y = 10
- },
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"iow" = (
-/obj/structure/table/wood,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/computer/records/medical/laptop,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"ioG" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"ioL" = (
-/obj/effect/decal/cleanable/ash,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"ioM" = (
-/obj/effect/spawner/random/maintenance/two,
-/obj/structure/closet/crate/preopen,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"ioP" = (
-/obj/machinery/door/firedoor,
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/hallway/secondary/exit/escape_pod)
-"ioQ" = (
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"ioR" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"ipa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"ipn" = (
-/turf/open/floor/carpet/blue,
-/area/station/command/heads_quarters/hop)
-"ipu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"ipv" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/security/prison)
-"ipI" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"ipQ" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"ipV" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/effect/landmark/start/chemist,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"iqa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/department/engine/atmos)
-"iqg" = (
-/obj/structure/extinguisher_cabinet/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"iqt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/tcommsat/server)
-"iqu" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"iqv" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Theater"
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"iqx" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable/multilayer/multiz,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"iqy" = (
-/obj/machinery/modular_computer/preset/id{
- dir = 4
- },
-/obj/machinery/button/door/directional/west{
- id = "hopline";
- name = "Queue Shutters Control";
- pixel_y = -6;
- req_access = list("hop")
- },
-/obj/machinery/button/door/directional/west{
- id = "hopblast";
- name = "Lockdown Blast Doors";
- pixel_y = 6;
- req_access = list("hop")
- },
-/obj/machinery/button/flasher{
- id = "hopflash";
- pixel_x = -38;
- pixel_y = -7;
- req_access = list("hop")
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"iqz" = (
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"iqC" = (
-/obj/effect/turf_decal/siding/purple{
- dir = 4
- },
-/obj/machinery/dna_scannernew,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"iqD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"iqL" = (
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"iqR" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"ira" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/armory/shotgun,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"irb" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/structure/rack,
-/obj/item/mop,
-/obj/item/reagent_containers/cup/bucket,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/item/storage/box/gloves{
- pixel_x = 5;
- pixel_y = -8
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"irf" = (
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"irh" = (
-/obj/effect/decal/cleanable/blood/splatter,
-/obj/effect/decal/cleanable/blood/tracks,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"irk" = (
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 1
- },
-/obj/machinery/camera{
- c_tag = "Shared Engineering Storage #2";
- dir = 9;
- network = list("ss13","engine")
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"irm" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/suit_storage_unit/standard_unit,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"irx" = (
-/obj/machinery/door/window/left/directional/south{
- name = "Robotics Lab";
- req_access = list("robotics")
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/stairs{
- dir = 1
- },
-/area/station/science/robotics/mechbay)
-"irI" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"irK" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor1/fore)
-"irS" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"irV" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"isd" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"isg" = (
-/obj/machinery/recharge_station,
-/obj/machinery/camera/directional/east{
- c_tag = "Security - EVA"
- },
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"isk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing/corner,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/aft)
-"isq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/navigate_destination/dockaux,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"isz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/machinery/door/airlock/hatch{
- name = "Science Maintenance"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"isA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"isG" = (
-/obj/item/storage/medkit/toxin{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/storage/medkit/toxin,
-/obj/item/storage/medkit/toxin{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/item/storage/medkit/regular,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/machinery/door/window/left/directional/east{
- name = "First Aid Supplies";
- req_access = list("medical")
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"isK" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/sign/warning/docking/directional/south,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/secondary/exit)
-"isO" = (
-/obj/machinery/firealarm/directional/south,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"isQ" = (
-/obj/effect/turf_decal/arrows/white{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"isU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"itc" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 5
- },
-/obj/machinery/status_display/door_timer{
- id = "cell-2";
- name = "Floor 2 Cell";
- pixel_x = 32
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"ity" = (
-/obj/structure/mirror/directional/east,
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/freezer,
-/area/station/service/chapel)
-"itC" = (
-/obj/item/radio/intercom/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/table_frame,
-/obj/item/shard,
-/obj/effect/decal/cleanable/glass,
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"itP" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"itR" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"itT" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"iuk" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"iun" = (
-/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"iuo" = (
-/turf/closed/wall,
-/area/station/commons/dorms/apartment1)
-"ius" = (
-/obj/effect/spawner/structure/window/reinforced/tinted,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"iuu" = (
-/obj/structure/sign/departments/medbay/alt/directional/north,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"iux" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"iuE" = (
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"iuP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"iuT" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"iuW" = (
-/obj/effect/turf_decal/delivery,
-/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner,
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"iva" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"ivg" = (
-/obj/structure/chair/stool/bar/directional/north,
-/obj/effect/decal/cleanable/confetti,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"ivk" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"ivo" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"ivs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"ivu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"ivz" = (
-/obj/effect/spawner/random/vending/colavend,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"ivD" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"ivE" = (
-/obj/structure/table/reinforced/rglass,
-/obj/item/reagent_containers/pill/morphine{
- desc = "What could it be?";
- name = "blue pill"
- },
-/turf/open/floor/carpet/blue,
-/area/station/maintenance/floor3/port/aft)
-"ivL" = (
-/turf/closed/wall,
-/area/station/medical/surgery/aft)
-"ivQ" = (
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"ivU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/fore)
-"ivV" = (
-/obj/structure/disposalpipe/segment{
- dir = 2
- },
-/obj/machinery/light_switch/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"ivY" = (
-/obj/structure/chair/office/light,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"iwj" = (
-/turf/open/floor/iron/smooth_large,
-/area/station/science/robotics/mechbay)
-"iwo" = (
-/turf/closed/wall,
-/area/station/science/circuits)
-"iwu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"iwD" = (
-/obj/machinery/atmospherics/components/binary/valve/digital{
- dir = 4
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"iwH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"iwJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"iwN" = (
-/obj/structure/table/wood,
-/obj/item/toy/plush/moth{
- desc = "Unique and incredibly special, just like you, love yourself.";
- name = "Unique Moth"
- },
-/obj/machinery/digital_clock/directional/south,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"iwP" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"iwU" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"iwZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/vending/wallmed/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"ixf" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"ixD" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"ixH" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"ixQ" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"ixZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"iyt" = (
-/obj/structure/closet/secure_closet/personal/cabinet,
-/turf/open/floor/iron,
-/area/station/commons/dorms/room1)
-"iyK" = (
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"iyR" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"iyS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"iyT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"iyU" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"iyZ" = (
-/obj/structure/flora/bush/snow/style_random,
-/turf/open/misc/snow/actually_safe{
- icon_state = "snow8"
- },
-/area/station/hallway/floor2/fore)
-"izj" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/armory/e_gun,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"izl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/command{
- name = "Quartermaster's Quarters"
- },
-/obj/effect/mapping_helpers/airlock/access/all/supply/qm,
-/turf/open/floor/carpet/orange,
-/area/station/command/heads_quarters/qm)
-"izm" = (
-/obj/machinery/field/generator,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"izn" = (
-/obj/structure/chair/plastic{
- dir = 8
- },
-/obj/item/radio/intercom/directional/south{
- broadcasting = 1;
- frequency = 1423;
- listening = 0;
- name = "Interrogation Intercom"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"izq" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"izt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/machinery/door/airlock/medical/glass{
- name = "Medbay Hall"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/medbay/central)
-"izw" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"izy" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/smooth_large,
-/area/station/science/robotics/mechbay)
-"izz" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"izF" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/holopad,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"izI" = (
-/obj/structure/rack,
-/obj/item/trash/syndi_cakes,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"izN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-10";
- location = "3-9"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"izV" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"izY" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"iAb" = (
-/turf/closed/wall,
-/area/station/science/robotics/lab)
-"iAe" = (
-/obj/effect/spawner/structure/window/hollow/reinforced,
-/turf/open/floor/plating/airless,
-/area/station/science/ordnance/storage)
-"iAg" = (
-/obj/item/radio/intercom/directional/west,
-/obj/effect/spawner/random/medical,
-/obj/structure/table/glass,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"iAk" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 1
- },
-/obj/item/radio/intercom/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"iAq" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"iAt" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/table,
-/obj/item/transfer_valve{
- pixel_x = -5
- },
-/obj/item/transfer_valve{
- pixel_x = 5
- },
-/obj/item/transfer_valve{
- pixel_x = -5
- },
-/obj/item/transfer_valve{
- pixel_x = 5
- },
-/obj/item/transfer_valve,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"iAH" = (
-/obj/machinery/power/shuttle_engine/heater{
- icon_state = "router"
- },
-/turf/closed/wall,
-/area/station/maintenance/floor1/starboard/aft)
-"iAQ" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/turf_decal/bot_white{
- color = "#74b2d3"
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"iAS" = (
-/obj/structure/cable,
-/obj/machinery/power/smes/engineering,
-/turf/open/floor/iron,
-/area/station/engineering/engine_smes)
-"iAU" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos)
-"iAY" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/atmos/office)
-"iAZ" = (
-/obj/machinery/smartfridge/extract/preloaded,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"iBb" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"iBc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"iBj" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"iBl" = (
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"iBn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
-"iBo" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/folder/white,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"iBq" = (
-/obj/structure/mirror/directional/south,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"iBv" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"iBx" = (
-/obj/structure/closet/wardrobe/black,
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"iBB" = (
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/camera/autoname/directional/north,
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningoffice)
-"iBF" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/structure/sink/directional/south,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"iBI" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"iBL" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"iCg" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/effect/mapping_helpers/damaged_window,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"iCh" = (
-/obj/machinery/light/directional/south,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"iCi" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/effect/landmark/start/geneticist,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"iCk" = (
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "radshutnorth"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"iCn" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth_half,
-/area/station/cargo/warehouse)
-"iCD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/toy/beach_ball,
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"iCE" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"iCG" = (
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"iCH" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"iCJ" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"iCK" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"iCP" = (
-/obj/structure/sign/poster/random/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/decal/cleanable/oil,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/cargo/bitrunning/den)
-"iCQ" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"iCS" = (
-/obj/effect/turf_decal/siding/wood/end,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"iCU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"iDe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"iDh" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"iDk" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"iDm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light_switch/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"iDr" = (
-/obj/structure/table/glass,
-/obj/machinery/defibrillator_mount/directional/east,
-/obj/item/storage/medkit/emergency{
- pixel_y = 4
- },
-/obj/item/stack/medical/suture,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"iDw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"iDP" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"iDZ" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"iEa" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"iEg" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"iEl" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/structure/railing/corner/end/flip{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"iEm" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"iEs" = (
-/turf/closed/wall,
-/area/station/engineering/storage/tcomms)
-"iED" = (
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"iEJ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/engineering/atmos/project)
-"iEP" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/engineering/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"iES" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"iEU" = (
-/obj/machinery/door/firedoor,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"iEW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"iFi" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"iFo" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output,
-/obj/effect/turf_decal/trimline/brown/line,
-/turf/open/floor/engine/vacuum,
-/area/station/engineering/atmos)
-"iFr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/four,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"iFu" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"iFv" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/spawner/random/engineering/canister,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"iFw" = (
-/obj/item/flashlight/lamp/green,
-/obj/effect/turf_decal/siding/wood/end{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/table/wood,
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"iFy" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"iGd" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"iGh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"iGo" = (
-/obj/item/stack/rods,
-/obj/effect/decal/cleanable/blood,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"iGq" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"iGt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"iGz" = (
-/obj/structure/spider/stickyweb,
-/obj/structure/chair/stool,
-/obj/machinery/light/broken/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"iGA" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"iGG" = (
-/obj/structure/chair/office/light{
- dir = 8
- },
-/obj/structure/sign/painting{
- pixel_y = 32
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"iGI" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/structure/chair/sofa/corner/brown{
- dir = 4
- },
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"iGJ" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"iGR" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"iGY" = (
-/obj/machinery/door/airlock/medical{
- name = "Medical Break Room"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"iHk" = (
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"iHl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"iHm" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor3/starboard)
-"iHw" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"iHx" = (
-/obj/structure/table,
-/obj/machinery/processor{
- pixel_y = 6
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"iHG" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 6
- },
-/turf/open/floor/iron/telecomms,
-/area/station/tcommsat/server)
-"iHI" = (
-/obj/effect/landmark/start/roboticist,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"iHL" = (
-/obj/machinery/pdapainter/engineering,
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/computer/security/telescreen/engine/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"iHM" = (
-/obj/machinery/vending/wallmed/directional/west,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"iHN" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"iHZ" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/table,
-/obj/item/stack/cable_coil,
-/obj/item/screwdriver,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/weldingtool/largetank,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"iIm" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"iIn" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"iIp" = (
-/obj/structure/chair/comfy/black{
- dir = 1
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"iII" = (
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"iIM" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"iIV" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"iJc" = (
-/obj/structure/filingcabinet/chestdrawer,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"iJl" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/tile,
-/area/station/service/library/printer)
-"iJo" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/structure/closet/secure_closet/brig{
- name = "Prisoner Locker"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"iJt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/corner{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"iJz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/floor1/aft)
-"iJG" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"iJM" = (
-/obj/machinery/computer/monitor{
- dir = 4;
- name = "Bridge power monitoring console"
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"iJX" = (
-/obj/machinery/door_buttons/airlock_controller{
- idExterior = "asylum_airlock_exterior";
- idInterior = "asylum_airlock_interior";
- name = "Asylum Access Console";
- pixel_x = 26;
- pixel_y = 6;
- req_access = list("psychology")
- },
-/obj/effect/turf_decal/trimline/white/filled/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"iJY" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/item/storage/medkit/regular,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"iKb" = (
-/obj/effect/turf_decal/trimline/purple/arrow_ccw,
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"iKc" = (
-/obj/structure/chair/office,
-/obj/effect/landmark/start/lawyer,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"iKw" = (
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"iKz" = (
-/obj/structure/ladder,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"iKB" = (
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"iKD" = (
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"iKJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"iKR" = (
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"iKT" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"iLy" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment2)
-"iLF" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
- dir = 4
- },
-/obj/machinery/meter,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"iLH" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/sign/nanotrasen{
- pixel_x = -32
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"iLJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/medical/virology,
-/obj/machinery/door/airlock/virology/glass{
- name = "Test Subject Cell"
- },
-/turf/open/floor/noslip,
-/area/station/medical/virology)
-"iLM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/robotics/lab)
-"iLR" = (
-/obj/structure/window/reinforced/tinted/spawner/directional/south,
-/obj/structure/mirror/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/sink/directional/east,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment1)
-"iMc" = (
-/obj/item/storage/box/matches,
-/obj/item/storage/fancy/cigarettes/cigpack_carp,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"iMe" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"iMu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating/dark/corner{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"iMF" = (
-/obj/structure/bed/medical/anchored{
- dir = 8
- },
-/obj/item/bedsheet/medical{
- dir = 4
- },
-/obj/structure/curtain/cloth,
-/obj/machinery/newscaster/directional/north,
-/obj/effect/landmark/start/medical_doctor,
-/turf/open/floor/wood/parquet,
-/area/station/medical/patients_rooms)
-"iMK" = (
-/obj/structure/closet/firecloset,
-/obj/machinery/camera/directional/east{
- c_tag = "Science - Aft Entry"
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"iML" = (
-/obj/structure/railing,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"iMM" = (
-/obj/structure/rack,
-/obj/machinery/light/small/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"iMN" = (
-/turf/closed/wall,
-/area/station/service/library)
-"iMR" = (
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/project)
-"iMU" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"iMX" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 6
- },
-/obj/effect/decal/cleanable/garbage,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"iNp" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/sign/departments/psychology/directional/west{
- name = "Asylum Entrance"
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"iNz" = (
-/obj/structure/sign/directions/upload/directional/east,
-/obj/structure/sign/directions/medical/directional/east{
- pixel_y = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"iNB" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/hallway/secondary/service)
-"iNC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"iNE" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/aft)
-"iNK" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/textured_corner,
-/area/station/cargo/sorting)
-"iNO" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"iNV" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"iNW" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/north,
-/obj/machinery/power/energy_accumulator/grounding_rod/anchored,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible/layer2,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"iOe" = (
-/obj/structure/table,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = -9;
- pixel_y = 2
- },
-/obj/item/toy/figure/scientist{
- pixel_x = -20;
- pixel_y = 9
- },
-/obj/item/disk/tech_disk{
- pixel_x = 24
- },
-/obj/item/disk/tech_disk{
- pixel_x = 17
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"iOh" = (
-/obj/structure/disposalpipe/sorting/mail/flip{
- dir = 4
- },
-/obj/effect/mapping_helpers/mail_sorting/service/bar,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"iOp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"iOr" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"iOs" = (
-/obj/structure/table/optable,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"iOu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 6
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
-"iOw" = (
-/obj/machinery/power/tracker,
-/obj/structure/cable,
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/starboard/aft)
-"iOA" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor2/starboard)
-"iOD" = (
-/obj/machinery/computer/upload/ai,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/machinery/camera/directional/north{
- c_tag = "AI Upload Chamber - Fore";
- network = list("aiupload")
- },
-/obj/machinery/door/window/right/directional/south{
- name = "Upload Console Window";
- req_access = list("ai_upload")
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"iOL" = (
-/obj/structure/bookcase/random,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"iON" = (
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"iOQ" = (
-/obj/effect/turf_decal/trimline/neutral/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"iOV" = (
-/obj/effect/turf_decal/siding/blue{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/tile/light,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"iOY" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"iPh" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"iPm" = (
-/obj/machinery/food_cart,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"iPr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/black,
-/area/station/hallway/secondary/service)
-"iPs" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"iPG" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/item/multitool/circuit{
- pixel_x = 7
- },
-/obj/item/multitool/circuit,
-/obj/item/multitool/circuit{
- pixel_x = -8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/circuits)
-"iPH" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Permabrig - Isolation A";
- network = list("ss13","prison")
- },
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/security/brig)
-"iPN" = (
-/obj/machinery/door/airlock/external/glass,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"iPR" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"iPU" = (
-/obj/machinery/vending/snack/orange,
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"iPV" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"iPX" = (
-/obj/structure/table/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"iPY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"iQa" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"iQe" = (
-/obj/structure/secure_safe/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"iQf" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/science/xenobiology/hallway)
-"iQi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/aft)
-"iQp" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/trimline/green/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"iQy" = (
-/obj/structure/railing,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"iQB" = (
-/obj/machinery/space_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"iQC" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/poddoor/preopen{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"iQF" = (
-/obj/machinery/hydroponics/soil,
-/obj/item/plant_analyzer,
-/turf/open/misc/dirt/jungle,
-/area/station/security/prison/garden)
-"iQH" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/locker)
-"iQR" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/portable_atmospherics/pipe_scrubber,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"iQU" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/library/artgallery)
-"iQY" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"iRb" = (
-/obj/effect/turf_decal/siding/yellow{
- dir = 8
- },
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"iRc" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/holopad,
-/turf/open/floor/wood/large,
-/area/station/service/library)
-"iRf" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/mineral/plastitanium/airless,
-/area/space/nearstation)
-"iRg" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"iRm" = (
-/obj/machinery/vending/autodrobe,
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"iRr" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 10
- },
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"iRD" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"iRF" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/blood/drip,
-/obj/structure/sink/directional/west,
-/obj/structure/mirror/directional/east,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"iRK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_half,
-/area/station/cargo/sorting)
-"iRN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"iRY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/obj/item/stack/rods/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"iSs" = (
-/obj/structure/rack,
-/obj/item/weldingtool,
-/obj/item/clothing/glasses/welding,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"iSt" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"iSu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 10
- },
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"iSD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/maintenance/two,
-/obj/structure/closet/crate/cardboard,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"iSP" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/medical/cryo)
-"iSS" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/yellow/opposingcorners{
- dir = 8
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"iST" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/marker_beacon/olive,
-/turf/open/space/basic,
-/area/space/nearstation)
-"iSU" = (
-/turf/closed/wall/r_wall,
-/area/space/nearstation)
-"iTd" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"iTg" = (
-/turf/closed/wall,
-/area/space/nearstation)
-"iTk" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"iTu" = (
-/obj/machinery/shieldgen,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"iTw" = (
-/obj/structure/sign/warning/biohazard/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"iTy" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners{
- dir = 8
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"iTA" = (
-/obj/structure/chair/office,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"iTI" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"iTJ" = (
-/obj/machinery/door/poddoor/shutters{
- id = "survshop";
- name = "Ancient Workshop"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"iTN" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 6
- },
-/obj/machinery/computer/mecha{
- dir = 8
- },
-/obj/machinery/requests_console/directional/east{
- department = "Bridge";
- name = "Bridge Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"iTX" = (
-/obj/machinery/light_switch/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"iUb" = (
-/obj/structure/secure_safe/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"iUP" = (
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/newscaster/directional/south,
-/obj/machinery/disposal/bin/tagger,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"iUQ" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/escape_pod)
-"iUS" = (
-/obj/machinery/modular_computer/preset/id{
- name = "Captain's Computer"
- },
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"iUT" = (
-/obj/machinery/computer/records/security{
- dir = 8
- },
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"iUV" = (
-/obj/structure/railing/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"iUZ" = (
-/obj/machinery/light_switch/directional/south{
- pixel_x = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"iVs" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"iVH" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"iVL" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-4";
- location = "1-3"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"iVN" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/robotics/lab)
-"iVP" = (
-/obj/structure/closet/emcloset,
-/obj/item/storage/toolbox/mechanical,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"iVY" = (
-/obj/structure/mirror/directional/west,
-/obj/structure/sink/directional/east,
-/turf/open/floor/iron/freezer,
-/area/station/hallway/secondary/service)
-"iWf" = (
-/obj/machinery/power/smes,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"iWi" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"iWm" = (
-/obj/structure/closet/l3closet/janitor,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"iWu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"iWB" = (
-/obj/machinery/disposal/bin,
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"iWE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/gravity_generator)
-"iWF" = (
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"iWG" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor1/aft)
-"iWK" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"iWQ" = (
-/obj/machinery/door/window/left/directional/south{
- name = "Mass Driver";
- req_access = list("chapel_office")
- },
-/obj/effect/turf_decal/siding/white,
-/obj/machinery/computer/pod/old/mass_driver_controller/chapelgun{
- pixel_x = 24
- },
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"iWT" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/item/radio/intercom/directional/north,
-/obj/structure/detectiveboard/directional/east,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"iWW" = (
-/obj/structure/girder/reinforced,
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"iWZ" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/obj/item/fishing_hook,
-/obj/item/food/bait/worm,
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"iXa" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"iXe" = (
-/obj/item/restraints/legcuffs/beartrap/prearmed,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"iXk" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"iXn" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"iXo" = (
-/obj/effect/turf_decal/tile/yellow/fourcorners,
-/obj/machinery/computer/arcade/battle{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/security/prison)
-"iXt" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/supermatter/room)
-"iXA" = (
-/obj/structure/disposalpipe/segment{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"iXB" = (
-/obj/item/storage/toolbox/mechanical/old,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"iXF" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/security/armory)
-"iXK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/security/office)
-"iXQ" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/arrows{
- dir = 8
- },
-/obj/effect/turf_decal/arrows{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"iXS" = (
-/turf/closed/wall/r_wall,
-/area/station/command/gateway)
-"iYb" = (
-/obj/machinery/hydroponics/constructable,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningdock)
-"iYA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"iYC" = (
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/brig)
-"iYE" = (
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"iYF" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"iYK" = (
-/obj/structure/chair/stool/bar/directional/south,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"iYL" = (
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"iYM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"iZh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"iZi" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"iZy" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"iZA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/remains/human{
- name = "dehydrated skeleton"
- },
-/obj/effect/decal/cleanable/blood/old,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/obj/item/weaponcrafting/receiver,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"iZD" = (
-/obj/structure/transport/linear/public,
-/obj/machinery/lift_indicator/directional/east{
- linked_elevator_id = "com_vator";
- pixel_x = 38;
- pixel_y = -7
- },
-/obj/machinery/elevator_control_panel/directional/east{
- linked_elevator_id = "com_vator";
- pixel_x = 24;
- preset_destination_names = list("2" = "CargEngi", "3" = "Medsci", "4" = "Service", "5" = "Command")
- },
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/fore)
-"iZE" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/turf/open/floor/iron/large,
-/area/station/command/gateway)
-"iZG" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"iZP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"iZQ" = (
-/obj/effect/decal/cleanable/garbage,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 4
- },
-/obj/machinery/camera/directional/west{
- c_tag = "Prison Cafeteria";
- network = list("ss13","prison")
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"iZU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/start/warden,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"iZV" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"jai" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 5
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/engineering/atmos)
-"jak" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/item/paper/fluff/genpop_instructions,
-/obj/structure/table,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"jam" = (
-/obj/effect/turf_decal/trimline/red/filled/end{
- dir = 1
- },
-/obj/machinery/firealarm/directional/north,
-/obj/structure/closet/bombcloset/security,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"jas" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"jat" = (
-/obj/machinery/computer/security{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/obj/effect/turf_decal/trimline/red/filled,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"jau" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor1/aft)
-"jax" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"jay" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"jaI" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/obj/effect/spawner/random/structure/furniture_parts,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"jaK" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/pink/visible,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"jbc" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"jbg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"jbl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"jbr" = (
-/obj/machinery/button/door/directional/south{
- id = "stationawaygate";
- name = "Gateway Shutters";
- req_access = list("gateway")
- },
-/obj/effect/turf_decal/trimline/neutral/corner{
- dir = 1
- },
-/obj/item/storage/toolbox/mechanical,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"jbt" = (
-/obj/machinery/light/cold/directional/east,
-/obj/machinery/newscaster/directional/east,
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"jbu" = (
-/obj/effect/turf_decal/tile/green/anticorner{
- dir = 4
- },
-/turf/open/floor/iron/textured_corner{
- dir = 8
- },
-/area/station/hallway/secondary/entry)
-"jby" = (
-/obj/machinery/light/broken/directional/east,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"jbz" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 1
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"jbR" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/science/robotics/mechbay)
-"jbV" = (
-/turf/open/openspace,
-/area/station/maintenance/floor4/port)
-"jcf" = (
-/obj/structure/table,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"jcr" = (
-/obj/machinery/door/airlock/engineering/glass{
- name = "Supermatter Engine Room"
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
-/turf/open/floor/engine,
-/area/station/engineering/lobby)
-"jcN" = (
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_corner{
- dir = 8
- },
-/area/station/hallway/secondary/entry)
-"jcS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/airlock/command/glass{
- name = "Bridge"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/command/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "bridge_blast";
- name = "Bridge Blast Door"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"jcU" = (
-/obj/machinery/door/airlock/engineering/glass{
- name = "Supermatter Engine Room"
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
-/turf/open/floor/engine,
-/area/station/engineering/lobby)
-"jcV" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/structure/sign/poster/contraband/grey_tide/directional/north,
-/turf/open/floor/iron/dark/corner,
-/area/station/commons/storage/primary)
-"jdc" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"jdo" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/structure/table/reinforced,
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/chem_dispenser/drinks,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"jdp" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"jds" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"jdx" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"jdC" = (
-/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body,
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"jdD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/pumproom)
-"jdM" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"jdP" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"jdQ" = (
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/effect/turf_decal/stripes,
-/obj/effect/turf_decal/trimline/brown/line,
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/cargo/bitrunning/den)
-"jdR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sink/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"jdT" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured,
-/area/station/command/heads_quarters/qm)
-"jdW" = (
-/turf/closed/wall,
-/area/station/engineering/atmos)
-"jek" = (
-/obj/structure/chair/stool/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"jer" = (
-/obj/structure/foamedmetal,
-/turf/open/openspace,
-/area/station/maintenance/floor2/port)
-"jeA" = (
-/obj/structure/table/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment1)
-"jeF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"jeQ" = (
-/obj/structure/table/reinforced,
-/obj/machinery/camera/directional/south{
- c_tag = "Armory - Interior"
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/cable,
-/obj/effect/spawner/random/armory/barrier_grenades,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"jeR" = (
-/obj/structure/filingcabinet/chestdrawer,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"jfa" = (
-/obj/structure/table,
-/obj/item/reagent_containers/cup/glass/waterbottle/large{
- pixel_x = -7;
- pixel_y = 14
- },
-/obj/item/reagent_containers/cup/glass/waterbottle/large{
- pixel_y = 14
- },
-/obj/item/reagent_containers/cup/glass/waterbottle/large{
- pixel_x = 7;
- pixel_y = 14
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"jfd" = (
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"jfs" = (
-/obj/docking_port/stationary/laborcamp_home/kilo{
- dir = 2
- },
-/turf/open/space/openspace,
-/area/space)
-"jft" = (
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"jfH" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"jfK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/line,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"jgd" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"jgx" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"jgz" = (
-/obj/machinery/light/red/dim/directional/north,
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"jgB" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/bookcase/random/religion,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"jgG" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/checkpoint)
-"jgJ" = (
-/obj/structure/curtain/bounty,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/service)
-"jgK" = (
-/obj/machinery/newscaster/directional/north,
-/obj/structure/table/reinforced/plastitaniumglass,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"jgO" = (
-/obj/effect/spawner/random/trash/soap,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/freezer,
-/area/station/hallway/secondary/service)
-"jgT" = (
-/obj/structure/hedge,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/sign/departments/holy/directional/north,
-/turf/open/floor/grass,
-/area/station/hallway/floor3/aft)
-"jgU" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Science Maintenance"
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"jgY" = (
-/obj/machinery/door/airlock/external/glass,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "Gravgenrear"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"jha" = (
-/obj/item/radio/intercom/directional/south,
-/obj/structure/closet/firecloset,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"jhk" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/hydroponics/constructable,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"jhv" = (
-/obj/structure/table/glass,
-/obj/item/radio/intercom/directional/south,
-/obj/item/storage/box/bandages{
- pixel_x = -6;
- pixel_y = 6
- },
-/obj/item/storage/medkit/regular,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"jhw" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"jhx" = (
-/obj/machinery/button/door/directional/west{
- id = "library-private";
- name = "Privacy Lock";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"jhF" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"jhU" = (
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"jhV" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"jib" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"jid" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"jiD" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 4
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"jiE" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/structure/closet/emcloset,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"jiL" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"jiM" = (
-/obj/item/radio/intercom/directional/west,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"jja" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"jjc" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"jjg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"jjj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"jjo" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"jjs" = (
-/obj/machinery/vending/coffee,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"jju" = (
-/obj/structure/table/reinforced,
-/obj/item/restraints/handcuffs/fake,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"jjA" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/closet/secure_closet/armory2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"jjB" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lantern{
- pixel_y = 7
- },
-/obj/item/radio/intercom/chapel/directional/south,
-/turf/open/floor/iron/dark/small,
-/area/station/service/chapel)
-"jjC" = (
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical{
- name = "Mental Health Ward"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"jjF" = (
-/turf/closed/wall,
-/area/station/hallway/secondary/service)
-"jjG" = (
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/openspace,
-/area/station/maintenance/floor4/port/aft)
-"jjT" = (
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/machinery/portable_atmospherics/pump,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
-"jjU" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/item/mod/module/plasma_stabilizer,
-/obj/item/mod/module/signlang_radio,
-/obj/item/mod/module/thermal_regulator,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"jjW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"jko" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/weather/dirt{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/garden)
-"jks" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/public/glass{
- name = "Changing Rooms"
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"jkD" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east{
- cell_type = /obj/item/stock_parts/power_store/battery/hyper
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/smooth_large,
-/area/station/tcommsat/server)
-"jkH" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"jkM" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 4
- },
-/obj/structure/lattice,
-/turf/open/space/basic,
-/area/space/nearstation)
-"jlr" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/structure/closet/crate/bin,
-/turf/open/floor/iron/dark/textured,
-/area/station/engineering/lobby)
-"jlx" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"jly" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"jlC" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/spawner/random/trash/garbage,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"jlE" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"jlI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"jlJ" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"jlK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/mapping_helpers/airalarm/engine_access,
-/obj/effect/mapping_helpers/airalarm/link{
- chamber_id = "engine"
- },
-/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"jlS" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"jlW" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/machinery/light_switch/directional/west,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"jmc" = (
-/turf/closed/wall,
-/area/station/service/hydroponics/garden)
-"jml" = (
-/obj/effect/turf_decal/box/corners,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"jmm" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/iron/textured,
-/area/station/cargo/storage)
-"jmu" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"jmB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/lobby)
-"jmH" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/obj/effect/turf_decal/bot,
-/obj/structure/closet/crate/cardboard,
-/obj/effect/spawner/random/maintenance/two,
-/obj/item/stack/sheet/cardboard,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"jmR" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/table/wood,
-/obj/machinery/computer/records/medical/laptop{
- dir = 1;
- pixel_y = 4
- },
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"jmS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/aft)
-"jmU" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"jna" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"jnh" = (
-/turf/open/floor/iron/dark/side,
-/area/station/commons/locker)
-"jnm" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/chair,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen/diner)
-"jnp" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"jnv" = (
-/obj/structure/closet/crate/preopen,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"jnA" = (
-/obj/machinery/light/red/dim/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"jnD" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"jnF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"jnG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"jnV" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"joh" = (
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/freezer,
-/area/station/hallway/secondary/service)
-"jom" = (
-/obj/machinery/light/cold/directional/east,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"joA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"joE" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"joH" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"joL" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"joP" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"joT" = (
-/obj/structure/table/reinforced/rglass,
-/obj/machinery/reagentgrinder{
- pixel_y = 8
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"joU" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"joV" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"jpq" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor3/fore)
-"jpy" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible,
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"jpz" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"jpB" = (
-/obj/machinery/door/airlock/medical{
- name = "Operating Room A"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/surgery,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"jpC" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- elevator_mode = 1;
- transport_linked_id = "aft_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"jpH" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/medical/surgery_tool,
-/obj/structure/closet/crate,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"jpK" = (
-/obj/machinery/door/airlock/atmos{
- name = "Atmospherics"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/office)
-"jpM" = (
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor1/fore)
-"jpQ" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/folder/red{
- pixel_x = 2;
- pixel_y = -4
- },
-/obj/item/folder/blue{
- pixel_x = -4;
- pixel_y = 5
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"jpT" = (
-/obj/machinery/flasher/portable,
-/obj/item/radio/intercom/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"jqh" = (
-/obj/machinery/plumbing/bottler,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"jqq" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"jqy" = (
-/obj/structure/lattice/catwalk,
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard/fore)
-"jqD" = (
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"jqP" = (
-/obj/machinery/camera/directional/west{
- c_tag = "Xenobio - Computers Pens"
- },
-/obj/machinery/computer/camera_advanced/xenobio{
- dir = 4
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"jqV" = (
-/obj/item/radio/intercom/directional/west,
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"jrl" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"jrr" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"jrv" = (
-/obj/structure/bed{
- dir = 1
- },
-/obj/item/bedsheet/blue{
- dir = 4
- },
-/obj/item/toy/plush/snakeplushie{
- pixel_x = -6;
- pixel_y = 7
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/apartment2)
-"jrx" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/cargo/sorting)
-"jry" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 1
- },
-/obj/machinery/shower/directional/north,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"jrM" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"jrV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"jrZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/bot,
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/starboard/fore)
-"jse" = (
-/obj/machinery/door/airlock{
- name = "Bartender's Backroom"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/service/bar,
-/turf/open/floor/wood,
-/area/station/service/bar)
-"jsF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"jsH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/security/brig)
-"jsL" = (
-/obj/effect/turf_decal/tile/red/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"jsP" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"jsS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"jsV" = (
-/obj/machinery/telecomms/server/presets/medical,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"jsY" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"jsZ" = (
-/obj/machinery/airalarm/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"jtb" = (
-/obj/machinery/button/door/directional/east{
- id = "homeguard";
- name = "Home Guard Equipment Shutters";
- req_access = list("armory")
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"jtf" = (
-/obj/item/stack/sheet/mineral/snow{
- amount = 10
- },
-/obj/machinery/light_switch/directional/south,
-/turf/open/misc/asteroid/snow/standard_air{
- icon_state = "snow8"
- },
-/area/station/maintenance/floor2/port/aft)
-"jth" = (
-/obj/machinery/porta_turret/ai,
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"jtm" = (
-/obj/machinery/door/airlock/wood{
- name = "Bedroom"
- },
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/apartment2)
-"jtr" = (
-/obj/effect/turf_decal/siding/wideplating_new/end,
-/turf/open/floor/engine/airless,
-/area/space/nearstation)
-"jtu" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/holopad,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"jtC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"jtJ" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/misc/snow/actually_safe{
- icon_state = "snow9"
- },
-/area/station/hallway/floor2/fore)
-"jtL" = (
-/obj/structure/sign/poster/contraband/random/directional/south,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"juf" = (
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "radshutsouth"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"juq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"juE" = (
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"juF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/item/reagent_containers/cup/bucket,
-/obj/item/mop,
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/iron/cafeteria,
-/area/station/security/prison)
-"juI" = (
-/obj/machinery/power/terminal{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/engine_smes)
-"juW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/window/brigdoor/right/directional/south{
- name = "Courtroom Access";
- req_one_access = list("security","court")
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/courtroom)
-"jvf" = (
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/maintenance/floor4/port/fore)
-"jvk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"jvu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"jvv" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"jvM" = (
-/turf/closed/wall,
-/area/station/command/heads_quarters/captain/private)
-"jvQ" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/sign/poster/random/directional/north,
-/obj/item/storage/box/mousetraps{
- pixel_x = -3;
- pixel_y = 8
- },
-/obj/item/key/janitor{
- pixel_x = 4;
- pixel_y = 6
- },
-/obj/item/clothing/gloves/color/orange{
- pixel_x = 4;
- pixel_y = -2
- },
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"jvX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"jvY" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"jwi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"jwj" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"jwo" = (
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"jwr" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/aft)
-"jwu" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"jwC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"jwD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"jwG" = (
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/security/brig)
-"jwP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"jwS" = (
-/obj/structure/curtain,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"jxa" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"jxc" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"jxf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"jxi" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/departments/telecomms/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"jxj" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/autoname/directional/west,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"jxk" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/smooth_large,
-/area/station/science/robotics/mechbay)
-"jxy" = (
-/obj/structure/table,
-/obj/item/taperecorder/empty{
- pixel_x = -9
- },
-/obj/item/knife/hunting{
- pixel_y = 8
- },
-/obj/item/wirecutters,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/lighter{
- pixel_x = 10;
- pixel_y = -13
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"jxz" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/storage)
-"jxD" = (
-/obj/machinery/door/airlock/virology/glass{
- name = "Test Subject Cell"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/medical/virology,
-/obj/structure/cable,
-/turf/open/floor/noslip,
-/area/station/medical/virology)
-"jxF" = (
-/obj/machinery/light/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"jxG" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/obj/docking_port/stationary{
- dir = 2;
- dwidth = 3;
- height = 12;
- name = "north star arrivals";
- roundstart_template = /datum/map_template/shuttle/arrival/northstar;
- shuttle_id = "arrival_stationary";
- width = 7
- },
-/turf/open/floor/engine,
-/area/station/hallway/secondary/entry)
-"jxK" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/firealarm/directional/north,
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"jxM" = (
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"jxN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"jxP" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/punching_bag,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"jyc" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"jye" = (
-/obj/structure/table,
-/obj/item/clothing/glasses/sunglasses{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/clothing/ears/earmuffs{
- pixel_y = 7
- },
-/obj/machinery/recharger,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"jyp" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Head of Security Office"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/hos,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"jyu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"jyC" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"jyD" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"jyL" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/structure/sign/directions/dorms/directional/north,
-/obj/structure/sign/directions/security/directional/north{
- pixel_y = 40
- },
-/obj/structure/sign/directions/command/directional/north{
- pixel_y = 24
- },
-/obj/structure/rack,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor2/fore)
-"jyP" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/aft)
-"jyY" = (
-/obj/structure/rack,
-/obj/item/clothing/gloves/color/black,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/aft)
-"jzc" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"jzd" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/newscaster/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"jze" = (
-/obj/machinery/door/airlock/security{
- name = "Security EVA"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"jzp" = (
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"jzq" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/structure/sign/departments/psychology/directional/east,
-/turf/open/floor/iron/white/side,
-/area/station/hallway/floor2/fore)
-"jzt" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"jzv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/chair/wood/wings{
- dir = 4
- },
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"jzB" = (
-/obj/effect/decal/cleanable/oil/streak,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"jzC" = (
-/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{
- dir = 8
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos)
-"jzE" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"jzF" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/detective,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/security{
- name = "Detective's Office"
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"jzH" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"jzL" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"jzN" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/iv_drip,
-/obj/structure/cable,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"jzP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"jzV" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"jAl" = (
-/obj/structure/table/wood/fancy/red,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"jAB" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/entry)
-"jAF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock{
- name = "Arrivals Changing Room"
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "arrivalsprivacy";
- name = "Arrivals Privacy Shutters"
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"jAO" = (
-/obj/effect/spawner/random/structure/closet_empty/crate/with_loot,
-/obj/effect/spawner/random/maintenance/three,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"jAR" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/mass_driver/ordnance{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"jAU" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"jAX" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"jAZ" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy,
-/turf/open/floor/plating,
-/area/station/medical/pharmacy)
-"jBa" = (
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"jBf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/reinforced,
-/obj/item/bot_assembly/floorbot,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"jBm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"jBu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/assembly/igniter{
- pixel_x = 3;
- pixel_y = -7
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"jBx" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/supermatter/room)
-"jBR" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/siding/white/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"jCi" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"jCz" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-16";
- location = "2-15"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"jCA" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/command/storage/eva)
-"jCD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"jCK" = (
-/obj/machinery/recharger,
-/obj/structure/table,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"jCM" = (
-/obj/machinery/light/broken/directional/south,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"jCU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"jDc" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/folder/white,
-/obj/item/taperecorder{
- pixel_x = -9;
- pixel_y = 3
- },
-/obj/item/stamp/head/rd{
- pixel_x = 5
- },
-/obj/item/toy/figure/rd{
- pixel_x = 2;
- pixel_y = 13
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"jDe" = (
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"jDq" = (
-/obj/machinery/light/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/service/chapel/funeral)
-"jDx" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"jDD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/shovel,
-/obj/effect/spawner/random/clothing/gloves,
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"jDJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"jDL" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"jEa" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"jEc" = (
-/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/airlock/highsecurity{
- id_tag = "mine_bhz_lock";
- name = "Biohazard Decontamination"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white/textured_large,
-/area/station/cargo/miningoffice)
-"jEk" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"jEn" = (
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white/side{
- dir = 8
- },
-/area/station/cargo/miningdock)
-"jEs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"jEt" = (
-/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"jEO" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"jER" = (
-/obj/machinery/atmospherics/components/binary/valve,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"jES" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 8
- },
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"jEX" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"jEY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"jEZ" = (
-/obj/structure/window/spawner/directional/south,
-/obj/structure/bed/medical/emergency,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"jFh" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"jFi" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"jFr" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"jFB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/oil/streak,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"jFJ" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"jFK" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"jFN" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"jFO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"jFQ" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"jFT" = (
-/obj/structure/railing/corner,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"jFZ" = (
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"jGe" = (
-/obj/machinery/camera{
- c_tag = "Technical Storage";
- dir = 1;
- network = list("ss13","engine")
- },
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/storage/tech)
-"jGf" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"jGg" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/aft)
-"jGj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/random/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"jGl" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"jGn" = (
-/obj/structure/table/wood/poker,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/item/storage/dice,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"jGz" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"jGF" = (
-/turf/closed/wall,
-/area/station/service/kitchen/kitchen_backroom)
-"jGI" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"jGN" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/ai_all,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_corner,
-/area/station/engineering/storage/tech)
-"jHc" = (
-/obj/machinery/door/window/left/directional/north{
- name = "Telecomms Cooling";
- req_access = list("tcomms")
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/holopad,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/iron/telecomms,
-/area/station/tcommsat/server)
-"jHm" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"jHr" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"jHv" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"jHH" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 5
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"jHI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/stool/directional/east,
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"jHJ" = (
-/obj/structure/hedge/opaque,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/carpet/green,
-/area/station/service/kitchen/diner)
-"jHQ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"jHR" = (
-/obj/machinery/light/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"jHS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/checkpoint)
-"jHT" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"jHW" = (
-/obj/structure/weightmachine/weightlifter,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron/smooth_large,
-/area/station/medical/psychology)
-"jIc" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable/multilayer/connected,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"jIe" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/engineering/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"jIi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 4
- },
-/obj/effect/turf_decal/siding/blue{
- dir = 4;
- pixel_x = -15
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"jIs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/reinforced/rglass,
-/obj/item/storage/box/rxglasses{
- pixel_y = 5
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"jIy" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"jIA" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"jIG" = (
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"jIJ" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"jIP" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{
- dir = 8
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"jIT" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"jIV" = (
-/obj/structure/table/reinforced,
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs,
-/obj/machinery/recharger,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"jIY" = (
-/obj/effect/turf_decal/trimline/green/end{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"jIZ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/checkpoint)
-"jJa" = (
-/obj/effect/decal/cleanable/confetti,
-/obj/effect/turf_decal/siding/blue/corner,
-/obj/machinery/light/blacklight/directional/north,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"jJm" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"jJq" = (
-/obj/effect/landmark/navigate_destination/chemfactory,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"jJu" = (
-/turf/closed/wall,
-/area/station/service/kitchen/abandoned)
-"jJB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/table,
-/obj/item/paper/crumpled,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"jJC" = (
-/obj/item/target/syndicate,
-/obj/structure/training_machine,
-/turf/open/floor/iron,
-/area/station/security/range)
-"jJI" = (
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 8
- },
-/obj/item/toy/plush/pkplush{
- name = "Hug Emoji"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"jJM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2,
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"jJP" = (
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"jJV" = (
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"jJW" = (
-/obj/structure/foamedmetal,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"jKh" = (
-/obj/structure/closet/cabinet,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"jKi" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"jKt" = (
-/turf/closed/wall/r_wall,
-/area/station/tcommsat/computer)
-"jKB" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 9
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"jKF" = (
-/obj/machinery/holopad,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"jKK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"jKO" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron/textured_half,
-/area/station/hallway/secondary/entry)
-"jKY" = (
-/obj/structure/bookcase/random/adult,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"jLh" = (
-/obj/structure/sign/poster/contraband/lamarr,
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"jLi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"jLk" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/food/drug/saturnx,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"jLm" = (
-/obj/structure/bed,
-/obj/item/bedsheet/hos,
-/obj/effect/landmark/start/head_of_security,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"jLr" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/box,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"jLt" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"jLF" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"jLI" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"jLQ" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"jLT" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/structure/grille,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"jLX" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"jMn" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"jMp" = (
-/obj/item/storage/belt/utility,
-/obj/structure/rack,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"jMu" = (
-/obj/machinery/door/airlock{
- name = "Escape Pod C"
- },
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/escape_pod)
-"jMv" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/mob/living/basic/butterfly,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"jME" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/shower/directional/east,
-/turf/open/floor/noslip,
-/area/station/science/lobby)
-"jMI" = (
-/obj/effect/spawner/random/food_or_drink/donkpockets,
-/obj/structure/closet/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"jMW" = (
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible,
-/obj/machinery/shower/directional/east,
-/obj/effect/turf_decal/stripes/full,
-/turf/open/floor/noslip,
-/area/station/engineering/supermatter/room)
-"jNa" = (
-/obj/effect/turf_decal/trimline/brown/line,
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input,
-/turf/open/floor/engine/vacuum,
-/area/station/engineering/atmos)
-"jNb" = (
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"jNc" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"jNg" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"jNl" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"jNr" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"jNt" = (
-/obj/effect/spawner/random/trash/hobo_squat,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"jNu" = (
-/obj/item/kirbyplants/random,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"jNv" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"jNE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"jNH" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"jNL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"jNM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"jNP" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"jNQ" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"jOc" = (
-/obj/item/storage/box/firingpins,
-/obj/item/storage/box/firingpins,
-/obj/item/key/security,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"jOj" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"jOp" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"jOA" = (
-/obj/structure/closet/l3closet/security,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"jOC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"jON" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"jOS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/skill_station,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"jOT" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Starboard Quarter Solars"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/construction,
-/obj/structure/railing/corner,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"jOX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_x = -32
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"jPd" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/rack,
-/obj/item/watertank/atmos,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/port/fore)
-"jPg" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"jPh" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/lobby)
-"jPj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"jPp" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/gibs/torso,
-/obj/effect/decal/cleanable/blood,
-/obj/effect/spawner/random/trash/garbage{
- spawn_loot_count = 3;
- spawn_scatter_radius = 1
- },
-/obj/structure/spider/stickyweb,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"jPr" = (
-/obj/structure/closet/bombcloset,
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"jPv" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/table,
-/obj/item/stack/package_wrap,
-/obj/item/hand_labeler,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"jPD" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/filled/arrow_ccw{
- dir = 4
- },
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"jPG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"jPI" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Disposals"
- },
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/shipping,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/disposal)
-"jPR" = (
-/obj/machinery/vending/boozeomat,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"jPW" = (
-/obj/structure/closet{
- name = "Evidence Closet 2"
- },
-/obj/effect/spawner/random/clothing/lizardboots,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"jQb" = (
-/obj/machinery/door/airlock/medical{
- name = "Chemical Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"jQu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/science/robotics/lab)
-"jQw" = (
-/turf/open/floor/iron/dark/textured_corner{
- dir = 8
- },
-/area/station/maintenance/floor1/starboard/aft)
-"jQG" = (
-/obj/structure/railing,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"jQK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"jQS" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/yellow,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"jQX" = (
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"jQY" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"jRe" = (
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor3/aft)
-"jRi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"jRp" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/machinery/telecomms/processor/preset_four,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"jRq" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"jRt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/commons/storage/primary)
-"jRx" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/departments/telecomms/alt/directional/south,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"jRB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/built/directional/east,
-/obj/item/shard,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"jRI" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/start/research_director,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"jRJ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hydroponics{
- desc = "A very, very old airlock, it barely seems to function.";
- name = "G-rd-n"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/effect/mapping_helpers/airlock/cutaiwire,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"jRM" = (
-/obj/effect/spawner/random/engineering/canister,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"jRO" = (
-/turf/closed/wall/r_wall,
-/area/station/hallway/floor2/aft)
-"jRP" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"jRV" = (
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/vending/wardrobe/sec_wardrobe,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"jSj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"jSt" = (
-/obj/machinery/computer/prisoner/gulag_teleporter_computer,
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"jSy" = (
-/obj/machinery/smartfridge,
-/obj/machinery/door/firedoor,
-/turf/open/floor/plating,
-/area/station/service/hydroponics)
-"jSC" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/left/directional/north{
- name = "Pharmacy Desk";
- req_access = list("pharmacy")
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"jSD" = (
-/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"jSJ" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"jSW" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"jTj" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 6
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"jTo" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"jTw" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"jTE" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/medbay/alt/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"jTH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"jTK" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"jTM" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"jTO" = (
-/obj/machinery/airalarm/directional/east,
-/obj/structure/table/wood,
-/obj/structure/reagent_dispensers/beerkeg,
-/turf/open/floor/wood,
-/area/station/service/bar)
-"jTS" = (
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"jUf" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics,
-/obj/machinery/door/airlock/hydroponics/glass{
- name = "Hydroponics"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"jUg" = (
-/turf/open/floor/iron/half,
-/area/station/command/gateway)
-"jUo" = (
-/turf/open/floor/iron/corner{
- dir = 4
- },
-/area/station/engineering/lobby)
-"jUu" = (
-/obj/structure/stairs/south,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/fore)
-"jUC" = (
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"jUJ" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/structure/tank_dispenser/oxygen,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"jUP" = (
-/turf/closed/wall,
-/area/station/cargo/warehouse)
-"jUR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/lobby)
-"jVe" = (
-/obj/structure/ladder,
-/turf/open/floor/plating/airless,
-/area/station/maintenance/floor3/port/aft)
-"jVg" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/morgue,
-/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"jVo" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"jVt" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/button/elevator/directional/south{
- id = "com_vator"
- },
-/obj/machinery/lift_indicator/directional/south{
- linked_elevator_id = "com_vator";
- pixel_y = -36
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"jVu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"jVK" = (
-/turf/closed/wall/r_wall,
-/area/station/security/prison)
-"jVM" = (
-/obj/machinery/space_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"jVN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"jVS" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/cargo/lobby)
-"jVT" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"jVW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/pew/right{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"jWi" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"jWm" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 8
- },
-/obj/structure/railing,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/supermatter/room)
-"jWn" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"jWv" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{
- dir = 8
- },
-/turf/closed/wall/r_wall,
-/area/station/engineering/supermatter/waste)
-"jWz" = (
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"jWI" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/turf_decal/stripes/end,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"jWR" = (
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"jWT" = (
-/turf/closed/wall,
-/area/station/service/kitchen/diner)
-"jXb" = (
-/obj/effect/spawner/random/vending/colavend,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"jXc" = (
-/turf/open/floor/iron/white/smooth_edge,
-/area/station/science/robotics/lab)
-"jXj" = (
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"jXl" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate_abandoned,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"jXu" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"jXv" = (
-/obj/structure/closet/crate/freezer/surplus_limbs,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"jXz" = (
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"jXB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"jXE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"jXW" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"jXX" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Holodeck - Fore";
- name = "holodeck camera"
- },
-/turf/open/floor/engine{
- name = "Holodeck Projector Floor"
- },
-/area/station/holodeck/rec_center)
-"jXY" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"jYe" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/chair/plastic,
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"jYo" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"jYt" = (
-/obj/structure/table/wood/poker,
-/obj/item/storage/dice,
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"jYy" = (
-/obj/machinery/airalarm/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"jYz" = (
-/obj/structure/chair/sofa/middle/maroon{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"jYS" = (
-/obj/effect/spawner/random/vending/colavend,
-/obj/effect/turf_decal/trimline/white/warning,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"jYY" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"jZa" = (
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"jZe" = (
-/obj/structure/closet/crate/freezer/surplus_limbs,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"jZj" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"jZk" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/secondary/exit)
-"jZm" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"jZp" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"jZA" = (
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"jZE" = (
-/obj/machinery/vending/clothing,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"jZL" = (
-/obj/structure/cable,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"jZS" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"jZZ" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"kak" = (
-/obj/effect/decal/cleanable/ash,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"kaq" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/machinery/door/airlock{
- name = "Escape Pod A"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"kaw" = (
-/obj/item/construction/plumbing,
-/obj/structure/table/reinforced,
-/obj/machinery/camera/directional/north,
-/obj/machinery/newscaster/directional/north,
-/obj/item/gun/syringe,
-/obj/item/gun/syringe,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"kaT" = (
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"kaU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"kaZ" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/clothing/glasses/regular,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/commons/dorms/room1)
-"kba" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"kbf" = (
-/obj/effect/spawner/random/trash/hobo_squat,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"kbk" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"kbp" = (
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/security/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/security/glass{
- name = "1st Floor Outpost"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"kbq" = (
-/obj/structure/table/wood,
-/obj/item/canvas/nineteen_nineteen,
-/obj/item/canvas/thirtysix_twentyfour,
-/obj/item/canvas/twentyfour_twentyfour,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"kbu" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos/office)
-"kbw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"kbx" = (
-/obj/effect/turf_decal/trimline/purple,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"kbE" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"kbI" = (
-/obj/machinery/light/directional/south,
-/turf/open/floor/wood,
-/area/station/hallway/floor4/fore)
-"kbL" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/structure/table/reinforced/rglass,
-/obj/item/multitool{
- pixel_x = -5;
- pixel_y = 6
- },
-/obj/item/storage/belt/utility/full{
- pixel_x = 4;
- pixel_y = -4
- },
-/turf/open/floor/iron/large,
-/area/station/science/robotics/lab)
-"kbM" = (
-/obj/machinery/door/airlock/highsecurity{
- id_tag = "mine_bhz_lock";
- name = "Biohazard Decontamination"
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/textured_large,
-/area/station/cargo/miningoffice)
-"kbN" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"kbO" = (
-/obj/structure/curtain,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/shower/directional/south,
-/turf/open/floor/iron/showroomfloor,
-/area/station/medical/psychology)
-"kbR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"kbS" = (
-/obj/machinery/holopad,
-/obj/effect/landmark/observer_start,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"kbT" = (
-/obj/structure/closet/secure_closet/detective,
-/obj/item/switchblade,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"kbZ" = (
-/obj/effect/turf_decal/box/corners{
- dir = 8
- },
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"kca" = (
-/turf/closed/wall/r_wall,
-/area/station/service/library/lounge)
-"kch" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kcl" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"kcr" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 5
- },
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/computer/robotics{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"kct" = (
-/obj/structure/closet/firecloset/full,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"kcv" = (
-/obj/structure/closet{
- name = "Evidence Closet 3"
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"kcw" = (
-/obj/machinery/computer/mech_bay_power_console{
- dir = 8
- },
-/obj/machinery/button/door/directional/north{
- id = "secmechbay";
- name = "Security Mech Garage Door Controls";
- req_access = list("security")
- },
-/obj/effect/turf_decal/tile/red/opposingcorners,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"kcy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"kcA" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"kcB" = (
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "radshutnorth"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"kcC" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/structure/reagent_dispensers/water_cooler,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"kcI" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"kcK" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"kcT" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/sign/departments/exodrone/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"kcZ" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/table/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "lockers";
- name = "Locker Room Shutters"
- },
-/obj/item/storage/crayons{
- pixel_x = 6;
- pixel_y = -3
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"kdh" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/machinery/light/directional/west,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"kdj" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"kdu" = (
-/obj/machinery/light/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/gravity_generator)
-"kdw" = (
-/obj/structure/table/wood,
-/obj/item/camera_film{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/camera_film{
- pixel_x = -6;
- pixel_y = 5
- },
-/obj/item/camera,
-/obj/machinery/light/directional/east,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"kdx" = (
-/obj/structure/chair/sofa/bench{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"kdy" = (
-/obj/structure/table,
-/obj/machinery/microwave,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"kdA" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/bananalamp{
- pixel_y = 5
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/grimy,
-/area/station/science/xenobiology/hallway)
-"kdE" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"kdK" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"kdQ" = (
-/obj/structure/table/reinforced,
-/obj/item/clothing/head/rasta,
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"kdU" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"keg" = (
-/obj/machinery/light_switch/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"kes" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/table/wood,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"ket" = (
-/obj/machinery/light/warm/directional/south,
-/turf/open/floor/iron/white/side{
- dir = 10
- },
-/area/station/hallway/floor2/fore)
-"key" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"keA" = (
-/obj/item/kirbyplants/random,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"keE" = (
-/obj/structure/grille/broken,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"keF" = (
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/departure_lounge)
-"keJ" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"keL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-11";
- location = "3-10"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"keM" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
-"keN" = (
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"keP" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 1
- },
-/area/station/maintenance/floor1/starboard/aft)
-"keR" = (
-/obj/structure/table/reinforced,
-/obj/item/folder{
- pixel_x = -5
- },
-/obj/item/pen{
- pixel_x = 5;
- pixel_y = 3
- },
-/obj/item/pen{
- pixel_x = 5
- },
-/obj/item/pen{
- pixel_x = 5;
- pixel_y = -3
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"keW" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"keX" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"kfb" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"kfg" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/heater/layer2{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"kfm" = (
-/obj/effect/turf_decal/trimline/purple,
-/obj/machinery/airalarm/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"kfo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"kfq" = (
-/obj/structure/sign/departments/vault/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"kfF" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"kfL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/oven,
-/obj/machinery/light/broken/directional/north,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"kga" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"kgl" = (
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"kgn" = (
-/obj/structure/sign/departments/security/directional/east,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor4/aft)
-"kgK" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kgL" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/railing/corner/end/flip{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"kgT" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"kgW" = (
-/obj/structure/transit_tube/crossing{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"kgY" = (
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"kgZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"kha" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/table/wood/fancy/blue,
-/obj/item/storage/fancy/cigarettes/cigars/havana,
-/obj/item/storage/fancy/cigarettes/cigars/cohiba{
- pixel_y = 3
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"khc" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/line,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"khe" = (
-/obj/machinery/door/airlock{
- id_tag = "nsminingdorm1";
- name = "Room 1"
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/cargo/miningdock)
-"khh" = (
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"khk" = (
-/obj/effect/turf_decal/trimline/red/end{
- dir = 8
- },
-/obj/effect/landmark/navigate_destination/bridge,
-/obj/structure/plaque/static_plaque/golden/commission/northstar,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"khl" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/obj/structure/girder/reinforced,
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/qm)
-"khm" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"khn" = (
-/obj/item/storage/box/chemimp{
- pixel_x = 6
- },
-/obj/item/storage/box/trackimp{
- pixel_x = -3
- },
-/obj/item/storage/lockbox/loyalty,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"khr" = (
-/turf/closed/wall,
-/area/station/maintenance/disposal/incinerator)
-"khs" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Law Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/court,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/service/lawyer,
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"khx" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"khK" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/teleporter)
-"khP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"khQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"khS" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"khX" = (
-/obj/structure/cable/multilayer/multiz,
-/obj/effect/turf_decal/stripes/box,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"kik" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/landmark/start/scientist,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"kil" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/light/colour_cycle/dancefloor_a,
-/area/station/medical/abandoned)
-"kis" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"kiA" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"kiM" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"kiO" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/suit_storage_unit/medical,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"kjb" = (
-/obj/effect/decal/cleanable/blood/splatter,
-/obj/machinery/light/small/red/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"kjc" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"kjd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"kjk" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Briefing Room"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/office)
-"kjo" = (
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/genetics,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/science/glass{
- name = "Genetics Office"
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"kjz" = (
-/obj/machinery/door/airlock/grunge{
- name = "Cell 1"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"kjF" = (
-/obj/machinery/portable_atmospherics/canister/plasma,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/oil/streak,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"kjW" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"kkg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"kkw" = (
-/obj/structure/cable,
-/obj/machinery/power/floodlight{
- anchored = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"kkA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"kkI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/aft)
-"kkK" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"kkN" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"kkQ" = (
-/obj/structure/punching_bag,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/smooth_large,
-/area/station/medical/psychology)
-"klc" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"klo" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"klw" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"klz" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"klC" = (
-/obj/effect/turf_decal/caution/white{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"klD" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 1
- },
-/obj/machinery/meter,
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos)
-"klO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"klY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"kmc" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/effect/landmark/start/chaplain,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"kme" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/public/glass{
- name = "Worship Hall"
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"kmk" = (
-/obj/effect/decal/cleanable/blood/footprints,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"kms" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall,
-/area/station/service/kitchen/abandoned)
-"kmt" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kmG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/navigate_destination/lawyer,
-/turf/open/floor/wood/parquet,
-/area/station/hallway/floor4/aft)
-"kmQ" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/effect/mapping_helpers/mail_sorting/supply/disposals,
-/obj/structure/disposalpipe/sorting/mail{
- dir = 1
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/sorting)
-"kmR" = (
-/turf/closed/wall,
-/area/station/science/lab)
-"kmV" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"knd" = (
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/aft)
-"knf" = (
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"knk" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"knH" = (
-/turf/open/openspace,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"knM" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"knO" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 10
- },
-/obj/item/kirbyplants/random,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"knP" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/fore)
-"knT" = (
-/obj/structure/sink/directional/north,
-/obj/effect/turf_decal/trimline/purple/end{
- dir = 1
- },
-/turf/open/floor/noslip{
- icon_state = "textured_dark"
- },
-/area/station/science/robotics/lab)
-"knW" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"knY" = (
-/obj/structure/showcase/cyborg/old{
- dir = 4;
- pixel_x = -9;
- pixel_y = 2
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/south{
- broadcasting = 1;
- frequency = 1447;
- listening = 0;
- name = "Private Channel"
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"koc" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/south,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"kod" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/smartfridge/organ,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"kok" = (
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"kop" = (
-/turf/open/floor/plating/airless,
-/area/station/hallway/secondary/exit)
-"kor" = (
-/obj/effect/turf_decal/siding/wood/corner,
-/obj/effect/landmark/start/medical_doctor,
-/obj/structure/chair/sofa/left/brown,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"kox" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"koC" = (
-/obj/structure/tank_dispenser,
-/obj/effect/turf_decal/bot,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"koJ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"koN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"koU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/captain/private)
-"kpa" = (
-/obj/structure/table/wood/fancy/red,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/item/reagent_containers/condiment/saltshaker{
- pixel_x = -3
- },
-/obj/item/reagent_containers/condiment/peppermill{
- pixel_x = 3
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"kpc" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"kpe" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner,
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"kph" = (
-/obj/machinery/telecomms/server/presets/supply,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"kpi" = (
-/obj/structure/sign/poster/official/terragov/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"kpl" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"kpt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"kpx" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"kpz" = (
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"kpI" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"kpR" = (
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"kpT" = (
-/obj/machinery/duct,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"kpU" = (
-/obj/item/shard/plasma,
-/obj/structure/foamedmetal,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"kpX" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"kqk" = (
-/obj/structure/chair/pew/right{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"kqp" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"kqy" = (
-/obj/machinery/door_buttons/access_button{
- idDoor = "asylum_airlock_interior";
- name = "Asylum Entry";
- pixel_y = 26;
- req_access = list("psychology")
- },
-/obj/effect/turf_decal/trimline/white/filled/line{
- dir = 9
- },
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"kqG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"kqP" = (
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"kqW" = (
-/obj/structure/filingcabinet/employment,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"krf" = (
-/obj/structure/table,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/item/restraints/handcuffs,
-/obj/item/clothing/mask/muzzle,
-/obj/item/clothing/mask/muzzle,
-/obj/item/clothing/mask/muzzle,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"kri" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"krk" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/mining/glass{
- name = "Cargo Office"
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"kro" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"krq" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"krw" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"kry" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"krF" = (
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/access/any/science/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard/fore)
-"krK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"krT" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"krU" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"ksd" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/clothing/glasses/regular,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"ksk" = (
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/aft)
-"ksn" = (
-/obj/structure/table,
-/obj/item/holosign_creator/atmos,
-/obj/item/holosign_creator/atmos,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"ksr" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/table,
-/obj/item/plant_analyzer{
- pixel_x = 2
- },
-/obj/item/shovel/spade,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"ksu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"ksv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"ksw" = (
-/obj/item/radio/intercom/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"ksx" = (
-/obj/structure/closet/emcloset,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"ksB" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/duct,
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"ksH" = (
-/obj/structure/closet/crate/freezer/blood,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"ksJ" = (
-/obj/item/radio/intercom/directional/west,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"ksN" = (
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"ksX" = (
-/obj/machinery/door/airlock/research{
- name = "Research Director's Office"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/rd,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"ktd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/smooth_corner{
- dir = 1
- },
-/area/station/cargo/miningoffice)
-"kti" = (
-/obj/item/tank/jetpack/carbondioxide,
-/obj/item/tank/jetpack/carbondioxide,
-/obj/item/tank/jetpack/carbondioxide,
-/obj/structure/rack,
-/obj/structure/window/spawner/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"ktl" = (
-/obj/structure/closet/secure_closet/atmospherics,
-/obj/effect/turf_decal/box,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/office)
-"ktu" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/box,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"ktz" = (
-/obj/item/radio/intercom/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"ktC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer2{
- dir = 1
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos)
-"ktG" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"ktM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock_note_placer{
- note_info = "THIS IS PUBLIC. IT'S MEANT TO BE. PLEASE. GOD. WE KNOW. STOP. TELLING US. - Yours Truly and Forever Faithfully, The Desk Of The Chief Engineer"
- },
-/obj/machinery/door/airlock/science/glass{
- name = "Science Hall"
- },
-/turf/open/floor/catwalk_floor,
-/area/station/science/lower)
-"ktN" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"ktV" = (
-/obj/structure/moisture_trap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"ktY" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/light/small/directional/north,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
-"kub" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 5
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"kuh" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white/corner,
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"kum" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"kux" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"kuA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/reinforced/plasmarglass,
-/obj/item/reagent_containers/pill/cyanide{
- desc = "What could it be?";
- name = "red pill"
- },
-/turf/open/floor/carpet/red,
-/area/station/maintenance/floor3/port/aft)
-"kuB" = (
-/obj/effect/mapping_helpers/mail_sorting/science/robotics,
-/obj/structure/disposalpipe/sorting/mail/flip{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"kuW" = (
-/obj/structure/firelock_frame,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"kvi" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/court,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/service/lawyer,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/security{
- name = "Law Office"
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"kvw" = (
-/obj/machinery/igniter/incinerator_ordmix,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/burnchamber)
-"kvB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"kvE" = (
-/turf/open/floor/light/colour_cycle/dancefloor_b,
-/area/station/maintenance/floor2/port/fore)
-"kvH" = (
-/obj/machinery/door/poddoor/shutters/window{
- dir = 8;
- id = "armory";
- name = "Armoury Shutters"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"kvO" = (
-/obj/item/wrench/medical,
-/obj/item/clothing/glasses/hud/health,
-/obj/item/clothing/glasses/hud/health,
-/obj/item/clothing/glasses/hud/health,
-/obj/structure/table/glass,
-/obj/item/gun/syringe,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"kvR" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"kwc" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock{
- name = "Bar Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/bar,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"kwf" = (
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"kwl" = (
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor2/fore)
-"kwm" = (
-/obj/structure/lattice/catwalk,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"kwn" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"kws" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"kwt" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"kwG" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/landmark/start/bartender,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"kwK" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"kwL" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/recharger,
-/obj/structure/table,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"kxf" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"kxh" = (
-/obj/machinery/vending/sovietsoda,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"kxq" = (
-/obj/machinery/atmospherics/components/binary/volume_pump{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"kxs" = (
-/obj/structure/table/wood/poker,
-/obj/effect/spawner/random/entertainment/gambling,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/broken/directional/west,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"kxJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"kxK" = (
-/obj/effect/turf_decal/siding/white{
- dir = 6
- },
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"kxM" = (
-/obj/machinery/light/directional/north,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/ai_monitored/command/storage/eva)
-"kxP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark/corner,
-/area/station/security/brig)
-"kxS" = (
-/obj/structure/table/wood,
-/obj/item/book/manual/wiki/security_space_law,
-/obj/item/book/manual/wiki/security_space_law,
-/obj/item/pen/red,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"kxT" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"kye" = (
-/obj/machinery/door/airlock/security{
- name = "Perma"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "perma-entrance"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"kyj" = (
-/obj/effect/turf_decal/loading_area/white{
- color = "#52B4E9";
- dir = 1
- },
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/hallway/floor4/fore)
-"kyo" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable/layer3,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"kyv" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"kyw" = (
-/obj/machinery/gulag_teleporter,
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"kyx" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/storage/primary)
-"kyM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"kyO" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"kyR" = (
-/turf/closed/wall,
-/area/station/hallway/floor1/fore)
-"kzn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port/aft)
-"kzr" = (
-/obj/structure/rack,
-/obj/item/reagent_containers/cup/bottle/ethanol{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/carbon{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/chlorine{
- pixel_x = 1
- },
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"kzE" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor1/port)
-"kzK" = (
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"kzP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/dark_blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"kzT" = (
-/obj/item/bedsheet/double,
-/obj/structure/bed/double,
-/obj/machinery/light/directional/south,
-/obj/effect/landmark/start/chaplain,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"kzU" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"kAb" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/red/filled/corner,
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"kAe" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/machinery/camera/directional/west{
- c_tag = "Science - Equipment Closet"
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"kAm" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/item/storage/box/gloves{
- pixel_x = 3;
- pixel_y = 4
- },
-/obj/item/storage/box/masks,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"kAu" = (
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/structure/disposaloutlet{
- dir = 8
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"kAw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor3/port)
-"kAE" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/turf/open/floor/engine/airless,
-/area/space/nearstation)
-"kAF" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"kAG" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"kAI" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/fancy/rollingpapers{
- pixel_x = -6;
- pixel_y = 6
- },
-/obj/item/storage/fancy/rollingpapers{
- pixel_x = -6;
- pixel_y = -6
- },
-/obj/item/plant_analyzer{
- pixel_x = 5;
- pixel_y = 8
- },
-/obj/item/cultivator,
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"kAO" = (
-/obj/structure/table,
-/obj/item/kitchen/rollingpin,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"kAR" = (
-/obj/machinery/door/airlock/security{
- name = "Perma"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "perma-entrance"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"kAU" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"kAW" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/north,
-/obj/structure/window/reinforced/plasma/spawner/directional/east,
-/obj/effect/decal/cleanable/ash/large,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"kAY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"kBa" = (
-/obj/structure/railing{
- dir = 6
- },
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"kBc" = (
-/obj/structure/table/reinforced,
-/obj/machinery/flasher/directional/south{
- id = "virosec_flash"
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"kBi" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/computer/atmos_alert{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"kBj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"kBk" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"kBn" = (
-/obj/structure/flora/tree/jungle/small{
- pixel_x = -23
- },
-/turf/open/misc/sandy_dirt,
-/area/station/maintenance/floor1/starboard)
-"kBs" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/item/rack_parts,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"kBz" = (
-/obj/machinery/door/airlock/highsecurity{
- name = "Engine Access"
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/pumproom)
-"kBB" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/aft)
-"kBK" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/orange/visible,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"kBL" = (
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"kBX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"kCi" = (
-/obj/effect/spawner/random/trash/bin,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"kCk" = (
-/obj/structure/railing/corner,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kCA" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/medical/office)
-"kCR" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Xenobio - Starboard Pens"
- },
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"kDg" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"kDh" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/disposal/incinerator)
-"kDq" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"kDz" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/tile/dark_blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/security/prison/garden)
-"kDB" = (
-/turf/closed/wall,
-/area/station/commons/dorms/room4)
-"kDG" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/camera/motion/directional/east{
- c_tag = "MiniSat - Fore";
- network = list("minisat")
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"kDK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/smooth_corner{
- dir = 8
- },
-/area/station/commons/fitness/recreation)
-"kDN" = (
-/obj/machinery/door/window/left/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"kDQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"kDU" = (
-/obj/structure/table/glass,
-/obj/item/beacon{
- enabled = 0
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"kEe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sign/warning/vacuum/external{
- pixel_y = 32
- },
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"kEf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"kEp" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"kEv" = (
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/arrows,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kEF" = (
-/obj/machinery/computer/rdconsole{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"kEI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"kEN" = (
-/obj/machinery/camera{
- c_tag = "Atmos Tank #1 - N2";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine/n2,
-/area/station/engineering/atmos)
-"kET" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/textured_edge{
- dir = 1
- },
-/area/station/medical/chemistry)
-"kEU" = (
-/obj/item/radio/intercom/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"kEY" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"kEZ" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"kFb" = (
-/obj/structure/chair/stool/bar/directional/north,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"kFd" = (
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"kFi" = (
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"kFp" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 10
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"kFv" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"kFy" = (
-/turf/open/openspace,
-/area/station/science/ordnance/testlab)
-"kFF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"kFJ" = (
-/obj/machinery/photocopier,
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kFO" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"kFP" = (
-/turf/open/floor/iron/textured_half,
-/area/station/cargo/office)
-"kGa" = (
-/obj/structure/table,
-/obj/item/key/security,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/machinery/newscaster/directional/north,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/item/key/security,
-/obj/machinery/button/flasher{
- id = "drunktank";
- name = "Drunk Tank Flasher"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"kGe" = (
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"kGf" = (
-/obj/structure/table,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/item/paper_bin,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"kGg" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"kGq" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/structure/closet,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"kGr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"kGv" = (
-/obj/structure/closet/crate/trashcart{
- name = "book bin"
- },
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/small/directional/west,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/service/library/printer)
-"kGz" = (
-/obj/effect/decal/cleanable/glitter,
-/obj/effect/turf_decal/siding/blue{
- dir = 8
- },
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"kGK" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/highsecurity{
- name = "Engine Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/pumproom)
-"kGL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/bot,
-/obj/structure/tank_holder/extinguisher,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/starboard/fore)
-"kGZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"kHc" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/chair/sofa/right/maroon{
- dir = 8
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"kHl" = (
-/obj/structure/chair/comfy/black{
- dir = 4
- },
-/obj/machinery/newscaster/directional/north,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"kHs" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"kHx" = (
-/obj/structure/closet/firecloset/full,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"kHG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/weather/dirt{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/garden)
-"kHJ" = (
-/obj/item/clothing/mask/muzzle{
- pixel_y = -5
- },
-/obj/item/tank/internals/anesthetic,
-/obj/item/clothing/mask/muzzle/breath,
-/obj/structure/closet{
- name = "Surgical Supplies"
- },
-/obj/item/reagent_containers/spray/cleaner,
-/obj/item/storage/box/gloves{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/bodybags,
-/obj/item/healthanalyzer{
- pixel_y = -3
- },
-/obj/item/reagent_containers/spray/cleaner,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"kHM" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"kHN" = (
-/obj/effect/turf_decal/tile/purple,
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningdock)
-"kHO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/fax{
- fax_name = "Head of Security's Office";
- name = "Head of Security's Fax Machine"
- },
-/obj/structure/table/wood,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"kHP" = (
-/obj/machinery/computer/shuttle/mining{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"kHQ" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/cargo_technician,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/cargo/drone_bay)
-"kHR" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Brig Fore Entrance"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"kHS" = (
-/obj/structure/closet/secure_closet/engineering_personal,
-/obj/item/clothing/gloves/color/yellow,
-/obj/machinery/requests_console/directional/south{
- department = "Engineering";
- name = "Engineering Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/effect/mapping_helpers/requests_console/supplies,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 1
- },
-/area/station/engineering/lobby)
-"kHV" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"kIe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible/layer2,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"kIu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/rack,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"kIw" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/turf_decal/trimline/dark_blue/end,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"kIG" = (
-/obj/machinery/button/door/directional/north{
- id = "Secure Storage";
- req_access = list("engineering")
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"kII" = (
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"kIO" = (
-/obj/structure/chair,
-/obj/effect/landmark/start/security_officer,
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/office)
-"kIR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"kJg" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"kJq" = (
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"kJG" = (
-/obj/structure/closet/athletic_mixed,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"kJT" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"kJU" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"kJY" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/fax{
- fax_name = "Psychology Office";
- name = "Psychology Office Fax Machine"
- },
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"kKa" = (
-/obj/machinery/status_display/ai/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"kKd" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"kKk" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kKn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/security/prison)
-"kKo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/service/bar)
-"kKr" = (
-/turf/closed/wall,
-/area/station/medical/pharmacy)
-"kKz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"kKE" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kKG" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"kKO" = (
-/obj/machinery/atmospherics/components/binary/tank_compressor{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"kKQ" = (
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"kKU" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kKX" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"kLc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"kLn" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/newscaster/directional/south,
-/obj/structure/closet/secure_closet/miner,
-/turf/open/floor/wood,
-/area/station/cargo/miningdock)
-"kLz" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"kLE" = (
-/obj/machinery/door/airlock/security{
- name = "Prisoner Transfer"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/armory,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/cutaiwire,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"kLF" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/aft)
-"kLH" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/fore)
-"kLM" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kLN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/light/colour_cycle/dancefloor_b,
-/area/station/medical/abandoned)
-"kLY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"kMb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"kMk" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"kMv" = (
-/obj/machinery/plumbing/receiver,
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"kMC" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"kMN" = (
-/obj/machinery/door/airlock/medical{
- name = "Paramedic Dispatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"kMQ" = (
-/obj/structure/chair/sofa/bench{
- dir = 4
- },
-/obj/item/radio/intercom/directional/west,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"kMX" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/newscaster/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kNh" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/structure/fluff/paper/stack{
- desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging.";
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"kNn" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"kNA" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"kNJ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/mecha_part_fabricator{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"kNN" = (
-/obj/structure/cable,
-/obj/structure/table/reinforced,
-/obj/item/storage/fancy/donut_box,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/lobby)
-"kNO" = (
-/turf/closed/wall/r_wall,
-/area/station/security/prison/work)
-"kNR" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/machinery/lift_indicator/directional/east{
- linked_elevator_id = "aft_vator";
- pixel_y = -4
- },
-/obj/machinery/button/elevator/directional/east{
- id = "aft_vator"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"kNT" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"kNZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"kOc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/office)
-"kOk" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"kOo" = (
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"kOu" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/effect/turf_decal/tile/bar{
- dir = 8
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/service/bar/atrium)
-"kOx" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet,
-/obj/item/stack/sheet/mineral/coal,
-/obj/effect/spawner/random/engineering/flashlight,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"kOA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"kON" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"kOQ" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 10
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"kOR" = (
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"kOS" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"kOU" = (
-/obj/machinery/rnd/production/circuit_imprinter/department/science,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"kPk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/commons/storage/primary)
-"kPq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall,
-/area/station/hallway/floor3/fore)
-"kPr" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/item/pai_card,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"kPy" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"kPW" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"kPX" = (
-/obj/effect/turf_decal/trimline/white,
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/engine/air,
-/area/station/engineering/atmos)
-"kQb" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/commons/storage/primary)
-"kQk" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor4/aft)
-"kQo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"kQp" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/fax{
- fax_name = "Detective's Office";
- name = "Detective's Fax Machine"
- },
-/obj/structure/table/wood,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"kQu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/security/office)
-"kQF" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/item/kirbyplants/random,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"kQI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/bag/trash,
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/flashlight,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"kQN" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"kQO" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/turf_decal/trimline/white/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"kQQ" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/service/lawoffice)
-"kQW" = (
-/obj/item/trench_tool,
-/obj/effect/decal/cleanable/molten_object/large{
- desc = "The pile looks inert, yet you still hear a faint hum. Standing around this makes you feel funny.";
- name = "glob of mess"
- },
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"kRg" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"kRh" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"kRn" = (
-/obj/structure/mirror/directional/west,
-/obj/machinery/light/small/directional/south,
-/obj/structure/sink/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"kRo" = (
-/obj/item/stock_parts/subspace/analyzer,
-/obj/item/stock_parts/subspace/amplifier,
-/obj/item/stock_parts/subspace/ansible,
-/obj/item/stock_parts/subspace/crystal,
-/obj/item/stock_parts/subspace/filter,
-/obj/item/stock_parts/subspace/transmitter,
-/obj/item/stock_parts/subspace/treatment,
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/turf/open/floor/iron/dark,
-/area/station/engineering/storage/tcomms)
-"kRw" = (
-/turf/closed/wall,
-/area/station/maintenance/floor3/starboard/aft)
-"kRF" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/structure/sink/kitchen/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"kRG" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"kRI" = (
-/obj/structure/chair/plastic{
- dir = 4
- },
-/obj/effect/landmark/start/hangover,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/fore)
-"kRM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"kRN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"kRO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"kRR" = (
-/obj/structure/railing{
- dir = 6
- },
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kRS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"kSa" = (
-/obj/machinery/announcement_system,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"kSp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"kSr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"kSA" = (
-/obj/structure/hedge/opaque,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"kSF" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/ce,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/command/glass{
- name = "Chief Engineer's Office"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/engine_smes)
-"kSN" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"kSR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"kSU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/commons/vacant_room/commissary)
-"kSW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"kSX" = (
-/obj/effect/spawner/structure/window/reinforced/shuttle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"kSZ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"kTc" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{
- dir = 4
- },
-/obj/machinery/light/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/pumproom)
-"kTg" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/effect/turf_decal/trimline/green/filled/warning{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Library Garden"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"kTh" = (
-/obj/structure/closet/secure_closet/brig/genpop,
-/obj/effect/turf_decal/tile/red/anticorner,
-/obj/item/card/id/advanced/prisoner/six,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/security/brig)
-"kTz" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/mob/living/simple_animal/bot/secbot/beepsky/armsky,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"kTI" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"kTL" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/sign/poster/random/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"kTV" = (
-/obj/structure/bookcase/random/religion,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"kTZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"kUe" = (
-/obj/structure/holosign/barrier/engineering,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"kUh" = (
-/obj/item/paper_bin,
-/obj/structure/table/reinforced/rglass,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"kUk" = (
-/obj/structure/table,
-/obj/item/stock_parts/servo{
- pixel_x = 2;
- pixel_y = -4
- },
-/obj/item/disk/tech_disk{
- pixel_y = 8
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"kUl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"kUo" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"kUw" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{
- dir = 4
- },
-/obj/machinery/portable_atmospherics/scrubber,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/floor1/aft)
-"kUB" = (
-/obj/machinery/vending/wallmed/directional/north,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"kUC" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"kUO" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"kUU" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/camera/directional/north,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"kUW" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"kUZ" = (
-/obj/structure/table,
-/obj/item/storage/box/bodybags,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"kVm" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/ladder,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"kVp" = (
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"kVu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningoffice)
-"kVB" = (
-/obj/machinery/camera{
- c_tag = "Construction Camera #1, North";
- dir = 1;
- network = list("ss13","engine")
- },
-/obj/structure/table,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"kVF" = (
-/obj/structure/chair/sofa/corp,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"kVG" = (
-/obj/structure/railing,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"kVK" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"kVM" = (
-/obj/structure/closet/crate/trashcart/filled,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"kVT" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"kVY" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/table/reinforced,
-/obj/item/stack/sheet/iron/twenty,
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"kVZ" = (
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/command/glass{
- name = "EVA Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/all/command/eva,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"kWa" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"kWd" = (
-/obj/effect/decal/cleanable/vomit/old,
-/obj/machinery/airalarm/directional/east,
-/obj/structure/chair/stool/bar/directional/south,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit)
-"kWf" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/checkpoint/third)
-"kWo" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"kWr" = (
-/obj/machinery/door/airlock/external{
- name = "Construction Zone"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base,
-/turf/open/floor/plating,
-/area/station/construction/mining/aux_base)
-"kWs" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"kWx" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"kWD" = (
-/obj/machinery/keycard_auth/wall_mounted/directional/north{
- pixel_x = -22
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/incident_display/bridge/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"kWJ" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/disposal)
-"kWM" = (
-/obj/item/stack/tile/wood,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"kWN" = (
-/obj/structure/chair/stool/bar/directional/south,
-/obj/effect/landmark/start/scientist,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"kWT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 4
- },
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"kXc" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"kXj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"kXo" = (
-/obj/effect/turf_decal/siding/white{
- dir = 5
- },
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"kXs" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/cable,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"kXt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"kXF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"kXK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/mineral/plastitanium/red,
-/area/station/maintenance/floor4/starboard/aft)
-"kXN" = (
-/obj/structure/table/wood,
-/obj/item/folder/red,
-/obj/item/pen,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/south{
- frequency = 1423;
- name = "Interrogation Intercom"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"kXP" = (
-/obj/machinery/vending/wardrobe/chef_wardrobe,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"kXW" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/starboard/fore)
-"kXZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"kYm" = (
-/obj/effect/spawner/random/trash/janitor_supplies,
-/obj/effect/turf_decal/trimline/green/end{
- dir = 8
- },
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"kYt" = (
-/obj/structure/chair/comfy/carp,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"kYv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"kYD" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"kYH" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/sign/poster/random/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"kYM" = (
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor3/aft)
-"kYR" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"kYV" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"kZe" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"kZg" = (
-/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"kZh" = (
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 1
- },
-/obj/machinery/status_display/evac/directional/west,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"kZl" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"kZp" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/clothing/glasses/regular,
-/obj/machinery/light/directional/north,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"kZr" = (
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/rods/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/electronics/airlock,
-/obj/item/electronics/airlock,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/item/stack/sheet/mineral/plasma{
- amount = 30
- },
-/obj/item/gps,
-/obj/structure/closet/crate/engineering,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"kZv" = (
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"kZG" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet,
-/area/station/service/abandoned_gambling_den)
-"kZH" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"kZS" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"kZV" = (
-/obj/structure/railing/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"kZZ" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"lad" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"laf" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"laj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"lak" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"lao" = (
-/obj/structure/chair/sofa/corp/right,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment1)
-"las" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{
- dir = 4
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/engineering/atmos)
-"lax" = (
-/obj/structure/table,
-/obj/item/storage/dice,
-/obj/effect/turf_decal/tile/red/anticorner,
-/obj/machinery/flasher/directional/east{
- name = "drunktank"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"laC" = (
-/obj/structure/table/wood,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment1)
-"laJ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"laR" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/sheet/leather,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"laS" = (
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/starboard/fore)
-"laZ" = (
-/turf/open/floor/iron/chapel,
-/area/station/maintenance/floor4/port/fore)
-"lba" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"lbi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"lbm" = (
-/obj/machinery/camera/preset/ordnance{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"lbp" = (
-/obj/machinery/vending/wardrobe/sec_wardrobe,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"lbq" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/chair/sofa/corner/brown{
- dir = 8
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"lbr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"lbt" = (
-/obj/structure/closet/secure_closet/brig/genpop,
-/obj/effect/turf_decal/tile/red/half,
-/obj/item/card/id/advanced/prisoner/four,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"lbu" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"lbx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"lbF" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"lbJ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end,
-/turf/open/floor/plating,
-/area/station/science/xenobiology)
-"lbK" = (
-/obj/structure/chair/stool/bar/directional/south,
-/obj/effect/decal/cleanable/confetti,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"lbO" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/box/syringes{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/item/storage/box/beakers{
- pixel_x = -3;
- pixel_y = 4
- },
-/obj/item/reagent_containers/dropper,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"lbT" = (
-/obj/structure/table,
-/obj/machinery/computer/libraryconsole/bookmanagement{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"lcg" = (
-/obj/effect/decal/cleanable/oil,
-/obj/item/mop,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"lci" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/starboard)
-"lcr" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"lcs" = (
-/obj/structure/disposalpipe/trunk/multiz/down,
-/obj/effect/spawner/random/structure/crate_abandoned,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"lct" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"lcv" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor2/port)
-"lcB" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/rack,
-/obj/item/stock_parts/matter_bin{
- pixel_x = 2;
- pixel_y = -5
- },
-/obj/item/stock_parts/matter_bin{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/machinery/camera/directional/west{
- c_tag = "Science - R&D Lab"
- },
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"lcF" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock{
- name = "Escape Pod C"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/escape_pod)
-"lcJ" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"lcN" = (
-/obj/effect/turf_decal/siding/yellow{
- dir = 6
- },
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"lcT" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"lcU" = (
-/obj/effect/landmark/carpspawn,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"lcW" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/stripes,
-/obj/item/gun/energy/laser/carbine/practice{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/gun/energy/laser/practice{
- pixel_x = 2;
- pixel_y = 5
- },
-/obj/item/gun/energy/laser/practice{
- pixel_x = 2;
- pixel_y = 1
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/plating,
-/area/station/science/auxlab/firing_range)
-"lcZ" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"ldb" = (
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"ldf" = (
-/obj/docking_port/stationary{
- dir = 2;
- dwidth = 1;
- height = 4;
- name = "escape pod loader";
- roundstart_template = /datum/map_template/shuttle/escape_pod/default;
- width = 3
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"ldl" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/effect/landmark/navigate_destination/tools,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/engineering/storage/tech)
-"ldq" = (
-/obj/effect/spawner/random/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"ldr" = (
-/obj/machinery/cell_charger,
-/obj/item/reagent_containers/spray/cleaner,
-/obj/structure/table/glass,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"ldv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"ldD" = (
-/obj/machinery/door/airlock/engineering{
- name = "Power Generation Experimentation"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"ldI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"ldO" = (
-/obj/structure/chair/stool/bar/directional/east,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"ldV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/holopad,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"lem" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/closet/secure_closet/brig{
- name = "Prisoner Locker"
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"len" = (
-/obj/machinery/status_display/evac/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/warning/docking/directional/south,
-/obj/machinery/computer/shuttle/mining/common{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/secondary/exit)
-"leo" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"lep" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 10
- },
-/obj/effect/spawner/random/entertainment/money_small,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"les" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"leu" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"lew" = (
-/obj/machinery/light/red/dim/directional/south,
-/obj/effect/decal/cleanable/blood/old,
-/obj/structure/sign/poster/contraband/random/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"lez" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/research/anomaly_refinery,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"leF" = (
-/obj/effect/turf_decal/siding/yellow{
- dir = 10
- },
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"leI" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"leR" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/effect/mapping_helpers/damaged_window,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"leY" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"lfd" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"lfj" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"lfq" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"lft" = (
-/obj/effect/spawner/structure/electrified_grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"lfu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/item/mod/module/plasma_stabilizer,
-/obj/item/mod/module/signlang_radio,
-/obj/item/mod/module/thermal_regulator,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"lfw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/morgue{
- name = "Private Study"
- },
-/turf/open/floor/iron,
-/area/station/service/library/private)
-"lfy" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"lfG" = (
-/obj/machinery/light/small/red/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"lfL" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"lfM" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/openspace,
-/area/station/maintenance/floor4/starboard/fore)
-"lfQ" = (
-/obj/structure/table,
-/obj/item/toy/cards/deck,
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"lfU" = (
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"lfW" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"lfZ" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"lga" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"lgj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"lgv" = (
-/obj/structure/rack,
-/obj/item/book/manual/nuclear,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor3/starboard)
-"lgw" = (
-/obj/effect/decal/cleanable/blood/splatter{
- pixel_x = 14;
- pixel_y = -6
- },
-/obj/effect/decal/cleanable/blood/gibs/torso,
-/obj/machinery/newscaster/directional/west,
-/obj/item/clothing/suit/toggle/labcoat,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"lgz" = (
-/obj/machinery/light/small/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"lgD" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"lgO" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/effect/turf_decal/trimline/blue/warning,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"lgX" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/command{
- name = "Teleporter Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/teleporter,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"lgY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/science/xenobiology/hallway)
-"lgZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/white/side{
- dir = 8
- },
-/area/station/cargo/miningdock)
-"lhh" = (
-/obj/structure/closet/radiation,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"lhi" = (
-/obj/machinery/modular_computer/preset/command,
-/turf/open/floor/carpet/blue,
-/area/station/command/bridge)
-"lhl" = (
-/obj/effect/mapping_helpers/burnt_floor,
-/obj/item/storage/belt/utility,
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"lhv" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/rack,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/item/wrench,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"lhy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 1
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"lhA" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"lhO" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"lhR" = (
-/obj/machinery/computer/operating{
- dir = 1
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"lhS" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/siding/white/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"lhT" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 10
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"lhU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"lhW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"lhZ" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"lia" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/landmark/start/hangover,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-19";
- location = "2-18"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"lif" = (
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/arrow_cw{
- dir = 5
- },
-/obj/machinery/flasher/directional/east{
- id = "hopflash"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"lij" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"lik" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"liu" = (
-/obj/machinery/atmospherics/components/unary/bluespace_sender,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/project)
-"liL" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"liQ" = (
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/hop)
-"liT" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"ljf" = (
-/obj/machinery/rnd/production/techfab/department/service,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"ljh" = (
-/obj/machinery/light/dim/directional/west,
-/turf/open/floor/grass,
-/area/station/maintenance/floor3/starboard)
-"ljs" = (
-/obj/machinery/flasher/portable,
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Secure Gear Storage"
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"lju" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"ljx" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"ljE" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ljH" = (
-/obj/machinery/door/poddoor/shutters{
- dir = 8;
- id = "armory";
- name = "Armoury Shutter"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"ljL" = (
-/obj/structure/sign/poster/contraband/moffuchis_pizza,
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"lkc" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"lkh" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"lks" = (
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"lkA" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"lkB" = (
-/obj/machinery/shower/directional/west,
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"lkE" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/turf/open/floor/iron/textured_edge{
- dir = 1
- },
-/area/station/medical/chemistry)
-"lkI" = (
-/obj/structure/ladder,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor4/aft)
-"lkP" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"lkV" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{
- dir = 9
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"lkX" = (
-/obj/machinery/chem_heater/withbuffer,
-/obj/machinery/light/cold/directional/west,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"lkY" = (
-/obj/structure/hedge/opaque,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/service/chapel/funeral)
-"lkZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"llh" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"llm" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/security{
- name = "The Red Door"
- },
-/turf/open/floor/carpet/red,
-/area/station/maintenance/floor3/port/aft)
-"lln" = (
-/turf/closed/wall/r_wall,
-/area/station/science/ordnance/storage)
-"llo" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Laboratory Door"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"llr" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"llt" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"llv" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 1
- },
-/area/station/maintenance/floor1/starboard/aft)
-"llC" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/misc/sandy_dirt,
-/area/station/hallway/secondary/entry)
-"llN" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"llQ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"llR" = (
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"llT" = (
-/obj/item/storage/fancy/donut_box,
-/obj/structure/table/glass,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"llX" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"lmb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"lme" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Departures"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"lmk" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 8
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"lmu" = (
-/obj/structure/chair/comfy,
-/obj/effect/turf_decal/trimline/red/filled/end,
-/obj/effect/landmark/start/depsec/science,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"lmv" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/trimline/brown/mid_joiner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 8
- },
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"lmF" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"lmU" = (
-/obj/structure/table/reinforced,
-/obj/effect/spawner/random/entertainment/lighter,
-/obj/machinery/camera/directional/north,
-/obj/effect/turf_decal/tile/green/full,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/desk_bell{
- pixel_x = -8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"lmW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"lng" = (
-/obj/machinery/teleport/station,
-/obj/machinery/status_display/evac/directional/north,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"lnl" = (
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"lnA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"lnG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"lnM" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"lnN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"lnU" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"lnX" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/turf/open/water/no_planet_atmos{
- desc = "Filthy.";
- name = "untreated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"loa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"loc" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"lof" = (
-/turf/open/floor/wood/parquet,
-/area/station/commons/dorms/room2)
-"lok" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/right/directional/west{
- name = "Order Window";
- req_access = list("service")
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"loA" = (
-/obj/machinery/atmospherics/components/binary/pump/on{
- dir = 1;
- name = "Unfiltered & Air to Mix"
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"loF" = (
-/obj/machinery/suit_storage_unit/security,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/turf_decal/bot,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"loK" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/corner,
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"loM" = (
-/obj/machinery/door/airlock/atmos{
- name = "Atmospheric Substation"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"loN" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"loQ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/paramedic)
-"loS" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"lpc" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"lpe" = (
-/obj/item/storage/bag/plants/portaseeder,
-/obj/item/plant_analyzer,
-/obj/item/cultivator,
-/obj/structure/rack,
-/obj/item/vending_refill/hydroseeds,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"lph" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"lpq" = (
-/obj/structure/bookcase/random/nonfiction,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"lpB" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor2/starboard)
-"lpF" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"lpH" = (
-/obj/structure/chair/comfy/carp{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"lpR" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"lpV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"lpZ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"lqf" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/light/colour_cycle/dancefloor_a,
-/area/station/maintenance/floor2/port/fore)
-"lqu" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"lqx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"lqD" = (
-/obj/structure/table,
-/obj/item/storage/box/bandages{
- pixel_x = -6;
- pixel_y = 6
- },
-/obj/item/storage/box/donkpockets{
- pixel_x = 6
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"lqI" = (
-/obj/machinery/light/small/directional/east,
-/obj/structure/toilet{
- dir = 4
- },
-/obj/machinery/shower/directional/south,
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/freezer,
-/area/station/command/heads_quarters/ce)
-"lqK" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"lrp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/status_display/ai/directional/west,
-/obj/machinery/light/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"lrA" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"lrN" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"lrR" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/maintenance/disposal)
-"lsm" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"lss" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 1
- },
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/airlock{
- name = "Arrivals"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"lsC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/warning{
- pixel_y = 32
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"lsM" = (
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/disposal/bin,
-/obj/machinery/status_display/ai/directional/north,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"lsQ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"lsT" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/window/brigdoor/left/directional/south{
- name = "Chemistry Lab";
- req_access = list("plumbing")
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"lsV" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"ltb" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/item/paper_bin/carbon{
- pixel_x = 3;
- pixel_y = 2
- },
-/obj/item/pen,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"lti" = (
-/obj/machinery/door/airlock/grunge{
- name = "Morgue"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/science/genetics,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"ltn" = (
-/obj/item/storage/toolbox/mechanical/old,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"ltq" = (
-/turf/closed/wall/r_wall,
-/area/station/hallway/floor3/fore)
-"ltt" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/robotics/lab)
-"lty" = (
-/obj/structure/flora/bush/lavendergrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"ltC" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 8
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"ltH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/structure/sign/poster/contraband/hacking_guide/directional/north,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"ltI" = (
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = -32
- },
-/obj/structure/disposalpipe/broken{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"ltR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"ltU" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/siding/white,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/junction/yjunction,
-/turf/open/floor/iron/grimy,
-/area/station/science/xenobiology/hallway)
-"ltZ" = (
-/obj/effect/turf_decal/delivery/white{
- color = "#52B4E9"
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"lua" = (
-/obj/effect/turf_decal/siding/wideplating_new/corner{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 1
- },
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"lui" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"luk" = (
-/obj/structure/closet/toolcloset,
-/obj/effect/turf_decal/bot,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"lum" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/sustenance,
-/obj/effect/turf_decal/tile/green,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/security/prison)
-"luo" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/effect/turf_decal/arrows{
- dir = 4
- },
-/obj/structure/railing,
-/obj/effect/decal/cleanable/robot_debris,
-/obj/effect/landmark/start/bitrunner,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/cargo/bitrunning/den)
-"luv" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/office)
-"luw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/furniture_parts,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"luD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"luE" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/aft)
-"luG" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"luI" = (
-/turf/open/floor/engine/vacuum,
-/area/station/engineering/atmos)
-"luJ" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/machinery/computer/records/security{
- dir = 4
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"luS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/wood/end{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/carpet/red,
-/area/station/service/library/artgallery)
-"luZ" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"lvm" = (
-/obj/structure/table,
-/obj/item/assembly/igniter{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/assembly/igniter{
- pixel_x = 5;
- pixel_y = -4
- },
-/obj/item/assembly/igniter{
- pixel_x = 2;
- pixel_y = 6
- },
-/obj/item/assembly/igniter{
- pixel_x = 2;
- pixel_y = -1
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"lvp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"lvC" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/chair/sofa/corner/maroon{
- dir = 8
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"lvJ" = (
-/obj/machinery/door/firedoor,
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/left/directional/east{
- name = "Cargo Front Desk";
- req_access = list("cargo")
- },
-/turf/open/floor/plating,
-/area/station/cargo/lobby)
-"lvM" = (
-/obj/structure/chair/stool/bar/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"lvS" = (
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"lvT" = (
-/turf/closed/wall/r_wall,
-/area/station/security/evidence)
-"lvW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"lvY" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/landmark/start/cargo_technician,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/office)
-"lwc" = (
-/turf/closed/wall,
-/area/station/engineering/atmos/project)
-"lwg" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"lwl" = (
-/obj/structure/cable,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/office)
-"lwo" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/turf/open/floor/plating,
-/area/station/security/checkpoint/third)
-"lwu" = (
-/obj/structure/closet/secure_closet/engineering_chief,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"lwv" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"lwD" = (
-/obj/item/wheelchair{
- pixel_y = -3
- },
-/obj/item/wheelchair,
-/obj/item/wheelchair{
- pixel_y = 3
- },
-/obj/structure/table/glass,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"lwP" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/commons/storage/tools)
-"lwU" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/fore)
-"lwW" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"lwY" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"lxc" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"lxr" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"lxs" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"lxC" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"lxD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"lxG" = (
-/obj/effect/turf_decal/trimline/green/end,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"lxI" = (
-/obj/item/stack/tile/wood,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/ammo_casing/c38{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"lxK" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"lxR" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"lxU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/office)
-"lxZ" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"lyd" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"lyv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"lyw" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/office)
-"lyx" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"lyB" = (
-/turf/open/floor/plating/elevatorshaft,
-/area/station/cargo/drone_bay)
-"lyK" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 6
- },
-/obj/effect/spawner/random/maintenance,
-/obj/structure/grille/broken,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"lyP" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"lyS" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/item/stack/rods{
- amount = 3
- },
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"lzb" = (
-/obj/effect/turf_decal/siding/wideplating,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/chem_dispenser,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"lzd" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"lzf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"lzp" = (
-/obj/structure/sign/poster/official/wtf_is_co2/directional/west,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"lzq" = (
-/obj/structure/railing{
- dir = 6
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"lzA" = (
-/obj/structure/chair/sofa/corp/right,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"lzI" = (
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"lzX" = (
-/obj/effect/turf_decal/trimline/red/line,
-/obj/effect/turf_decal/trimline/white/warning,
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output,
-/turf/open/floor/engine/n2o,
-/area/station/engineering/atmos)
-"lzZ" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"lAc" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/textured_corner{
- dir = 8
- },
-/area/station/cargo/sorting)
-"lAh" = (
-/turf/open/openspace,
-/area/station/service/kitchen/abandoned)
-"lAm" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/office)
-"lAD" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 10
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"lAH" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/item/stack/rods{
- amount = 3
- },
-/obj/effect/decal/cleanable/glass,
-/obj/item/storage/bag/plants/portaseeder,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"lAJ" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"lAU" = (
-/turf/closed/wall,
-/area/station/service/library/printer)
-"lBo" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"lBv" = (
-/obj/effect/spawner/random/structure/table,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"lBB" = (
-/obj/structure/rack,
-/obj/item/reagent_containers/cup/bottle/phosphorus{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/potassium{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/sodium{
- pixel_x = 1
- },
-/turf/open/floor/iron/dark/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"lBD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"lBG" = (
-/obj/machinery/computer/station_alert{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/machinery/status_display/evac/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"lBK" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"lBP" = (
-/obj/machinery/door/airlock{
- name = "Unisex Restrooms"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/toilet)
-"lBR" = (
-/obj/machinery/shower/directional/east,
-/obj/item/bikehorn/rubberducky,
-/obj/structure/fluff/shower_drain,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"lCf" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor3/fore)
-"lCg" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"lCh" = (
-/obj/machinery/vending/cigarette,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"lCo" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/entry)
-"lCs" = (
-/turf/open/floor/carpet/red,
-/area/station/maintenance/floor3/port/aft)
-"lCz" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/left/directional/north{
- name = "Research Desk";
- req_access = list("science")
- },
-/obj/item/experi_scanner,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"lCG" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"lCO" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"lCR" = (
-/obj/effect/spawner/structure/window/reinforced/tinted,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"lCT" = (
-/obj/machinery/light/red/dim/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"lCZ" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/sorting)
-"lDb" = (
-/obj/item/stack/cable_coil,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"lDi" = (
-/obj/machinery/microwave{
- pixel_x = -1;
- pixel_y = 6
- },
-/obj/structure/table,
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment2)
-"lDj" = (
-/obj/machinery/door/poddoor/shutters{
- id = "survshop";
- name = "Ancient Workshop"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"lDo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/machinery/light/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/office)
-"lDs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"lDA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"lDD" = (
-/obj/structure/rack,
-/obj/item/chair/plastic,
-/obj/item/chair/plastic{
- pixel_y = 4
- },
-/obj/item/chair/plastic{
- pixel_y = 8
- },
-/obj/item/chair/plastic{
- pixel_y = 12
- },
-/obj/effect/turf_decal/trimline/green/warning,
-/turf/open/floor/pod,
-/area/station/maintenance/floor3/starboard)
-"lDE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"lDF" = (
-/obj/effect/turf_decal/stripes/white/line,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/construction)
-"lDG" = (
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"lDH" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"lDW" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/machinery/airalarm/directional/north,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"lDX" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"lDY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"lEg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/flip,
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"lEo" = (
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"lEs" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"lEu" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"lEy" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 1
- },
-/obj/machinery/shower/directional/north,
-/obj/effect/decal/cleanable/vomit/old,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"lEz" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/button/door/directional/south{
- id = "dorms_2_bolts";
- name = "Dorms 2 Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"lEI" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"lET" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/air_sensor/engine_chamber,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"lFa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"lFe" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"lFg" = (
-/obj/structure/grille/broken,
-/turf/open/openspace,
-/area/station/security/brig)
-"lFj" = (
-/obj/machinery/teleport/hub,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"lFq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"lFw" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"lFz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/kitchen/diner)
-"lFJ" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"lFL" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"lFW" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"lFY" = (
-/obj/structure/chair/sofa/left/brown{
- dir = 4
- },
-/obj/effect/landmark/start/cook,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"lGb" = (
-/obj/structure/toilet{
- dir = 8
- },
-/obj/machinery/light/directional/east,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/freezer,
-/area/station/service/chapel)
-"lGh" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"lGi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"lGo" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"lGp" = (
-/obj/machinery/computer/crew{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"lGw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"lGJ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"lGK" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"lGX" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"lHv" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"lHw" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/textured_corner{
- dir = 1
- },
-/area/station/medical/chemistry)
-"lHQ" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"lHR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"lIe" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"lIh" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/keycard_auth/wall_mounted/directional/east{
- pixel_x = 25;
- pixel_y = 16
- },
-/obj/machinery/camera/directional/east{
- c_tag = "Command - Research Director's Office"
- },
-/obj/machinery/requests_console/directional/east{
- department = "Research Director's Desk";
- name = "Research Director's Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"lIm" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/white/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/secondary/entry)
-"lIn" = (
-/obj/structure/table/wood,
-/obj/machinery/computer/libraryconsole/bookmanagement{
- dir = 8
- },
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"lIt" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/theatre,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"lIC" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"lIJ" = (
-/obj/structure/table/reinforced,
-/obj/item/flashlight/lamp{
- pixel_x = -7;
- pixel_y = 5
- },
-/obj/item/book/manual/wiki/robotics_cyborgs{
- pixel_x = 6;
- pixel_y = -3
- },
-/obj/machinery/requests_console/directional/west{
- department = "Robotics";
- name = "Robotics Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/ore_update,
-/obj/effect/mapping_helpers/requests_console/supplies,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"lIL" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"lIP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"lIS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"lIU" = (
-/obj/machinery/seed_extractor,
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
-/turf/open/floor/iron/white/side{
- dir = 10
- },
-/area/station/cargo/miningdock)
-"lJk" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"lJn" = (
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit)
-"lJp" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"lJq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/side,
-/area/station/cargo/miningdock)
-"lJu" = (
-/mob/living/carbon/human/species/monkey{
- name = "Kong"
- },
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"lJy" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 5
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"lJB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/service/chapel)
-"lJE" = (
-/obj/item/trash/semki/healthy,
-/obj/item/trash/spacers_sidekick{
- pixel_x = -2
- },
-/obj/item/trash/syndi_cakes,
-/obj/effect/decal/cleanable/ants,
-/obj/effect/decal/cleanable/garbage,
-/obj/effect/decal/cleanable/food/flour,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"lJN" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/turf_decal/box,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"lJZ" = (
-/obj/structure/cable/multilayer/multiz,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"lKb" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "Fuel Pipe to Filter"
- },
-/obj/machinery/atmospherics/components/binary/pump/off/general/visible/layer4{
- dir = 8;
- name = "Fuel To Distro"
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"lKh" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"lKj" = (
-/obj/structure/closet/crate/solarpanel_small,
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/plating/airless,
-/area/station/maintenance/solars/starboard/aft)
-"lKn" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"lKo" = (
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{
- dir = 4
- },
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/service/kitchen/abandoned)
-"lKp" = (
-/obj/machinery/atmospherics/components/trinary/mixer,
-/obj/effect/turf_decal/box,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"lKw" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"lKy" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"lKz" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor1/fore)
-"lKD" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/security_all,
-/obj/effect/turf_decal/tile/red/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"lKE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"lKF" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"lKQ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"lLm" = (
-/obj/effect/turf_decal/caution/stand_clear/white{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"lLp" = (
-/obj/machinery/camera/motion/directional/north{
- c_tag = "Minisat - Port"
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"lLt" = (
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"lLy" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"lLB" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"lLC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/landmark/start/chemist,
-/obj/structure/chair/office{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"lLL" = (
-/obj/effect/turf_decal/siding/white/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/table/glass,
-/obj/machinery/fax{
- fax_name = "Research Director's Office";
- name = "Research Director's Fax Machine"
- },
-/turf/open/floor/iron/large,
-/area/station/command/heads_quarters/rd)
-"lLO" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"lLW" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"lMj" = (
-/obj/effect/turf_decal/trimline/white/arrow_ccw,
-/obj/machinery/camera/autoname/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"lMx" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"lMC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"lMG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"lMN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"lMR" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"lNh" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"lNj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"lNm" = (
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"lNs" = (
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/openspace,
-/area/station/maintenance/floor3/port/fore)
-"lNx" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
- dir = 4
- },
-/obj/machinery/airalarm/directional/north,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/obj/effect/mapping_helpers/airalarm/link{
- chamber_id = "ordnancefreezer"
- },
-/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"lNA" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/five,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"lNB" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/aft)
-"lNN" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/item/paper_bin,
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"lNQ" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"lNW" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/cargo/bitrunning/den)
-"lNX" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/chair/sofa/bench{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"lOc" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/fore)
-"lOe" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/computer/crew{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"lOg" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/courtroom)
-"lOh" = (
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"lOk" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/side,
-/area/station/command/teleporter)
-"lOp" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"lOq" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/vending/clothing,
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"lOz" = (
-/obj/structure/closet/secure_closet/personal/patient,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"lOA" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 1
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"lOB" = (
-/obj/structure/table,
-/obj/item/restraints/handcuffs{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/restraints/handcuffs{
- pixel_x = 4;
- pixel_y = -3
- },
-/obj/item/restraints/handcuffs,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"lOI" = (
-/obj/machinery/airalarm/directional/west,
-/obj/structure/noticeboard/ce{
- pixel_y = 32
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"lPb" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"lPf" = (
-/obj/structure/closet/bombcloset/security,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"lPj" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"lPl" = (
-/obj/structure/reagent_dispensers/plumbed/fuel,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"lPm" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 5
- },
-/obj/machinery/duct,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"lPt" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison)
-"lPz" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-9";
- location = "2-8"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"lPA" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"lPR" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"lPX" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/frame/machine,
-/obj/item/stack/cable_coil/five,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/supermatter/room)
-"lQa" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner,
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"lQb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"lQc" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"lQd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/hobo_squat,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"lQm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"lQo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"lQs" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot,
-/obj/structure/closet/crate/cardboard,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/spawner/random/engineering/material_rare,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"lQt" = (
-/obj/structure/railing{
- dir = 5
- },
-/obj/structure/chair/comfy/brown,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"lQv" = (
-/obj/effect/landmark/navigate_destination/engineering,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"lQI" = (
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/fore)
-"lQJ" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"lQM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Port Quarter Solars"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/construction,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"lQW" = (
-/obj/effect/turf_decal/siding/wideplating_new,
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"lQY" = (
-/obj/machinery/button/elevator/directional/west{
- id = "fore_vator"
- },
-/obj/effect/turf_decal/trimline/purple/warning,
-/obj/machinery/lift_indicator/directional/west{
- linked_elevator_id = "fore_vator";
- pixel_y = -4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"lRb" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"lRc" = (
-/obj/item/reagent_containers/dropper,
-/obj/structure/closet/crate/preopen,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"lRi" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Experimentation Bay"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/turf/open/floor/engine,
-/area/station/science/explab)
-"lRl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing,
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"lRu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"lRF" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"lRP" = (
-/obj/machinery/door/airlock/highsecurity{
- name = "Electrical Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/turf/open/floor/iron,
-/area/station/engineering/engine_smes)
-"lRR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/plaque/static_plaque/golden/captain{
- pixel_x = 32
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"lRW" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/aft)
-"lRY" = (
-/turf/closed/wall,
-/area/station/commons/vacant_room/office)
-"lSd" = (
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"lSt" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grime,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = 32
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"lSw" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"lSE" = (
-/obj/item/radio/intercom/directional/north{
- broadcasting = 1;
- frequency = 1447;
- listening = 0;
- name = "Private Channel"
- },
-/obj/effect/decal/cleanable/plastic,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"lSI" = (
-/obj/machinery/computer/upload/borg,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/door/window/left/directional/south{
- name = "Cyborg Upload Console Window";
- req_access = list("ai_upload")
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"lSJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"lSY" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 5
- },
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"lTb" = (
-/obj/machinery/door/airlock/external{
- name = "Atmospherics External Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "HFR"
- },
-/turf/open/floor/plating,
-/area/station/engineering/atmos/hfr_room)
-"lTg" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"lTl" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 6
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"lTo" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/paper_bin/construction{
- pixel_x = 6;
- pixel_y = 7
- },
-/obj/item/pen,
-/obj/item/stamp/head/ce{
- pixel_x = -8
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/command/heads_quarters/ce)
-"lTu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/holopad/secure,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"lTA" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"lTN" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"lTO" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "cmoshutter";
- name = "CMO Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/cmo)
-"lTV" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/mineral/ore_redemption,
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"lTY" = (
-/obj/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"lTZ" = (
-/obj/structure/chair/stool/bar/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/decal/cleanable/blood/footprints,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"lUd" = (
-/obj/structure/disposalpipe/trunk/multiz,
-/turf/open/openspace,
-/area/station/maintenance/floor2/port)
-"lUo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"lUu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"lUv" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/table/wood,
-/obj/item/storage/crayons{
- pixel_x = 6;
- pixel_y = -3
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"lUH" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"lUO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/science/glass{
- name = "Slime Enrichment Center"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/xenobio,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"lUS" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Emergency Power"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/fore)
-"lUY" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"lUZ" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"lVf" = (
-/obj/structure/disposalpipe/junction/flip,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"lVi" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/spawner/random/structure/grille,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 8
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"lVk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"lVq" = (
-/obj/effect/spawner/random/trash/graffiti,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"lVE" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"lVR" = (
-/obj/structure/chair/sofa/right{
- dir = 8
- },
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"lVU" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark/corner{
- dir = 8
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"lVV" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"lVW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"lWa" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 5
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"lWA" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"lWH" = (
-/turf/closed/wall,
-/area/station/command/heads_quarters/qm)
-"lWN" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/box/monkeycubes{
- pixel_x = -5;
- pixel_y = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"lWQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"lWY" = (
-/obj/machinery/light/small/directional/south,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/structure/disposaloutlet{
- dir = 1;
- name = "Prisoner Dispenser"
- },
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/flasher/directional/west{
- id = "drunktank"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"lXb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/gym/mirrored{
- pixel_y = 32
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"lXj" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"lXm" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"lXn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"lXq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"lXs" = (
-/obj/effect/turf_decal/trimline/brown/warning,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"lXu" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Gravity Generator Room"
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/engineering/gravity_generator)
-"lXx" = (
-/turf/closed/wall,
-/area/station/security/lockers)
-"lXK" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/item/radio/intercom/directional/west,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"lXL" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/bar/half,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/service/bar/atrium)
-"lXT" = (
-/obj/structure/railing,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/bronze,
-/area/station/maintenance/floor1/starboard)
-"lXU" = (
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/structure/chair/wood{
- dir = 8
- },
-/obj/structure/sign/poster/contraband/random/directional/east,
-/obj/effect/landmark/start/bartender,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"lXW" = (
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/bar,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"lXX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"lYb" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 4
- },
-/obj/effect/spawner/random/engineering/tank,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"lYd" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"lYe" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen,
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"lYg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"lYr" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"lYt" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"lYu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"lYx" = (
-/turf/closed/wall/r_wall,
-/area/station/science/ordnance/freezerchamber)
-"lYD" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"lYE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"lYL" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"lYP" = (
-/obj/machinery/holopad/secure,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"lYR" = (
-/turf/open/misc/grass,
-/area/station/maintenance/floor1/starboard)
-"lYU" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/dna_infuser,
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"lYV" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/turf_decal/delivery,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/storage/primary)
-"lYX" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/blue,
-/area/station/maintenance/floor3/port/aft)
-"lYY" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/command/teleporter)
-"lZa" = (
-/obj/structure/rack,
-/obj/item/clothing/suit/armor/vest/old,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"lZl" = (
-/obj/structure/reagent_dispensers/plumbed,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"lZp" = (
-/obj/machinery/door/airlock/vault{
- name = "Power Generation Experimentation"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"lZA" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/experi_scanner,
-/obj/item/experi_scanner,
-/obj/item/experi_scanner,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"lZH" = (
-/obj/effect/turf_decal/trimline/neutral/filled/end,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"lZS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"maf" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"map" = (
-/obj/structure/door_assembly/door_assembly_med,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"maq" = (
-/obj/machinery/light_switch/directional/east,
-/obj/effect/turf_decal/delivery,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"mar" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/preopen{
- id = "qmblast";
- name = "Quartermaster's Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/qm)
-"mau" = (
-/turf/closed/wall/r_wall,
-/area/station/security/lockers)
-"maD" = (
-/obj/structure/bodycontainer/morgue{
- dir = 8
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"maK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"maL" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"maQ" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"maS" = (
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/machinery/door/window/right/directional/south{
- name = "Bunny Containment";
- req_access = list("hydroponics")
- },
-/turf/open/misc/beach/sand,
-/area/station/hallway/secondary/entry)
-"maW" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/genetics)
-"mbb" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/suit_storage_unit/medical,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"mbe" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"mbf" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"mbi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"mbk" = (
-/obj/machinery/space_heater,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"mbv" = (
-/obj/machinery/vending/coffee,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/white,
-/area/station/medical/break_room)
-"mbA" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/airalarm/directional/east,
-/obj/structure/closet/bombcloset,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"mbB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"mbD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"mbF" = (
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/machinery/newscaster/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"mbJ" = (
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"mbM" = (
-/obj/machinery/fax{
- fax_name = "Service Hallway";
- name = "Service Fax Machine"
- },
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/secondary/service)
-"mbS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2,
-/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle,
-/obj/structure/girder/reinforced,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"mbT" = (
-/obj/structure/sign/warning/vacuum/external,
-/turf/closed/wall,
-/area/station/maintenance/floor1/starboard)
-"mcf" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"mci" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"mcj" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"mcm" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = -32
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"mcp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/maintenance/floor2/starboard/aft)
-"mcq" = (
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"mcr" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"mcu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/oil,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"mcA" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"mcB" = (
-/obj/effect/turf_decal/trimline/green/filled/warning{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"mcD" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"mcI" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"mcO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/garbage,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"mcU" = (
-/obj/structure/closet/athletic_mixed,
-/obj/effect/landmark/start/hangover/closet,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/fitness)
-"mcV" = (
-/obj/structure/bed,
-/obj/item/toy/plush/slimeplushie{
- pixel_x = 5;
- pixel_y = 10
- },
-/obj/item/bedsheet/green,
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"mcY" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"mdd" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/shieldgen,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/corner,
-/area/station/cargo/miningdock)
-"mdi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/fore)
-"mdl" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"mdp" = (
-/turf/closed/wall,
-/area/station/engineering/storage/tech)
-"mdr" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"mdB" = (
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"mdC" = (
-/turf/open/misc/snow/actually_safe{
- icon_state = "snow7"
- },
-/area/station/hallway/floor2/fore)
-"mdE" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"mdJ" = (
-/obj/item/radio/intercom/directional/north,
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/structure/chair/sofa/bench/right,
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"mdL" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"mdN" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"mdQ" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"mdR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"mdU" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/item/flashlight/lamp/green,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"mdZ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"med" = (
-/obj/structure/bed/dogbed/renault,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/firealarm/directional/west,
-/obj/structure/cable,
-/mob/living/basic/pet/fox/renault,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"meh" = (
-/obj/structure/transport/linear/public,
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/aft)
-"mek" = (
-/turf/closed/wall,
-/area/station/security/prison/shower)
-"mel" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/suit/hazardvest,
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"mem" = (
-/obj/machinery/shower/directional/east,
-/turf/open/floor/noslip,
-/area/station/science/lobby)
-"mew" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"mex" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"meB" = (
-/obj/item/wrench{
- pixel_x = -10;
- pixel_y = 7
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"meD" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"meH" = (
-/obj/machinery/door/airlock/medical{
- name = "CMO Quarters"
- },
-/obj/effect/mapping_helpers/airlock/access/all/medical/cmo,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"meU" = (
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"meV" = (
-/obj/machinery/door/airlock/security{
- name = "Evidence Lockers"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"mfk" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"mfC" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/engine_smes)
-"mfE" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/structure/table/reinforced,
-/obj/item/storage/bag/tray,
-/obj/item/reagent_containers/cup/rag,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"mfI" = (
-/obj/structure/table/reinforced,
-/obj/item/seeds/cannabis,
-/obj/item/seeds/cannabis,
-/obj/item/seeds/cannabis,
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/spawner/random/contraband/cannabis,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"mfM" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/item/pai_card,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"mfQ" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/machinery/door/window/left/directional/south{
- name = "Storage"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"mfR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/button/door/directional/east{
- id = "qmblast";
- name = "Office Blast Doors";
- req_access = list("qm")
- },
-/turf/open/floor/iron/textured,
-/area/station/command/heads_quarters/qm)
-"mfU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"mge" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"mgf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"mgl" = (
-/obj/structure/sign/directions/evac/directional/west,
-/obj/structure/sign/directions/supply/directional/west{
- pixel_y = 8
- },
-/obj/structure/sign/directions/arrival/directional/west{
- pixel_y = -8
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"mgo" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"mgq" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"mgA" = (
-/obj/structure/sign/warning/radiation/rad_area,
-/turf/closed/wall,
-/area/station/maintenance/floor1/port/aft)
-"mgG" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/trash/cigbutt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"mgM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms,
-/obj/machinery/door/airlock/engineering{
- name = "Telecommunications"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/tcommsat/computer)
-"mgS" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"mgY" = (
-/obj/structure/flora/bush/flowers_yw/style_random,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/light/directional/south,
-/turf/open/floor/grass,
-/area/station/hallway/floor1/aft)
-"mha" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/security/checkpoint/escape)
-"mhb" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"mhh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"mhl" = (
-/obj/structure/table,
-/obj/structure/cable,
-/obj/item/hand_labeler,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"mho" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"mhp" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"mhq" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/paper_bin{
- pixel_y = 3
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"mhr" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"mhu" = (
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"mhE" = (
-/obj/structure/chair/wood{
- dir = 8
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"mhO" = (
-/obj/structure/closet/secure_closet/freezer/empty,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"mhQ" = (
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/commons/fitness/recreation)
-"mhT" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"mhY" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"mhZ" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"mie" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"mif" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"mil" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/item/wrench,
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"mir" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/sorting)
-"mis" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"mit" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"miF" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"miH" = (
-/obj/machinery/holopad,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"miV" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/plating,
-/area/station/security/eva)
-"mjg" = (
-/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"mjr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/item/stack/rods,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"mjv" = (
-/obj/machinery/door/airlock/engineering{
- name = "Telecomms Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/engineering/atmos/pumproom)
-"mjA" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"mjM" = (
-/obj/machinery/modular_computer/preset/id{
- dir = 1
- },
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"mjQ" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/caution,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"mjZ" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/aft)
-"mki" = (
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/circuit/green,
-/area/station/science/robotics/mechbay)
-"mkk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"mkl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"mko" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 4
- },
-/obj/machinery/computer/security/telescreen/ordnance/directional/north,
-/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver,
-/obj/structure/table,
-/obj/item/binoculars{
- pixel_x = 6;
- pixel_y = 6
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"mkE" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/item/wrench,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"mkL" = (
-/obj/structure/sign/warning/vacuum/external{
- pixel_y = -32
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat)
-"mkO" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"mkZ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"mlg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"mlh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"mlx" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/toolbox/electrical{
- pixel_y = 9
- },
-/obj/item/stack/cable_coil,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"mly" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/secondary/exit)
-"mlH" = (
-/obj/structure/sign/departments/court{
- pixel_y = 32
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"mlL" = (
-/obj/structure/table,
-/obj/item/wrench,
-/obj/item/pen{
- pixel_y = 8
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"mlN" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/armory,
-/obj/machinery/door/airlock/security/glass{
- name = "Brig Control"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"mlO" = (
-/obj/structure/lattice/catwalk,
-/turf/open/space/openspace,
-/area/station/solars/starboard/aft)
-"mlX" = (
-/obj/structure/chair/comfy/brown,
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"mme" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 4
- },
-/area/station/commons/fitness/recreation)
-"mmi" = (
-/obj/structure/sign/poster/contraband/clown,
-/turf/closed/wall,
-/area/station/service/theater)
-"mms" = (
-/obj/machinery/space_heater/improvised_chem_heater,
-/obj/effect/turf_decal/tile/blue/half,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white/smooth_edge,
-/area/station/medical/abandoned)
-"mmv" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Mining & Aux Base"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit)
-"mmy" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"mmz" = (
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"mmA" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"mmI" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"mmL" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"mmR" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"mmY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"mnf" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"mni" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"mnj" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"mnk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"mnm" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"mnE" = (
-/obj/structure/table/wood,
-/obj/item/folder/red,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"mnH" = (
-/obj/effect/turf_decal/loading_area/white{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"mnM" = (
-/obj/machinery/door_buttons/access_button{
- idDoor = "virology_airlock_interior";
- idSelf = "virology_airlock_control";
- name = "Virology Access Button";
- pixel_x = -26;
- pixel_y = 26;
- req_access = list("virology")
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/white/filled/corner{
- dir = 8
- },
-/obj/structure/sign/warning/biohazard{
- pixel_y = 32
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"mnQ" = (
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor1/fore)
-"mnR" = (
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"mnY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"moe" = (
-/obj/structure/table,
-/obj/item/pestle,
-/obj/item/food/grown/coffee,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"mom" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"moq" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/station/maintenance/floor4/starboard/aft)
-"mor" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/secondary/entry)
-"mou" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/siding/white{
- dir = 6
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"moB" = (
-/obj/structure/mirror/directional/north,
-/obj/structure/closet{
- name = "Outside Clothing Closet"
- },
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"moL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"moO" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"mpe" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"mph" = (
-/obj/structure/closet/secure_closet/injection,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"mpp" = (
-/obj/structure/stairs/south,
-/turf/open/floor/wood/parquet,
-/area/station/service/library)
-"mps" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
-/obj/machinery/door/airlock/mining/glass{
- name = "Bitrunning Den"
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/bitrunning/den)
-"mpy" = (
-/obj/machinery/newscaster/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"mpC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/locker)
-"mpF" = (
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"mpK" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"mpL" = (
-/obj/structure/table/wood,
-/obj/item/folder/blue,
-/obj/effect/turf_decal/trimline/blue/end,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"mpM" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/mechanical{
- pixel_y = 7
- },
-/obj/item/multitool,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/item/storage/box/smart_metal_foam,
-/obj/item/storage/belt/utility,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"mpY" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/garden)
-"mpZ" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"mqc" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/girder/reinforced,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "viro-inner";
- name = "Virology Inner Shutters"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"mqd" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"mqi" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"mqj" = (
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"mqt" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"mqw" = (
-/obj/structure/table/wood,
-/obj/item/storage/briefcase/secure,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"mqx" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"mqy" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"mqB" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"mqG" = (
-/obj/machinery/porta_turret/ai,
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"mqI" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos)
-"mqL" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/curtain/cloth/fancy,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"mqM" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/newscaster/directional/north,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"mra" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -4;
- pixel_y = 4
- },
-/obj/item/storage/toolbox/electrical,
-/obj/item/multitool,
-/obj/item/screwdriver{
- pixel_y = 5
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"mrd" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"mrh" = (
-/obj/structure/chair,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"mrs" = (
-/obj/structure/grille,
-/obj/item/shard,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"mrB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/small/red/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"mrE" = (
-/obj/machinery/door/airlock/grunge{
- name = "Prison Forestry"
- },
-/turf/open/floor/iron,
-/area/station/security/prison/garden)
-"mrG" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/break_room)
-"mrL" = (
-/obj/structure/transit_tube/diagonal,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"mrM" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"mrS" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"mrU" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"mrW" = (
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"mrZ" = (
-/obj/machinery/door/airlock/command{
- name = "Head of Personnel's Office"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/hop,
-/obj/machinery/door/poddoor/preopen{
- id = "hopblast";
- name = "HoP Blast Door"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"msg" = (
-/obj/effect/turf_decal/trimline/white/line,
-/obj/machinery/air_sensor/air_tank,
-/turf/open/floor/engine/air,
-/area/station/engineering/atmos)
-"msj" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"msl" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"mso" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"msu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"msv" = (
-/obj/structure/railing,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"msL" = (
-/obj/effect/decal/cleanable/blood/drip,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"mta" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"mte" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/white{
- dir = 9
- },
-/obj/item/flashlight/lantern{
- pixel_y = 7
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"mtx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall,
-/area/station/hallway/floor3/aft)
-"mty" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"mtA" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"mtH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port)
-"mtI" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/medical/medbay/lobby)
-"mtL" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"mtM" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"mtV" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical/glass{
- name = "Aft Medbay"
- },
-/obj/machinery/duct,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"mtW" = (
-/obj/structure/reagent_dispensers/water_cooler,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"mub" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_yw/style_random,
-/mob/living/basic/butterfly,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"muh" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "atmoshfr"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"mus" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"muB" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"muI" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"muP" = (
-/obj/structure/closet/firecloset,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"muX" = (
-/obj/machinery/camera/directional/north,
-/obj/structure/closet/secure_closet/security,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/requests_console/directional/north{
- department = "Security";
- name = "Security Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"mve" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"mvg" = (
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister,
-/obj/machinery/camera{
- c_tag = "Supermatter Foyer Cam #4";
- network = list("ss13","engine")
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"mvs" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 8
- },
-/obj/effect/decal/cleanable/blood/splatter,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"mvw" = (
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/floor4/fore)
-"mvK" = (
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"mvM" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"mvN" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/four,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"mvO" = (
-/obj/machinery/computer/crew{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"mvS" = (
-/obj/structure/closet/l3closet/virology,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"mwe" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"mwg" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"mwz" = (
-/obj/structure/table,
-/obj/item/disk/data{
- pixel_x = 5
- },
-/obj/item/disk/data{
- pixel_x = -6
- },
-/obj/item/disk/data{
- pixel_y = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/genetics)
-"mwB" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/duct,
-/obj/machinery/camera/directional/south{
- c_tag = "Cytology - Petting Zoo"
- },
-/turf/open/misc/sandy_dirt,
-/area/station/science/cytology)
-"mwD" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/structure/sign/warning/pods/directional/west{
- name = "Escape Pods: Access Via Maint"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"mwK" = (
-/obj/effect/landmark/start/hangover,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"mwL" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"mwN" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 10
- },
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"mwO" = (
-/obj/structure/table/wood,
-/obj/item/toy/crayon/spraycan,
-/obj/item/toy/crayon/spraycan,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"mwZ" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"mxd" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"mxf" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/execution/transfer)
-"mxi" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"mxx" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/secondary/exit)
-"mxC" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"mxD" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos)
-"mxJ" = (
-/obj/effect/turf_decal/siding/white/corner{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"mxN" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/closet/secure_closet/medical3,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"mxO" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"mxP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"mxT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"myd" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "mining"
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"myp" = (
-/obj/effect/turf_decal/tile/red/anticorner,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"myr" = (
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/entry)
-"myO" = (
-/turf/closed/wall,
-/area/station/hallway/secondary/exit/escape_pod)
-"myQ" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"myR" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/closet/radiation,
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #8";
- dir = 4;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"myS" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/start/scientist,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"myT" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"myV" = (
-/obj/machinery/disposal/bin,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 6
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"myW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"mzb" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/delivery,
-/obj/structure/disposalpipe/segment{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"mzf" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/engine/n2,
-/area/station/engineering/atmos)
-"mzg" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"mzh" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/machinery/button/door/directional/west{
- id = "med_lockdown";
- name = "Surgery Privacy Shutters";
- req_access = list("medical")
- },
-/obj/machinery/light_switch/directional/west{
- pixel_x = -24;
- pixel_y = -10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"mzk" = (
-/obj/structure/sign/warning/no_smoking/directional/east,
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/storage)
-"mzr" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"mzv" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/trimline/white/filled/line{
- color = "#065C93";
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/bridge)
-"mzx" = (
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/west,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/disposal/bin{
- name = "Book Returns"
- },
-/turf/open/floor/iron,
-/area/station/service/library)
-"mzA" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"mzB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 4
- },
-/area/station/commons/fitness/recreation)
-"mzC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"mzI" = (
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"mzW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"mAk" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"mAr" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"mAD" = (
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"mAI" = (
-/obj/effect/turf_decal/siding/white{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/research_director,
-/obj/structure/chair/stool/bar/directional/west,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/large,
-/area/station/command/heads_quarters/rd)
-"mAJ" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/chair/comfy/brown,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"mAZ" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"mBg" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/office)
-"mBm" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"mBt" = (
-/obj/structure/rack,
-/obj/item/paper/pamphlet/gateway,
-/obj/item/paper/pamphlet/gateway{
- pixel_x = 4;
- pixel_y = 3
- },
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"mBF" = (
-/obj/structure/sign/poster/random/directional/east,
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"mBM" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/ai_monitored/command/storage/eva)
-"mBP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"mBZ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/lobby)
-"mCo" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"mCp" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured,
-/area/station/cargo/storage)
-"mCr" = (
-/obj/machinery/door/airlock/freezer{
- name = "Cold Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"mCt" = (
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
-"mCD" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"mCI" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"mCJ" = (
-/obj/effect/turf_decal/trimline/blue/arrow_ccw,
-/obj/effect/turf_decal/trimline/blue/arrow_cw{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"mCQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Lower Library"
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"mCU" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"mDe" = (
-/obj/structure/lattice,
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard/fore)
-"mDl" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"mDm" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"mDn" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"mDp" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"mDq" = (
-/obj/effect/turf_decal/trimline/green/filled/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"mDr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/weather/dirt{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/garden)
-"mDs" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/hydroponics/constructable,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"mDD" = (
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/burnchamber)
-"mDI" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"mDL" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/landmark/start/security_officer,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"mDV" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"mDZ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"mEa" = (
-/obj/structure/railing,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"mEf" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/engineering/atmos/project)
-"mEg" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Library"
- },
-/turf/open/floor/iron,
-/area/station/service/library)
-"mEh" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"mEj" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/chair/comfy/brown,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/grimy,
-/area/station/science/xenobiology/hallway)
-"mEA" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"mEK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"mEN" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"mEP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/orange,
-/area/station/command/heads_quarters/qm)
-"mEQ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{
- dir = 10
- },
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal/incinerator)
-"mEY" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/airlock/command/glass{
- name = "Bridge"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/command/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"mFf" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor3/fore)
-"mFp" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"mFv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/botanical_waste,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"mFz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/airlock/public/glass{
- name = "Medbay"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/medbay/lobby)
-"mFB" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/mob/living/basic/chicken,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"mFD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Holodeck"
- },
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"mFE" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"mFF" = (
-/obj/structure/bed,
-/obj/item/bedsheet/red,
-/obj/item/toy/plush/slimeplushie{
- pixel_x = 5;
- pixel_y = 10
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/apartment1)
-"mFJ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor4/aft)
-"mFP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit)
-"mFQ" = (
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"mFV" = (
-/obj/structure/bodycontainer/morgue,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"mGd" = (
-/obj/structure/chair,
-/obj/machinery/camera/directional/north{
- name = "Science - Public Hall"
- },
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"mGp" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"mGq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"mGt" = (
-/obj/structure/chair/sofa/bench/right,
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"mGy" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/mining,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"mGK" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"mGN" = (
-/obj/structure/chair/sofa/corp/left{
- dir = 1
- },
-/turf/open/floor/carpet/purple,
-/area/station/maintenance/floor1/port/aft)
-"mGP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/commons/fitness/recreation)
-"mGT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"mGY" = (
-/obj/machinery/newscaster/directional/north,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"mHa" = (
-/turf/closed/wall,
-/area/station/commons/fitness/recreation/entertainment)
-"mHf" = (
-/obj/structure/table/reinforced,
-/obj/machinery/ecto_sniffer{
- pixel_x = -5;
- pixel_y = -7
- },
-/obj/item/assembly/flash/handheld{
- pixel_x = 10;
- pixel_y = 10
- },
-/obj/item/assembly/flash/handheld{
- pixel_x = 7;
- pixel_y = 6
- },
-/obj/item/assembly/flash/handheld{
- pixel_x = 10;
- pixel_y = 3
- },
-/obj/item/assembly/flash/handheld{
- pixel_x = 7
- },
-/obj/item/assembly/flash/handheld{
- pixel_x = 10;
- pixel_y = -5
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"mHh" = (
-/obj/machinery/portable_atmospherics/canister/anesthetic_mix,
-/obj/machinery/door/window/brigdoor/left/directional/east{
- name = "Anesthetic Storage";
- req_access = list("medical")
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/storage)
-"mHk" = (
-/obj/machinery/power/emitter,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"mHl" = (
-/obj/machinery/light_switch/directional/west,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"mHu" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"mHx" = (
-/obj/structure/flora/bush/sunny/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"mHQ" = (
-/obj/effect/turf_decal/tile/red/anticorner/contrasted,
-/obj/machinery/computer/shuttle/labor{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"mHS" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"mHV" = (
-/obj/structure/closet/secure_closet/security/sec,
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"mIh" = (
-/obj/structure/closet/toolcloset,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"mIi" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"mIq" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"mID" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"mII" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"mIK" = (
-/obj/machinery/chem_dispenser,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"mIO" = (
-/obj/structure/ladder,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/aft)
-"mIQ" = (
-/obj/machinery/computer{
- desc = "Might have worked twenty years ago.";
- dir = 8;
- name = "Bluescreened Weapons System"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/mineral/plastitanium/red,
-/area/station/maintenance/floor4/starboard/aft)
-"mIT" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"mIX" = (
-/obj/machinery/ai_slipper{
- uses = 10
- },
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"mJc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/aft)
-"mJg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"mJr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"mJt" = (
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"mJy" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/table/wood,
-/obj/item/pai_card,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"mJH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"mJJ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"mKf" = (
-/obj/item/radio/intercom/directional/west,
-/obj/structure/chair/sofa/corner/maroon{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"mKg" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/camera/directional/west,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"mKm" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"mKs" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "hopblast";
- name = "HoP Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/hop)
-"mKu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"mKO" = (
-/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{
- name = "Burn Chamber Interior Airlock"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/machinery/airlock_controller/incinerator_ordmix{
- pixel_x = 24
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/ordnance,
-/turf/open/floor/engine,
-/area/station/science/ordnance/burnchamber)
-"mKT" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"mKY" = (
-/obj/effect/spawner/structure/electrified_grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"mKZ" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/rack,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"mLb" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"mLk" = (
-/obj/machinery/door/firedoor,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"mLm" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/chair/sofa/bench{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"mLp" = (
-/obj/machinery/door/firedoor,
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/hallway/secondary/exit/escape_pod)
-"mLH" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"mLI" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"mLO" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/structure/sign/painting/library{
- pixel_y = 32
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"mLS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/random/maintenance,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"mLY" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"mLZ" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"mMd" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/office)
-"mMi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"mMk" = (
-/obj/machinery/door/airlock/command{
- name = "Abandoned Hangar"
- },
-/obj/effect/mapping_helpers/airlock/access/all/command/gateway,
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"mMm" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/trimline/dark_blue/line,
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 1
- },
-/obj/item/storage/box/lights/mixed,
-/obj/item/electronics/airlock,
-/obj/item/electronics/apc,
-/obj/item/electronics/firealarm,
-/obj/item/electronics/airalarm,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"mMn" = (
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"mMo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"mMq" = (
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"mMr" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"mMt" = (
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"mMu" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"mMw" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/yellow/fourcorners,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"mMA" = (
-/obj/item/shard/plasma,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"mMD" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"mMH" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"mMO" = (
-/obj/effect/landmark/blobstart,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"mMS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/red/end{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"mNb" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/caution/white{
- dir = 4;
- pixel_x = -10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"mNg" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"mNh" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/tcommsat/server)
-"mNi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"mNr" = (
-/obj/structure/ladder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"mNI" = (
-/obj/machinery/vending/snack/orange,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"mNT" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"mNW" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"mNY" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"mOb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"mOe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"mOh" = (
-/obj/structure/reagent_dispensers/watertank/high,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"mOj" = (
-/obj/structure/railing{
- dir = 5
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"mOt" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"mOx" = (
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"mOH" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/item/storage/medkit{
- pixel_x = -4;
- pixel_y = 8
- },
-/obj/item/storage/medkit{
- pixel_x = -4;
- pixel_y = 4
- },
-/obj/item/storage/medkit{
- pixel_x = -4
- },
-/obj/item/stack/sheet/plasteel{
- amount = 15;
- pixel_x = 11;
- pixel_y = -3
- },
-/obj/item/stack/cable_coil{
- pixel_x = -12;
- pixel_y = -5
- },
-/turf/open/floor/iron/white/smooth_large,
-/area/station/science/robotics/lab)
-"mOK" = (
-/obj/structure/flora/bush/fullgrass/style_random,
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/service)
-"mOO" = (
-/obj/structure/window/reinforced/tinted/spawner/directional/south,
-/obj/structure/mirror/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment2)
-"mPs" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 5
- },
-/obj/machinery/computer/monitor,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"mPv" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/structure/chair/office{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"mPw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/aft)
-"mPE" = (
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"mPH" = (
-/obj/structure/weightmachine,
-/obj/effect/turf_decal/bot,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"mPJ" = (
-/obj/machinery/gibber,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"mPW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"mPY" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"mPZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"mQd" = (
-/obj/item/stack/cable_coil/five,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"mQg" = (
-/obj/structure/chair/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"mQi" = (
-/obj/machinery/computer/cargo,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"mQl" = (
-/obj/structure/bookcase/random/nonfiction,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"mQm" = (
-/obj/effect/turf_decal/tile/red/full,
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 1
- },
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/atmos)
-"mQF" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"mQO" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/sign/warning/secure_area{
- desc = "A warning sign which reads 'BOMB RANGE";
- name = "BOMB RANGE"
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"mQW" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/box,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"mRa" = (
-/obj/structure/table,
-/obj/item/storage/fancy/egg_box,
-/obj/item/reagent_containers/condiment/flour,
-/obj/item/reagent_containers/condiment/rice,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"mRc" = (
-/turf/closed/wall/r_wall,
-/area/station/science/breakroom)
-"mRm" = (
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/cargo/sorting)
-"mRo" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"mRq" = (
-/turf/open/misc/dirt/jungle,
-/area/station/service/hydroponics/garden/abandoned)
-"mRt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"mRI" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"mRQ" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"mSa" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate/trashcart/filled,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"mSe" = (
-/obj/structure/closet/firecloset,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"mSj" = (
-/obj/structure/table/wood,
-/obj/effect/spawner/random/entertainment/lighter,
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"mSl" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark{
- dir = 4
- },
-/obj/structure/table/wood/fancy/red,
-/obj/machinery/light/small/blacklight/directional/north,
-/obj/item/knife/shiv,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/port/fore)
-"mSm" = (
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"mSG" = (
-/turf/closed/wall/r_wall,
-/area/station/science/ordnance/burnchamber)
-"mSJ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"mSM" = (
-/obj/effect/turf_decal/siding/wideplating_new,
-/obj/structure/railing,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/structure/rack,
-/obj/effect/spawner/random/clothing/costume,
-/obj/effect/spawner/random/clothing/costume,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"mSN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/package_wrap,
-/obj/item/radio/intercom/prison/directional/west,
-/turf/open/floor/plating,
-/area/station/security/prison/work)
-"mSR" = (
-/obj/item/bodybag,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"mST" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/bronze/filled,
-/area/station/maintenance/floor1/starboard)
-"mTg" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/service/chapel)
-"mTh" = (
-/obj/effect/turf_decal/siding/white{
- dir = 6
- },
-/obj/structure/railing{
- dir = 6
- },
-/obj/machinery/recharger{
- pixel_y = 4
- },
-/obj/structure/table/reinforced/rglass,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/large,
-/area/station/science/robotics/lab)
-"mTi" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"mTo" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/closet/secure_closet/cytology,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"mTs" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/fore)
-"mTF" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/warning/vacuum/external/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"mTG" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/service/chapel)
-"mTH" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"mTK" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"mTQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/commons/dorms/room1)
-"mTU" = (
-/obj/effect/turf_decal/siding/thinplating_new/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"mUa" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/structure/bed,
-/obj/item/bedsheet/red,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"mUd" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 5
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"mUe" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/siding/wideplating_new,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"mUh" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/closet/wardrobe/miner,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/smooth_large,
-/area/station/cargo/miningoffice)
-"mUl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"mUm" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"mUs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-5";
- location = "3-4"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"mUw" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/camera/autoname/directional/south,
-/obj/item/ammo_casing/spent,
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"mUA" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"mUE" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"mUF" = (
-/obj/structure/chair/office/light,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"mUJ" = (
-/obj/structure/table,
-/obj/item/stack/cable_coil,
-/obj/item/stack/cable_coil{
- pixel_x = -4;
- pixel_y = 5
- },
-/obj/item/stock_parts/capacitor{
- pixel_x = 8;
- pixel_y = 7
- },
-/obj/item/stock_parts/scanning_module{
- pixel_x = 3;
- pixel_y = 16
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"mUK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"mVf" = (
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "radshutsouth"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"mVh" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"mVj" = (
-/obj/effect/turf_decal/tile/green/half,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/escape_pod)
-"mVp" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"mVy" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"mVC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"mVF" = (
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"mVL" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/obj/structure/girder/reinforced,
-/turf/open/floor/plating,
-/area/station/cargo/miningoffice)
-"mVN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured_corner,
-/area/station/maintenance/floor1/starboard/aft)
-"mVR" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"mVU" = (
-/obj/machinery/door/airlock/external/glass,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"mVZ" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 5
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"mWc" = (
-/obj/structure/railing/corner,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"mWd" = (
-/obj/structure/filingcabinet/filingcabinet,
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"mWg" = (
-/obj/effect/decal/cleanable/blood/drip,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"mWh" = (
-/obj/machinery/porta_turret/ai,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"mWn" = (
-/obj/machinery/door/airlock/vault{
- name = "Vault"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/supply/vault,
-/obj/effect/mapping_helpers/airlock/locked,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/nuke_storage)
-"mWq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"mWr" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/ladder,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port)
-"mWH" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"mWJ" = (
-/obj/effect/decal/cleanable/blood,
-/obj/structure/spider/stickyweb,
-/obj/machinery/light/broken/directional/west,
-/obj/effect/spawner/random/engineering/toolbox,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"mWU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/machinery/light_switch/directional/north{
- pixel_x = -7
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"mWW" = (
-/obj/item/stack/sheet/iron,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"mXg" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/obj/effect/landmark/navigate_destination/janitor,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"mXn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/dim/directional/west,
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"mXq" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/south,
-/obj/structure/window/reinforced/plasma/spawner/directional/north,
-/obj/structure/window/reinforced/plasma/spawner/directional/west,
-/obj/machinery/power/shuttle_engine/heater{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"mXx" = (
-/obj/structure/transport/linear/public,
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/fore)
-"mXC" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"mXD" = (
-/obj/structure/tank_holder/emergency_oxygen,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"mXH" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/turf/closed/wall/r_wall,
-/area/station/science/ordnance/burnchamber)
-"mXU" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Firing Range"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"mXY" = (
-/obj/structure/table/glass,
-/obj/item/clothing/gloves/latex,
-/obj/item/healthanalyzer,
-/obj/item/reagent_containers/spray/cleaner{
- pixel_x = -3;
- pixel_y = 2
- },
-/obj/item/reagent_containers/spray/cleaner{
- pixel_x = 5;
- pixel_y = -1
- },
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"mYg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"mYh" = (
-/obj/machinery/shower/directional/east,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/office)
-"mYo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"mYp" = (
-/obj/effect/turf_decal/tile/yellow/fourcorners,
-/obj/item/radio/intercom/prison/directional/north,
-/obj/machinery/computer/arcade/orion_trail,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"mYs" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"mYu" = (
-/obj/item/kirbyplants/random,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"mYA" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"mYB" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "disposals"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"mYC" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/turf/open/floor/plating,
-/area/station/construction)
-"mYF" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"mYK" = (
-/obj/machinery/door/firedoor,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"mYM" = (
-/obj/structure/transit_tube/curved/flipped{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"mYV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"mZj" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"mZy" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/botanist,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"mZH" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"mZI" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"mZJ" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"mZM" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/engine{
- name = "Holodeck Projector Floor"
- },
-/area/station/holodeck/rec_center)
-"mZS" = (
-/obj/structure/disposalpipe/trunk,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"mZT" = (
-/obj/machinery/atmospherics/pipe/smart/simple/general/visible{
- dir = 10
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"mZV" = (
-/obj/machinery/airalarm/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"mZZ" = (
-/obj/machinery/power/emitter,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"nag" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/brigdoor/left/directional/east{
- name = "Engineering Desk";
- req_access = list("engineering")
- },
-/obj/item/paper_bin,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"nah" = (
-/obj/machinery/holopad,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"nak" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"naz" = (
-/obj/effect/turf_decal/siding/wideplating_new/corner{
- dir = 8
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/commons/fitness/recreation)
-"naI" = (
-/obj/machinery/photocopier,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"naR" = (
-/obj/structure/frame/computer{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"nba" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"nbc" = (
-/obj/effect/spawner/random/trash/box,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"nbi" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/spawner/random/structure/table_or_rack,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"nbj" = (
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"nbn" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"nbu" = (
-/obj/machinery/button/curtain{
- id = "restaurant_booth_a";
- pixel_x = -26
- },
-/obj/structure/chair/sofa/left/maroon{
- dir = 4
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"nbN" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"nbP" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/turret_protected/aisat)
-"nbT" = (
-/obj/machinery/door/airlock/external{
- name = "Transport Airlock"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"nbV" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"nca" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/port)
-"ncc" = (
-/turf/closed/wall,
-/area/station/cargo/sorting)
-"nce" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"ncl" = (
-/obj/structure/dresser,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/apartment1)
-"ncs" = (
-/obj/structure/closet/secure_closet/brig/genpop,
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/red/half,
-/obj/item/card/id/advanced/prisoner/five,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"ncu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"ncB" = (
-/turf/closed/wall,
-/area/station/maintenance/floor4/port/aft)
-"ncC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"ncD" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"ncL" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/spawner/random/trash/mess,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ncX" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/cargo/lobby)
-"ndc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"ndd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall,
-/area/station/hallway/floor2/fore)
-"ndg" = (
-/obj/machinery/air_sensor/plasma_tank,
-/obj/effect/turf_decal/trimline/purple/line,
-/turf/open/floor/engine/plasma,
-/area/station/engineering/atmos)
-"ndo" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"ndr" = (
-/obj/effect/decal/cleanable/ash,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"ndF" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"ndL" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"ndR" = (
-/obj/machinery/door/airlock/engineering{
- name = "Chief Engineer's Quarters"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/ce,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"ndX" = (
-/obj/structure/bed{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/item/shard,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"ndY" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"nec" = (
-/obj/structure/frame/computer{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"neh" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"nej" = (
-/obj/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"nel" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"new" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"neB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/button/door/directional/south{
- id = "z1-maint-crates";
- name = "shutters control"
- },
-/obj/effect/turf_decal/caution{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"neC" = (
-/obj/effect/turf_decal/trimline/red/filled/corner,
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 9
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"neJ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"neL" = (
-/obj/structure/disposalpipe/segment{
- dir = 2
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"neR" = (
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"neW" = (
-/obj/machinery/door/airlock/medical{
- name = "Mental Health Ward"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"neX" = (
-/obj/machinery/door/airlock/virology{
- id_tag = "viro-iso";
- name = "Virology Isolation"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/medical/virology/isolation)
-"neZ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"nfm" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/floor1/aft)
-"nfn" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/tcommsat/computer)
-"nfv" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/storage)
-"nfw" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"nfx" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible,
-/turf/open/space/basic,
-/area/space/nearstation)
-"nfH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"nfI" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/cargo/bitrunning/den)
-"nfR" = (
-/obj/machinery/shower/directional/west,
-/turf/open/floor/noslip,
-/area/station/science/genetics)
-"nfU" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/end{
- dir = 4
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"nfY" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor4/fore)
-"nfZ" = (
-/obj/machinery/door/airlock/hatch{
- name = "MiniSat Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"nge" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 8;
- id = "cmoshutter";
- name = "CMO Privacy Shutters"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/cmo)
-"ngf" = (
-/obj/structure/railing,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"ngi" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- desc = "It has a shield faintly scratched into the access panel.";
- name = "Abandoned Armory"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ngk" = (
-/obj/machinery/computer/mecha{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"ngm" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"ngr" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"ngD" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"ngH" = (
-/obj/machinery/ntnet_relay,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"ngK" = (
-/obj/machinery/microwave{
- pixel_x = -3;
- pixel_y = 6
- },
-/obj/structure/table,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"ngL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"ngT" = (
-/obj/structure/dresser,
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"ngX" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/button/door/directional/south{
- id = "evashutter";
- name = "EVA Shutters"
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"ngY" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"nhd" = (
-/obj/machinery/vending/wardrobe/curator_wardrobe,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"nhf" = (
-/obj/structure/table/wood,
-/obj/item/instrument/trumpet,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"nhl" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/aft)
-"nhm" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"nho" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/structure/barricade/wooden/crude,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"nhs" = (
-/obj/structure/table/wood,
-/obj/item/instrument/accordion,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"nhu" = (
-/turf/closed/wall,
-/area/station/commons/storage/primary)
-"nhA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-12";
- location = "2-11"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"nhE" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/commons/fitness/recreation)
-"nhF" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"nhG" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nhJ" = (
-/obj/machinery/chem_master,
-/obj/structure/noticeboard/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"nhL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 4
- },
-/area/station/commons/fitness/recreation)
-"nhM" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nhU" = (
-/obj/structure/alien/weeds/creature{
- desc = "This is in our water? Gross!";
- name = "algae mass"
- },
-/turf/open/water/no_planet_atmos{
- desc = "Filthy.";
- name = "untreated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"nhV" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor4/aft)
-"nhX" = (
-/obj/structure/table/reinforced,
-/obj/machinery/microwave,
-/obj/machinery/light/small/directional/north,
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"nhZ" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/table,
-/obj/item/storage/fancy/donut_box,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"nih" = (
-/obj/machinery/computer/communications,
-/obj/item/radio/intercom/directional/north{
- freerange = 1;
- listening = 0;
- name = "Captain's Intercom"
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"nik" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"nir" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"niu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "ai_sat"
- },
-/obj/machinery/door/airlock/hatch{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"niA" = (
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"niD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"niE" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"niG" = (
-/obj/effect/decal/cleanable/food/tomato_smudge,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"niK" = (
-/obj/structure/table,
-/obj/item/storage/box/monkeycubes{
- pixel_x = 6;
- pixel_y = 9
- },
-/obj/item/radio/headset/headset_medsci{
- pixel_x = -7;
- pixel_y = 4
- },
-/obj/item/sequence_scanner{
- pixel_x = -2;
- pixel_y = -1
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"niM" = (
-/obj/machinery/light_switch/directional/north,
-/obj/effect/landmark/start/assistant,
-/obj/item/bedsheet/brown/double,
-/obj/structure/bed/double,
-/turf/open/floor/wood/parquet,
-/area/station/commons/dorms/room2)
-"niP" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"njc" = (
-/obj/structure/stairs/north,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/plating,
-/area/station/science/lobby)
-"nje" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/table,
-/obj/item/toy/cards/deck/wizoff{
- pixel_x = -4;
- pixel_y = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"njk" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Cafeteria"
- },
-/obj/effect/turf_decal/tile/bar{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/blood/splatter,
-/turf/open/floor/iron/dark/corner,
-/area/station/cargo/miningdock)
-"njm" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"njq" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"njB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_corner{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"njC" = (
-/obj/effect/decal/cleanable/ash/large,
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"njK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"njQ" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"njS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/button/door/directional/east{
- id = "bridge_glass";
- name = "Bridge Shutters Control";
- pixel_y = -5;
- req_access = list("command")
- },
-/obj/machinery/button/door/directional/east{
- id = "bridge_blast";
- name = "Bridge Blast Door Control";
- pixel_y = 5;
- req_access = list("command")
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"njU" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"nkh" = (
-/obj/machinery/power/tracker,
-/obj/structure/cable,
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/starboard/fore)
-"nko" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner,
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"nkp" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"nkL" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/mapping_helpers/burnt_floor,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"nkO" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"nla" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/item/paper_bin,
-/obj/item/pen,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"nlc" = (
-/obj/machinery/smartfridge/organ,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"nld" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"nlf" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/east,
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"nlg" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"nln" = (
-/obj/effect/turf_decal/trimline/red/line,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"nlu" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"nlv" = (
-/obj/machinery/door/airlock/maintenance_hatch,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"nlw" = (
-/obj/structure/chair/sofa/bench,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"nlG" = (
-/obj/structure/dresser,
-/turf/open/floor/wood/parquet,
-/area/station/commons/dorms/room2)
-"nlL" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"nlN" = (
-/turf/closed/wall,
-/area/station/maintenance/floor2/port/aft)
-"nmk" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/trimline/blue,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"nmq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"nmB" = (
-/obj/structure/table/wood,
-/obj/effect/spawner/random/entertainment/musical_instrument,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"nmF" = (
-/obj/structure/stairs/north,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"nmK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/shard,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"nmV" = (
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"nnb" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"nnc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"nnf" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 5
- },
-/obj/effect/spawner/random/engineering/material,
-/obj/structure/rack,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"nnj" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_loot_count = 3;
- spawn_scatter_radius = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"nno" = (
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"nnu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/cargo/bitrunning/den)
-"nnJ" = (
-/obj/structure/filingcabinet,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"nnK" = (
-/obj/effect/spawner/random/structure/girder,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"nnN" = (
-/obj/structure/table,
-/obj/item/folder/red,
-/obj/item/pen,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"nnT" = (
-/obj/machinery/light/small/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"nnV" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"nod" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"noe" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/breakroom)
-"nof" = (
-/obj/item/seeds/coffee,
-/obj/machinery/hydroponics/soil,
-/turf/open/misc/sandy_dirt,
-/area/station/maintenance/floor3/starboard)
-"noh" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"noj" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/security/eva)
-"non" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"nor" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/power/terminal,
-/obj/structure/cable,
-/obj/machinery/power/port_gen/pacman,
-/turf/open/floor/plating,
-/area/station/tcommsat/computer)
-"nou" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 9
- },
-/obj/structure/window/spawner/directional/east,
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"now" = (
-/obj/structure/sign/departments/botany/directional/west,
-/turf/open/openspace,
-/area/station/hallway/floor3/aft)
-"noA" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"noM" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/atmos)
-"noO" = (
-/obj/machinery/porta_turret/ai{
- dir = 4
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"noU" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 1
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"nph" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 1
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"nps" = (
-/obj/structure/rack,
-/obj/item/soulstone/anybody/chaplain,
-/obj/item/nullrod{
- pixel_x = -6
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"npu" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"npD" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"npE" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"npF" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wideplating_new,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"npK" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"npO" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/item/restraints/legcuffs/beartrap/prearmed,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"npP" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"npR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"npT" = (
-/obj/structure/weightmachine/weightlifter,
-/obj/effect/turf_decal/bot,
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"npZ" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"nqb" = (
-/obj/machinery/holopad/secure,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"nqc" = (
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"nqh" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"nqi" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"nqj" = (
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"nqm" = (
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor3/fore)
-"nqr" = (
-/turf/closed/wall,
-/area/station/hallway/floor3/aft)
-"nqt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"nqx" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"nqE" = (
-/obj/machinery/door/airlock/atmos{
- name = "Crystallizer"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/atmos/hfr_room)
-"nqI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"nqJ" = (
-/obj/effect/turf_decal/loading_area/white{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"nqL" = (
-/turf/open/floor/carpet/orange,
-/area/station/command/heads_quarters/qm)
-"nqM" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"nqP" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/east,
-/obj/structure/table/reinforced/plasmarglass,
-/obj/item/stock_parts/power_store/cell/lead{
- pixel_x = -5;
- pixel_y = 8
- },
-/obj/item/usb_cable{
- name = "jumper cable";
- pixel_x = -10;
- pixel_y = 12
- },
-/obj/item/lead_pipe{
- pixel_x = -5
- },
-/obj/item/reagent_containers/spray/cleaner{
- pixel_x = 6;
- pixel_y = 7
- },
-/obj/item/reagent_containers/syringe,
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"nqU" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"nqX" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/table,
-/obj/item/modular_computer/laptop/preset/civilian,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"nre" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"nrh" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"nrk" = (
-/obj/structure/cable,
-/obj/structure/table,
-/obj/item/food/energybar,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"nrm" = (
-/turf/closed/wall,
-/area/station/medical/medbay/central)
-"nrt" = (
-/obj/machinery/conveyor{
- dir = 6;
- id = "mailbelt"
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"nrx" = (
-/obj/machinery/computer/holodeck{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"nrB" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/entry)
-"nrC" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/service)
-"nrL" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"nrX" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"nse" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/machinery/light/floor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/space/nearstation)
-"nsh" = (
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"nsi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"nsn" = (
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"nsp" = (
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/mining/glass{
- name = "Cargo Office"
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"nss" = (
-/obj/structure/chair/comfy/shuttle,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"nst" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"nsw" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"nsB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_half,
-/area/station/cargo/office)
-"nsM" = (
-/obj/structure/table,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"ntl" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end,
-/turf/open/floor/plating,
-/area/station/science/cytology)
-"ntn" = (
-/obj/machinery/door/airlock/command/glass{
- name = "Abandoned Ship Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/all/command/gateway,
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"ntq" = (
-/obj/machinery/light/directional/west,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/apartment1)
-"ntv" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"ntF" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/space/nearstation)
-"ntM" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/fore)
-"ntO" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"ntR" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"ntS" = (
-/obj/structure/table/reinforced,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood,
-/obj/item/food/grown/mushroom/reishi,
-/obj/item/food/grown/mushroom/reishi,
-/obj/item/food/grown/mushroom/reishi,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"ntU" = (
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/obj/effect/turf_decal/siding/purple{
- dir = 4
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/machinery/requests_console/auto_name/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"ntW" = (
-/obj/structure/altar_of_gods,
-/obj/effect/turf_decal/siding/white,
-/obj/item/book/bible,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"nun" = (
-/obj/structure/railing,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron/stairs{
- dir = 4
- },
-/area/station/commons/fitness/recreation)
-"nus" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"nuv" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/effect/turf_decal/weather/dirt{
- dir = 9
- },
-/mob/living/basic/pig{
- desc = "The best friend of any cytologist.";
- name = "Oug"
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"nuE" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"nuR" = (
-/obj/structure/table,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"nuV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/machinery/light/small/directional/north,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"nvh" = (
-/obj/structure/chair/sofa/bench{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"nvj" = (
-/obj/machinery/telecomms/message_server/preset,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"nvk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"nvo" = (
-/obj/effect/spawner/random/mod/maint,
-/obj/item/stack/sheet/cardboard,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"nvs" = (
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 1
- },
-/obj/machinery/door/poddoor/shutters{
- id = "evashutter";
- name = "E.V.A. Storage Shutter"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"nvv" = (
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/railing/corner/end/flip{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"nvw" = (
-/obj/machinery/door/poddoor/shutters{
- id = "maint-shut";
- name = "Maintenance Shutters"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"nvE" = (
-/obj/machinery/autolathe,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"nvO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"nvT" = (
-/obj/machinery/atmospherics/components/unary/passive_vent{
- dir = 1;
- name = "killroom vent"
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/station/science/xenobiology)
-"nwa" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/commons/fitness/recreation)
-"nwc" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sign/warning/vacuum/external/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"nwf" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"nwh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/commons/storage/primary)
-"nwi" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"nwx" = (
-/obj/item/wallframe/button,
-/obj/effect/mapping_helpers/burnt_floor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"nwD" = (
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/aft)
-"nwL" = (
-/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"nwR" = (
-/obj/structure/sign/warning{
- pixel_y = -32
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat)
-"nwW" = (
-/obj/machinery/camera/directional/south{
- c_tag = "AI Chamber - Port";
- network = list("aicore")
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"nxe" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/machinery/vending/cytopro,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"nxm" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"nxy" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/mineral/stacking_unit_console{
- pixel_x = 32
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"nxC" = (
-/obj/effect/turf_decal/stripes/full,
-/obj/machinery/door/airlock{
- name = "Vacant Commissary"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"nxH" = (
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"nxL" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"nxN" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"nxU" = (
-/obj/structure/closet/secure_closet/brig/genpop,
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 4
- },
-/obj/item/card/id/advanced/prisoner/three,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/brig)
-"nxV" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/item/kirbyplants/random/fullysynthetic,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"nya" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/bag/trash,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"nyg" = (
-/obj/structure/chair/office/light{
- dir = 1
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"nyh" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/engine/air,
-/area/station/engineering/atmos)
-"nyr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/wood/parquet,
-/area/station/maintenance/floor2/port/aft)
-"nys" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/mail_sorting/science/experimentor_lab,
-/obj/effect/mapping_helpers/mail_sorting/science/genetics,
-/obj/effect/mapping_helpers/mail_sorting/science/ordnance,
-/obj/effect/mapping_helpers/mail_sorting/science/rd_office,
-/obj/effect/mapping_helpers/mail_sorting/science/research,
-/obj/effect/mapping_helpers/mail_sorting/science/xenobiology,
-/obj/structure/disposalpipe/sorting/mail{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"nyv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/painting/library{
- pixel_y = 32
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"nyE" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"nyG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"nyL" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/item/kirbyplants/random/dead,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"nyZ" = (
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"nzb" = (
-/obj/machinery/computer/telecomms/monitor{
- dir = 4;
- network = "tcommsat"
- },
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"nzd" = (
-/obj/structure/closet/crate/hydroponics,
-/obj/item/wirecutters,
-/obj/item/wrench,
-/obj/item/cultivator,
-/obj/item/shovel/spade,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"nze" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/chair,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"nzj" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nzk" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"nzm" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"nzq" = (
-/obj/machinery/door/airlock/wood{
- name = "Bedroom"
- },
-/turf/open/floor/carpet/purple,
-/area/station/commons/dorms/apartment1)
-"nzr" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nzw" = (
-/obj/structure/toilet{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment1)
-"nzJ" = (
-/obj/machinery/portable_atmospherics/canister/anesthetic_mix,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/storage)
-"nzK" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/item/stack/rods{
- amount = 3
- },
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"nzL" = (
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"nzM" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"nzO" = (
-/obj/structure/ladder,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor2/fore)
-"nzV" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/cable,
-/obj/effect/spawner/random/armory/disablers,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"nAb" = (
-/obj/effect/turf_decal/tile/yellow/fourcorners,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/stool/directional/south,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"nAf" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod,
-/area/station/maintenance/floor3/starboard)
-"nAm" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"nAu" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/commons/storage/primary)
-"nAC" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"nAD" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "aft_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"nAE" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"nAF" = (
-/obj/structure/table/reinforced/rglass,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"nAH" = (
-/turf/closed/wall/r_wall,
-/area/station/science/xenobiology)
-"nAJ" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"nAT" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/textured_half,
-/area/station/cargo/office)
-"nAU" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"nAV" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/turf_decal/box,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"nBh" = (
-/obj/structure/dresser,
-/turf/open/floor/carpet/neon/simple/white,
-/area/station/commons/dorms/room3)
-"nBn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"nBr" = (
-/obj/structure/frame/computer,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"nBw" = (
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"nBx" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/components/trinary/filter/flipped/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"nBC" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"nBO" = (
-/obj/machinery/door/airlock/command{
- name = "Rusted Airlock"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard/aft)
-"nBV" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"nBW" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/departure_lounge)
-"nCi" = (
-/obj/structure/sign/departments/security,
-/turf/closed/wall/r_wall,
-/area/station/security/checkpoint/first)
-"nCA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/aft)
-"nCG" = (
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/cmo)
-"nCK" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"nCL" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"nCP" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/turf/open/floor/iron/corner,
-/area/station/command/gateway)
-"nDf" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/landmark/start/station_engineer,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/engineering/lobby)
-"nDg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"nDj" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/vending/boozeomat,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"nDk" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor3/port)
-"nDn" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"nDp" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/misc/grass,
-/area/station/maintenance/floor1/starboard)
-"nDr" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"nDu" = (
-/turf/open/openspace,
-/area/station/maintenance/floor4/port/fore)
-"nDw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/lobby)
-"nDx" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"nDK" = (
-/obj/item/chair,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"nDQ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/table/reinforced,
-/obj/structure/window/spawner/directional/south,
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 4
- },
-/obj/item/storage/toolbox/mechanical{
- pixel_x = 8;
- pixel_y = -4
- },
-/obj/item/flatpack{
- board = /obj/item/circuitboard/machine/flatpacker;
- pixel_x = -6;
- pixel_y = 5
- },
-/obj/item/multitool{
- pixel_x = 7;
- pixel_y = 10
- },
-/turf/open/floor/iron/corner{
- dir = 4
- },
-/area/station/engineering/lobby)
-"nEa" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/obj/machinery/computer/security/telescreen/entertainment/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"nEb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"nEi" = (
-/obj/effect/turf_decal/box/corners{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"nEj" = (
-/obj/structure/curtain/cloth,
-/turf/open/floor/eighties,
-/area/station/service/janitor)
-"nEl" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"nEs" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"nED" = (
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"nEG" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Chapel Office"
- },
-/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/office)
-"nEI" = (
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"nEM" = (
-/obj/item/fishing_rod,
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/three,
-/obj/item/cigarette/pipe,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"nEO" = (
-/obj/structure/table,
-/obj/item/screwdriver,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"nET" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/nuke_storage)
-"nEX" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nEZ" = (
-/obj/item/radio/intercom/directional/west,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/recharge_station,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"nFf" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"nFi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"nFq" = (
-/obj/item/stack/cable_coil/cut,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"nFr" = (
-/obj/machinery/door_buttons/access_button{
- idDoor = "asylum_airlock_exterior";
- name = "Asylum Exit";
- pixel_y = -26;
- req_access = list("psychology")
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/arrows/white{
- dir = 1;
- pixel_x = -16
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"nFt" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"nFu" = (
-/obj/machinery/newscaster/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/checker,
-/area/station/commons/locker)
-"nFH" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"nFK" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"nFQ" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"nFT" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"nGj" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nGl" = (
-/turf/open/openspace,
-/area/station/service/chapel)
-"nGm" = (
-/obj/structure/cable/multilayer/multiz,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"nGx" = (
-/obj/structure/grille/broken,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"nGD" = (
-/obj/structure/rack,
-/obj/machinery/light/small/directional/west,
-/obj/item/book/granter/action/spell/smoke/lesser,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"nGG" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/beebox,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"nGJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"nGL" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"nGQ" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/commons/locker)
-"nGS" = (
-/obj/structure/bed,
-/obj/item/bedsheet/red,
-/obj/machinery/newscaster/directional/south,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"nGW" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"nHa" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 10
- },
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/computer/security{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"nHf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"nHr" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"nHv" = (
-/obj/effect/turf_decal/caution{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/machinery/meter,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"nHw" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"nHy" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"nHC" = (
-/obj/machinery/door/airlock/virology/glass{
- name = "Monkey Containment"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/virology,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"nHF" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/item/stack/cable_coil/cut,
-/obj/item/electronics/airlock,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/textured_edge{
- dir = 4
- },
-/area/station/medical/abandoned)
-"nHT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit/departure_lounge)
-"nHW" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/window/reinforced/tinted/spawner/directional/east,
-/obj/item/paper_bin,
-/obj/item/pen,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"nIh" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"nIk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"nIl" = (
-/obj/structure/table/wood,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"nIr" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/secondary/entry)
-"nIt" = (
-/obj/structure/bed/double,
-/obj/machinery/light_switch/directional/north,
-/obj/effect/landmark/start/assistant,
-/obj/item/bedsheet/blue/double,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/room4)
-"nIu" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"nIv" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/hydroponics)
-"nIw" = (
-/obj/machinery/computer/atmos_alert{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/office)
-"nIB" = (
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"nII" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"nIJ" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{
- dir = 6
- },
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"nIN" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"nIO" = (
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor1/fore)
-"nIQ" = (
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/smooth_edge{
- dir = 8
- },
-/area/station/science/robotics/mechbay)
-"nIT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"nJb" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/heater/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"nJk" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"nJm" = (
-/obj/machinery/portable_atmospherics/scrubber/huge,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"nJo" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"nJt" = (
-/obj/structure/foamedmetal,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"nJC" = (
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs,
-/obj/item/restraints/handcuffs,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"nJI" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"nJK" = (
-/obj/machinery/portable_atmospherics/canister,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"nJR" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"nJT" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"nJU" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/science/alt/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"nJV" = (
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"nJY" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"nKa" = (
-/mob/living/basic/cow,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"nKc" = (
-/obj/structure/cable,
-/obj/machinery/conveyor/inverted{
- dir = 10;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"nKn" = (
-/obj/structure/sign/directions/dorms/directional/east,
-/obj/structure/sign/directions/evac/directional/east{
- pixel_y = -8
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"nKq" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nKs" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/fore)
-"nKA" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot,
-/obj/item/flashlight/glowstick,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/flashlight/flare,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"nKL" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"nKU" = (
-/obj/effect/spawner/structure/window,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/garden)
-"nKY" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/cryo)
-"nLc" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/courtroom)
-"nLd" = (
-/obj/structure/table/wood,
-/obj/item/storage/photo_album/library,
-/obj/item/radio/intercom/directional/south,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"nLk" = (
-/obj/effect/decal/cleanable/blood,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"nLp" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"nLs" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "coffinbelt"
- },
-/obj/structure/closet/crate/coffin,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"nLx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"nLL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/turf_decal/weather/dirt{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/garden)
-"nLM" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
-"nLY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"nMn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"nMu" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"nMz" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"nMI" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/door/airlock/engineering{
- name = "Telecommunications"
- },
-/turf/open/floor/iron/smooth_half,
-/area/station/tcommsat/computer)
-"nMK" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 6
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"nMU" = (
-/obj/structure/disposalpipe/trunk/multiz/down,
-/turf/open/openspace,
-/area/station/maintenance/floor4/starboard/fore)
-"nMX" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"nNk" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"nNq" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nNy" = (
-/obj/structure/table_frame,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"nNE" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/medical/surgery_tool,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port)
-"nNJ" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/chair,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen/diner)
-"nNM" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"nNT" = (
-/obj/machinery/door/airlock/public{
- name = "Showers"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/turf/open/floor/iron/freezer,
-/area/station/hallway/secondary/service)
-"nOa" = (
-/obj/structure/table,
-/obj/item/storage/bag/tray/cafeteria,
-/obj/item/storage/bag/tray/cafeteria,
-/obj/item/storage/bag/tray/cafeteria,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"nOj" = (
-/obj/vehicle/sealed/mecha/ripley/cargo,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/turf_decal/bot_red,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/warehouse)
-"nOw" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/machinery/chem_master/condimaster,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"nOB" = (
-/obj/structure/kitchenspike,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"nOH" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"nOO" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "chem-lock-f";
- name = "Chemistry Shutters"
- },
-/turf/open/floor/plating,
-/area/station/hallway/floor2/aft)
-"nOR" = (
-/obj/machinery/disposal/bin,
-/obj/effect/turf_decal/tile/dark/fourcorners,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"nOX" = (
-/obj/machinery/camera/directional/east{
- c_tag = "Law Office"
- },
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green{
- pixel_x = 1;
- pixel_y = 5
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/status_display/ai/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"nOY" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"nOZ" = (
-/obj/structure/rack,
-/obj/item/chair/plastic,
-/obj/item/chair/plastic{
- pixel_y = 4
- },
-/obj/item/chair/plastic{
- pixel_y = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"nPa" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"nPb" = (
-/obj/machinery/power/terminal{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/engine_smes)
-"nPp" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/yellow,
-/obj/item/flashlight/flare/candle,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"nPs" = (
-/obj/effect/spawner/random/entertainment/cigarette_pack,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/spawner/random/structure/table_or_rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"nPw" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"nPE" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor4/starboard)
-"nPG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"nPN" = (
-/obj/machinery/computer/message_monitor{
- dir = 4
- },
-/obj/machinery/camera/directional/west{
- name = "Telecomms - Control";
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"nPS" = (
-/obj/structure/mirror/directional/south,
-/obj/machinery/duct,
-/turf/open/floor/iron/freezer,
-/area/station/service/chapel)
-"nPZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible/layer2{
- dir = 1
- },
-/obj/machinery/meter/layer2,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"nQj" = (
-/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"nQl" = (
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/obj/machinery/vending/wardrobe/gene_wardrobe,
-/turf/open/floor/iron/dark,
-/area/station/science/genetics)
-"nQo" = (
-/obj/structure/table,
-/obj/item/storage/pill_bottle/lsd{
- pixel_x = 5
- },
-/obj/structure/sign/poster/contraband/red_rum/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"nQw" = (
-/obj/machinery/light/small/red/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"nQx" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/structure/chair/office/light{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"nQA" = (
-/obj/structure/chair/sofa/bench/right,
-/obj/effect/turf_decal/tile/green/half/contrasted,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"nQO" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"nQQ" = (
-/obj/machinery/shower/directional/west,
-/turf/open/floor/noslip,
-/area/station/commons/fitness)
-"nQR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"nQS" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"nQT" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"nQX" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"nQY" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Brig Fore Entrance"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/scanner_gate/preset_guns,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"nQZ" = (
-/obj/effect/turf_decal/trimline/yellow/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing/corner,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"nRe" = (
-/obj/structure/transport/linear/public,
-/obj/effect/landmark/transport/transport_id{
- specific_transport_id = "com_vator"
- },
-/obj/effect/abstract/elevator_music_zone{
- linked_elevator_id = "com_vator";
- range = 2
- },
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/fore)
-"nRn" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"nRo" = (
-/obj/machinery/vending/games,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"nRv" = (
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"nRx" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/structure/table,
-/obj/item/paper_bin,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"nRF" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor1/fore)
-"nRI" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"nRK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Emergency Ladder Access"
- },
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"nRL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"nRP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"nRQ" = (
-/obj/item/storage/medkit/fire{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/storage/medkit/fire,
-/obj/item/storage/medkit/fire{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/item/storage/medkit/regular,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/door/window/right/directional/east{
- name = "First Aid Supplies";
- req_access = list("medical")
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/structure/cable,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"nRU" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"nSn" = (
-/obj/machinery/blackbox_recorder,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"nSv" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"nSz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/weather/dirt{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/prison/garden)
-"nSC" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"nSS" = (
-/obj/structure/chair/sofa/corp/right{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"nST" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"nSV" = (
-/obj/structure/table/wood,
-/obj/item/storage/lockbox/medal,
-/obj/machinery/status_display/evac/directional/north,
-/obj/machinery/recharger,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"nTo" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 9
- },
-/obj/machinery/computer/gateway_control{
- dir = 8
- },
-/obj/effect/turf_decal/bot_white,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"nTB" = (
-/obj/structure/fluff/oldturret,
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/station/maintenance/floor4/starboard/aft)
-"nTC" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"nTI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-6";
- location = "2-5"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"nTJ" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/digital_clock/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"nTO" = (
-/obj/structure/cable,
-/obj/effect/landmark/start/hangover,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"nTP" = (
-/obj/machinery/status_display/evac/directional/north,
-/obj/machinery/computer/station_alert,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"nTU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"nTZ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"nUa" = (
-/turf/closed/wall,
-/area/station/medical/storage)
-"nUj" = (
-/obj/structure/chair/e_chair,
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"nUp" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"nUt" = (
-/obj/effect/landmark/start/hangover,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"nUA" = (
-/turf/open/floor/carpet/purple,
-/area/station/commons/dorms/apartment1)
-"nUL" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"nUM" = (
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/office)
-"nUO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"nUS" = (
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 1
- },
-/obj/machinery/airalarm/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"nUU" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"nVi" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"nVl" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/structure/table,
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/item/stack/sheet/iron/ten,
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"nVm" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"nVq" = (
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard/fore)
-"nVs" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"nVw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"nVB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"nVE" = (
-/obj/machinery/vending/hydroseeds{
- slogan_delay = 700
- },
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"nVP" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"nVT" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/computer/records/medical/laptop,
-/obj/structure/table,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"nVW" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"nVZ" = (
-/obj/structure/table/wood,
-/obj/item/storage/backpack/satchel/leather/withwallet{
- pixel_x = -2;
- pixel_y = 6
- },
-/obj/item/paper/fluff/ids_for_dummies,
-/obj/machinery/light/directional/north,
-/obj/item/storage/crayons{
- pixel_x = 16
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"nWc" = (
-/obj/structure/extinguisher_cabinet/directional/north,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"nWe" = (
-/turf/closed/wall,
-/area/station/commons/fitness)
-"nWk" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"nWo" = (
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/room1)
-"nWp" = (
-/obj/structure/table,
-/obj/item/stack/arcadeticket,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"nWu" = (
-/obj/structure/toilet{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/medical/psychology)
-"nWz" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"nWH" = (
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/fore)
-"nWI" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-19";
- location = "3-18"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nWJ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"nWM" = (
-/obj/structure/table,
-/obj/item/stack/medical/suture/emergency,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"nWO" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"nWP" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/command/gateway)
-"nWS" = (
-/obj/effect/turf_decal/trimline/red/filled/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"nWW" = (
-/turf/closed/wall,
-/area/station/hallway/floor4/aft)
-"nXb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/end,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"nXh" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard)
-"nXk" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"nXl" = (
-/obj/structure/table,
-/obj/item/stack/cable_coil,
-/obj/item/multitool,
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/siding/thinplating_new/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"nXm" = (
-/obj/structure/table/wood,
-/obj/item/book/manual/wiki/security_space_law,
-/obj/item/book/manual/wiki/security_space_law,
-/obj/item/pen/red,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"nXq" = (
-/obj/structure/chair/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"nXs" = (
-/obj/structure/rack,
-/obj/item/stack/sheet/leather,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"nXw" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/machinery/camera/directional/south{
- c_tag = "Courtroom - Gallery"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"nXA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"nXJ" = (
-/obj/machinery/photocopier,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"nXO" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2,
-/obj/machinery/igniter/incinerator_atmos,
-/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible/layer4{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"nXQ" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/aft)
-"nXX" = (
-/obj/machinery/light/directional/north,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"nYe" = (
-/obj/machinery/computer/teleporter,
-/obj/machinery/firealarm/directional/west,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"nYh" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"nYo" = (
-/obj/structure/table,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"nYt" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"nYE" = (
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"nYL" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"nYN" = (
-/obj/machinery/shower/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"nYP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"nYZ" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"nZe" = (
-/obj/structure/dresser,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"nZg" = (
-/obj/effect/mapping_helpers/airlock/access/all/command/captain,
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/command{
- name = "Captain's Office"
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/command/heads_quarters/captain)
-"nZh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"nZm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera{
- c_tag = "Shared Engineering Storage #4";
- network = list("ss13","engine")
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"nZq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/soap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"nZu" = (
-/obj/structure/window/reinforced/tinted/fulltile,
-/turf/open/floor/plating,
-/area/station/service/library)
-"nZG" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"nZR" = (
-/obj/machinery/light_switch/directional/north,
-/obj/effect/landmark/start/assistant,
-/obj/structure/bed/double,
-/obj/item/bedsheet/red/double,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/room1)
-"nZV" = (
-/obj/machinery/light/red/dim/directional/south,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/effect/turf_decal/trimline/red/line{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"nZZ" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"oaa" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/table,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/structure/sign/departments/engineering/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"oad" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/pump,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"oar" = (
-/turf/open/misc/beach/sand,
-/area/station/hallway/secondary/entry)
-"oaC" = (
-/obj/effect/landmark/blobstart,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/grass/fairy,
-/area/station/maintenance/floor2/port/fore)
-"oaE" = (
-/turf/open/floor/engine/n2,
-/area/station/engineering/atmos)
-"oaS" = (
-/obj/item/toy/crayon/spraycan,
-/obj/structure/table,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/aft)
-"oaU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"obj" = (
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/auxlab)
-"obs" = (
-/obj/item/stack/tile/iron/white,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"obA" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/engineering/lobby)
-"obH" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/status_display/evac/directional/north,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/pumproom)
-"obK" = (
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"obQ" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-8";
- location = "1-7"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"obT" = (
-/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"obV" = (
-/obj/machinery/door/airlock/hatch{
- name = "Emergency Ladder Access"
- },
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"obX" = (
-/obj/machinery/portable_atmospherics/canister/anesthetic_mix,
-/obj/machinery/door/window/brigdoor/right/directional/east{
- name = "Anesthetic Storage";
- req_access = list("medical")
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/storage)
-"oce" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"ocl" = (
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"ocn" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/window/spawner/directional/east,
-/obj/structure/window/spawner/directional/north,
-/obj/structure/window/spawner/directional/south,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"oct" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Security - Exterior"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"ocu" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"ocv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"ocH" = (
-/obj/machinery/light/cold/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"ocO" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/structure/bed/medical/anchored{
- dir = 4
- },
-/obj/item/bedsheet/green,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"ocR" = (
-/obj/machinery/light/directional/south,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Fore Entrance"
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"ocU" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"ocX" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"odk" = (
-/obj/machinery/light/directional/east,
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"odp" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"odz" = (
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/button/door/directional/north{
- id = "rdoffice";
- name = "Privacy Control";
- pixel_y = 34;
- req_access = list("rd")
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"odH" = (
-/obj/effect/turf_decal/tile/red/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"odJ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"odK" = (
-/obj/structure/table/reinforced,
-/obj/item/stack/sheet/plastic/five,
-/obj/item/plunger,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"odP" = (
-/obj/machinery/newscaster/directional/north,
-/obj/machinery/fax{
- fax_name = "Law Office";
- name = "Law Office Fax Machine"
- },
-/obj/structure/table/wood,
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"odS" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/purple,
-/area/station/maintenance/floor1/port/aft)
-"odV" = (
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor3/starboard)
-"odY" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/wood{
- name = "Dining Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"oee" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"oet" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/flip{
- dir = 1
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-9";
- location = "3-8"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"oeu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing/corner/end/flip,
-/obj/structure/railing/corner/end,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"oeQ" = (
-/obj/machinery/shower/directional/east,
-/turf/open/floor/noslip,
-/area/station/commons/fitness)
-"ofa" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"ofh" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"ofi" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"ofn" = (
-/obj/effect/spawner/random/trash/grime,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ofp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"ofx" = (
-/obj/effect/spawner/structure/window/reinforced/tinted,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"ofy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/box,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"ofD" = (
-/obj/machinery/light_switch/directional/west,
-/obj/structure/table,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/service/lawoffice)
-"ofH" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"ogc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/gravity_generator)
-"ogg" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"ogh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall,
-/area/station/hallway/floor1/fore)
-"ogp" = (
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"ogt" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/bookbinder,
-/obj/machinery/light/directional/south,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"ogA" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"ogD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"ogJ" = (
-/obj/machinery/conveyor{
- id = "coffinbelt"
- },
-/obj/structure/closet/crate/coffin,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"ogM" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"ogT" = (
-/obj/effect/decal/cleanable/ash/large,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"ogW" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/aft)
-"ogY" = (
-/obj/machinery/button/door/directional/west{
- id = "atmoshfr";
- name = "Radiation Shutters Control";
- req_access = list("atmospherics")
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/engineering/atmos/hfr_room)
-"oha" = (
-/obj/machinery/light/cold/directional/north,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"ohm" = (
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"ohn" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/white{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"oho" = (
-/obj/machinery/door/airlock/grunge{
- name = "Courtroom"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"oht" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/science/lobby)
-"ohu" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"ohz" = (
-/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"ohF" = (
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/medical{
- name = "Medical Storage"
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"ohO" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"oic" = (
-/turf/closed/wall,
-/area/station/maintenance/floor1/starboard/fore)
-"oig" = (
-/obj/effect/turf_decal/siding/purple,
-/obj/structure/chair/office/light{
- dir = 4
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"oih" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/mechanical,
-/obj/machinery/airalarm/directional/west,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"oin" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"oiu" = (
-/obj/machinery/computer/security/hos{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"oiw" = (
-/obj/structure/cable,
-/obj/machinery/door/airlock/grunge{
- name = "Prison Workshop"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/security/prison/work)
-"oiA" = (
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/fitness)
-"oiF" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"oiJ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"oiO" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "rdoffice";
- name = "Research Director's Shutters"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/rd)
-"oiP" = (
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"oiU" = (
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"oiY" = (
-/obj/effect/turf_decal/caution/stand_clear/white{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"ojc" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"ojl" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/ai_monitored/turret_protected/aisat)
-"ojp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"ojx" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/obj/effect/spawner/random/trash/garbage,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"ojz" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Library Garden"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"ojM" = (
-/obj/structure/chair/comfy{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"ojU" = (
-/obj/structure/table/wood,
-/turf/open/floor/wood,
-/area/station/maintenance/floor2/starboard)
-"ojW" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/table/wood,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/item/flashlight/lamp/green,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"oke" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"okr" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"okt" = (
-/obj/effect/spawner/random/structure/chair_comfy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"okI" = (
-/obj/machinery/firealarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"okK" = (
-/obj/effect/spawner/random/vending/colavend,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"okL" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/rack,
-/obj/item/storage/toolbox/mechanical,
-/obj/item/multitool,
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"okN" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/poddoor/preopen{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"okT" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"ola" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"olj" = (
-/obj/item/cultivator/rake,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"olt" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"olu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/obj/effect/spawner/random/engineering/material_cheap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"olC" = (
-/obj/effect/landmark/blobstart,
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"olM" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 9
- },
-/obj/machinery/status_display/ai/directional/east,
-/obj/structure/chair{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"olR" = (
-/obj/machinery/door/airlock/public{
- id_tag = "public_toilets_a";
- name = "Toilet A"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"olS" = (
-/obj/effect/turf_decal/siding/wideplating,
-/obj/machinery/chem_heater/withbuffer,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"olV" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"ome" = (
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"omg" = (
-/obj/structure/safe/floor,
-/obj/effect/spawner/random/entertainment/money_large,
-/obj/effect/spawner/random/entertainment/money_large,
-/obj/effect/spawner/random/entertainment/money_large,
-/obj/item/reagent_containers/cup/glass/bottle/lizardwine,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"omh" = (
-/obj/machinery/vending/boozeomat,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"omj" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"omk" = (
-/obj/structure/bodycontainer/morgue,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"oml" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- desc = "Etched into the airlock is: SQUATTERZ RIGHTS!";
- name = "Vandalized Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"omq" = (
-/obj/machinery/computer/security/telescreen/vault/directional/east,
-/obj/machinery/computer/security{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"omr" = (
-/turf/open/floor/iron/stairs{
- dir = 8
- },
-/area/station/hallway/floor4/fore)
-"omA" = (
-/obj/effect/spawner/random/structure/table_fancy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"omF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"omG" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/bot,
-/obj/machinery/photocopier,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/service/library/printer)
-"omK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"omL" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"omP" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"omS" = (
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"omT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"onc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/small/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"ong" = (
-/obj/machinery/light/directional/west,
-/obj/structure/sign/poster/random/directional/south,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"oni" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"onl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"onw" = (
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"onC" = (
-/obj/machinery/light/red/dim/directional/east,
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"onE" = (
-/obj/item/paint/anycolor{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/paint/anycolor,
-/obj/item/paint/anycolor{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"onI" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"onM" = (
-/obj/structure/cable,
-/obj/machinery/power/solar,
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/starboard/aft)
-"onT" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Science East"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"onX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"ool" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"oon" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"ooy" = (
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"ooE" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/door/airlock/public/glass{
- name = "Bar"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/bar/atrium)
-"ooF" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"ooN" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/table,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"ooP" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/suit_storage_unit/industrial/loader,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"ooQ" = (
-/obj/machinery/light/warm/directional/north,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"ooT" = (
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/item/folder/white{
- pixel_y = 13
- },
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"ooV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/ammo_casing/c38{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"ooY" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"opd" = (
-/obj/item/stack/sheet/cardboard,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"opn" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"opr" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"opB" = (
-/obj/machinery/space_heater/improvised_chem_heater,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"opC" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"opE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"opN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"opP" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/structure/rack,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/mask/breath,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/security/prison)
-"opR" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/food/grown/poppy{
- pixel_y = 2
- },
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"opZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"oqa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"oqc" = (
-/obj/structure/fluff/shower_drain,
-/obj/machinery/shower/directional/north,
-/turf/open/floor/iron/showroomfloor,
-/area/station/command/heads_quarters/qm)
-"oqd" = (
-/obj/structure/chair/comfy/brown{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"oqk" = (
-/obj/structure/sign/directions/medical/directional/north{
- dir = 2
- },
-/obj/structure/sign/directions/science/directional/north{
- dir = 2;
- pixel_y = 24
- },
-/obj/structure/sign/directions/upload/directional/north{
- dir = 2;
- pixel_y = 40
- },
-/obj/structure/ladder,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor3/fore)
-"oqq" = (
-/obj/structure/table,
-/obj/item/stamp,
-/obj/item/stamp/denied{
- pixel_x = 10;
- pixel_y = 7
- },
-/obj/structure/cable,
-/turf/open/floor/iron/textured_half,
-/area/station/cargo/office)
-"oqv" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"oqw" = (
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"oqx" = (
-/obj/structure/disposalpipe/trunk/multiz/down,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"oqA" = (
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible,
-/obj/machinery/camera{
- c_tag = "Supermatter Foyer Cam #2";
- dir = 8;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"oqD" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/iron/textured_large,
-/area/station/maintenance/solars/starboard/fore)
-"oqH" = (
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"oqK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-1";
- location = "3-0"
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"oqO" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"oqQ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"oqU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/food/popcorn,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"oqW" = (
-/obj/machinery/conveyor/inverted{
- dir = 9;
- id = "mailbelt"
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"orf" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/aft)
-"org" = (
-/obj/item/stack/cable_coil{
- pixel_x = 3;
- pixel_y = -7
- },
-/turf/open/floor/plating/airless,
-/area/station/solars/port/aft)
-"ori" = (
-/obj/structure/table/wood,
-/obj/item/storage/bag/plants,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"orl" = (
-/obj/machinery/recharger,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"orD" = (
-/obj/effect/turf_decal/trimline/white/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"orN" = (
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"orQ" = (
-/obj/structure/table/wood,
-/obj/machinery/computer/records/medical/laptop{
- dir = 1;
- pixel_y = 4
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"osk" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"osq" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"osu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/sorting/mail/flip{
- dir = 1
- },
-/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics,
-/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office,
-/obj/effect/mapping_helpers/mail_sorting/engineering/general,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"osC" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/grille,
-/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"osI" = (
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"osQ" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"osS" = (
-/obj/effect/spawner/structure/window/hollow/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"osX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/restaurant_portal/bar,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"ote" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/circuits)
-"otr" = (
-/obj/structure/mirror/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/sink/directional/west,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"otD" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/landmark/start/station_engineer,
-/turf/open/floor/iron/dark,
-/area/station/engineering/lobby)
-"otJ" = (
-/obj/effect/turf_decal/stripes/box,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"otM" = (
-/obj/machinery/door/poddoor/shuttledock{
- checkdir = 1;
- turftype = /turf/open/space/openspace
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"otO" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"otQ" = (
-/obj/machinery/power/smes,
-/obj/structure/cable,
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/maintenance/solars/starboard/fore)
-"otR" = (
-/obj/machinery/door/window/left/directional/south{
- name = "Pen 5";
- req_access = list("xenobiology")
- },
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"otX" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/turf_decal/siding/white/end{
- dir = 8
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/cryo)
-"otZ" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"oua" = (
-/obj/effect/turf_decal/trimline/blue/end{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/shower/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"oub" = (
-/obj/structure/kitchenspike,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"ouk" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/light/directional/east,
-/obj/structure/chair,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen/diner)
-"ouy" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/computer/security/telescreen/engine_waste/directional/south,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/pumproom)
-"ouD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/start/paramedic,
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"ouF" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"ouR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured_edge,
-/area/station/maintenance/floor1/starboard/aft)
-"ouX" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 4
- },
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"ouZ" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/left/directional/south{
- name = "Hydroponics Desk";
- req_access = list("hydroponics")
- },
-/obj/structure/desk_bell{
- pixel_x = 6
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"ovB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"ovG" = (
-/obj/machinery/conveyor/inverted{
- dir = 5;
- id = "mailbelt"
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"ovJ" = (
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"ovK" = (
-/turf/open/floor/carpet/neon/simple/white,
-/area/station/commons/dorms/room3)
-"ovL" = (
-/obj/structure/sink/directional/south,
-/obj/item/reagent_containers/cup/bucket/wooden{
- pixel_x = 6;
- pixel_y = 4
- },
-/obj/structure/broken_flooring/pile/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"ovP" = (
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat)
-"ovY" = (
-/obj/structure/table/reinforced/rglass,
-/obj/effect/turf_decal/box/white,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/item/reagent_containers/dropper,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"ovZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/checkpoint)
-"owb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port)
-"owh" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/checkpoint)
-"owo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"owr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/security/mechbay)
-"owB" = (
-/turf/open/floor/catwalk_floor,
-/area/station/science/xenobiology/hallway)
-"owI" = (
-/turf/open/space/basic,
-/area/space)
-"owK" = (
-/obj/structure/firelock_frame,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"owM" = (
-/obj/effect/turf_decal/siding/blue{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"owP" = (
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"owS" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"oxh" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
-/obj/machinery/meter,
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos)
-"oxm" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/radio/intercom/prison/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"oxn" = (
-/turf/closed/wall,
-/area/station/medical/office)
-"oxo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/chair/plastic{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/fore)
-"oxz" = (
-/obj/effect/decal/cleanable/glass,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"oxJ" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"oxO" = (
-/obj/item/storage/toolbox/electrical,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"oxP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"oxQ" = (
-/obj/structure/sign/warning/vacuum/external{
- pixel_x = 32
- },
-/obj/machinery/recharge_station,
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"oxX" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"oyb" = (
-/obj/machinery/computer/exodrone_control_console,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/cargo/drone_bay)
-"oyh" = (
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"oyt" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/effect/mapping_helpers/damaged_window,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"oyv" = (
-/obj/machinery/light_switch/directional/east,
-/obj/effect/turf_decal/siding/purple{
- dir = 4
- },
-/obj/machinery/dna_scannernew,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"oyy" = (
-/obj/machinery/duct,
-/obj/machinery/light_switch/directional/south{
- pixel_x = -6
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"oyF" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"oyH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"oyJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"oyO" = (
-/obj/machinery/power/solar_control{
- dir = 1;
- id = "starboardsolar";
- name = "Starboard Quarter Solar Control"
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"oyR" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/structure/sign/warning/biohazard/directional/west,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"oyW" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"oyZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"ozc" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"ozn" = (
-/obj/structure/railing{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"ozr" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"ozs" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"ozt" = (
-/turf/open/openspace,
-/area/station/medical/psychology)
-"ozy" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"ozA" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"ozJ" = (
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"ozL" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/chair/office/light{
- dir = 8
- },
-/obj/machinery/duct,
-/obj/effect/landmark/start/medical_doctor,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"ozM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/bluespace_vendor/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"ozO" = (
-/turf/closed/wall,
-/area/station/security/prison)
-"ozS" = (
-/obj/structure/sign/warning/pods/directional/east,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 5
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"oAc" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/railing/corner/end/flip,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"oAd" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/window/spawner/directional/south,
-/obj/structure/window/spawner/directional/north,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"oAe" = (
-/turf/closed/wall/r_wall,
-/area/station/security/detectives_office)
-"oAm" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"oAv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"oAz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/spawner/random/structure/furniture_parts,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"oAA" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/white{
- dir = 10
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"oAH" = (
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"oAO" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 4
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"oAZ" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/engine/plasma,
-/area/station/engineering/atmos)
-"oBd" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard/fore)
-"oBj" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 9
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"oBy" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/turf_decal/stripes,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/plating,
-/area/station/science/auxlab/firing_range)
-"oBB" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 1
- },
-/area/station/cargo/miningoffice)
-"oBD" = (
-/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/wood{
- name = "Chaplain Bedroom"
- },
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"oBK" = (
-/obj/structure/chair/comfy{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"oBL" = (
-/obj/structure/ladder,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"oBP" = (
-/obj/machinery/camera/autoname/directional/south,
-/obj/structure/chair/comfy/beige{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"oBQ" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"oCc" = (
-/obj/effect/turf_decal/tile/red/anticorner/contrasted,
-/obj/machinery/flasher/directional/east{
- id = "secentranceflasher"
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"oCe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"oCf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"oCg" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"oCx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"oCF" = (
-/turf/open/openspace,
-/area/station/hallway/floor3/aft)
-"oCK" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"oCW" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/structure/table/reinforced,
-/obj/item/grenade/chem_grenade{
- pixel_x = -4
- },
-/obj/item/grenade/chem_grenade{
- pixel_x = 5
- },
-/obj/item/grenade/chem_grenade,
-/obj/item/stack/cable_coil,
-/obj/item/screwdriver{
- pixel_y = 10
- },
-/turf/open/floor/iron/textured_edge,
-/area/station/medical/chemistry)
-"oDd" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/button/door/directional/south{
- id = "armblast";
- name = "Emergency Armory Lockdown";
- req_access = list("armory")
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"oDe" = (
-/obj/structure/stairs/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"oDi" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/dead_body_placer,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"oDI" = (
-/obj/structure/table/reinforced,
-/obj/item/restraints/handcuffs,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"oDJ" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"oDS" = (
-/obj/machinery/holopad,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"oEh" = (
-/obj/structure/chair/plastic{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor3/starboard)
-"oEk" = (
-/turf/closed/wall,
-/area/station/service/library/artgallery)
-"oEr" = (
-/obj/machinery/vending/wardrobe/jani_wardrobe,
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"oEB" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/structure/closet/crate/hydroponics,
-/obj/effect/turf_decal/tile/dark_blue{
- dir = 1
- },
-/obj/effect/spawner/random/food_or_drink/seed{
- spawn_all_loot = 1;
- spawn_random_offset = 1
- },
-/obj/item/seeds/soya,
-/obj/item/seeds/korta_nut,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/security/prison/garden)
-"oEC" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"oET" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"oEU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/table,
-/obj/item/reagent_containers/condiment/cornmeal,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"oFa" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"oFi" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"oFl" = (
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/ce)
-"oFr" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"oFs" = (
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/security/checkpoint)
-"oFu" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"oFF" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/obj/machinery/door/airlock/engineering{
- name = "Telecommunications"
- },
-/turf/open/floor/iron/smooth_half,
-/area/station/tcommsat/server)
-"oFH" = (
-/obj/structure/frame/machine{
- anchored = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/circuit,
-/area/station/science/cytology)
-"oFI" = (
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"oFM" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/shower)
-"oFS" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"oFT" = (
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"oFX" = (
-/obj/item/trash/champagne_cork{
- pixel_x = 8;
- pixel_y = 5
- },
-/obj/item/trash/energybar,
-/obj/item/stack/cannonball/trashball{
- pixel_x = -7;
- pixel_y = 4
- },
-/obj/item/trash/cheesie,
-/obj/effect/decal/cleanable/garbage,
-/obj/effect/decal/cleanable/food/plant_smudge,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"oFY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron,
-/area/station/science/lobby)
-"oGc" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/obj/structure/railing/corner,
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"oGf" = (
-/obj/machinery/airalarm/directional/east,
-/obj/effect/turf_decal/trimline/dark_blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"oGk" = (
-/obj/machinery/atmospherics/components/binary/pump/layer4{
- name = "Distro to External Ports"
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"oGo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"oGt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"oGD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"oGF" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/mapping_helpers/airlock/access/all/science/genetics,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/science/glass{
- name = "Genetics Office"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"oGL" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"oGM" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"oGQ" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/machinery/status_display/ai/directional/north,
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"oHp" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 10
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"oHr" = (
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard)
-"oHs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction{
- dir = 2
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"oHw" = (
-/turf/open/floor/iron,
-/area/station/science/lobby)
-"oHx" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/camera/directional/west{
- c_tag = "Gravity Generator Maintenance"
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/engineering/gravity_generator)
-"oHy" = (
-/obj/structure/broken_flooring/singular/directional/south,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"oHC" = (
-/obj/structure/hedge/opaque,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"oHL" = (
-/obj/structure/grille/broken,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"oHT" = (
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"oHW" = (
-/obj/machinery/porta_turret/ai,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai)
-"oId" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"oIj" = (
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"oIk" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"oIl" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"oIq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"oIr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"oIy" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos/pumproom)
-"oID" = (
-/obj/machinery/door/airlock/vault{
- name = "Vault"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/supply/vault,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/nuke_storage)
-"oIE" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"oII" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/structure/disposalpipe/junction{
- dir = 2
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"oIJ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"oIN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/cargo/sorting)
-"oIS" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"oJf" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"oJk" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"oJl" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 1
- },
-/obj/machinery/airalarm/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"oJo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"oJp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"oJr" = (
-/obj/structure/sign/poster/official/terragov/directional/north,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"oJs" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 8;
- id = "cmoshutter";
- name = "CMO Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/cmo)
-"oJO" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"oJR" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"oKq" = (
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/captain/private)
-"oKr" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/tcomms_all,
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"oKD" = (
-/obj/machinery/photocopier,
-/obj/machinery/requests_console/directional/west{
- department = "Detective";
- name = "Detective Requests Console"
- },
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"oKK" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 6
- },
-/obj/machinery/status_display/ai/directional/west,
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"oKL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"oKP" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"oKR" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"oKT" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/chair/plastic,
-/obj/effect/landmark/start/cargo_technician,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"oKY" = (
-/turf/open/floor/grass,
-/area/station/hallway/floor4/fore)
-"oLk" = (
-/obj/machinery/door/airlock/science{
- name = "Bedroom"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/science/rd,
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/command/heads_quarters/rd)
-"oLn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/obj/structure/table,
-/obj/item/storage/belt/utility,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"oLt" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/door/firedoor,
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/right/directional/north{
- name = "Minikitchen Table";
- req_access = list("bar")
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"oLv" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/smooth_large,
-/area/station/cargo/miningoffice)
-"oLB" = (
-/obj/structure/stairs/north,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"oLE" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"oLG" = (
-/obj/structure/beebox,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"oLL" = (
-/obj/structure/toilet{
- dir = 4
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/showroomfloor,
-/area/station/command/heads_quarters/qm)
-"oMd" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/structure/railing,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"oMm" = (
-/obj/structure/table/reinforced,
-/obj/item/food/butter{
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/drug/space_drugs = 10);
- name = "stick of 'medicated' butter";
- pixel_y = 8
- },
-/obj/item/food/butter{
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/drug/space_drugs = 10);
- name = "stick of 'medicated' butter";
- pixel_y = 3
- },
-/obj/item/food/butter{
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/drug/space_drugs = 10);
- name = "stick of 'medicated' butter";
- pixel_y = -2
- },
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"oMv" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/garbage,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"oMz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/directional/west,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/medical/virology)
-"oMJ" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/arrow_ccw,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"oMP" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"oMV" = (
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"oMX" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "disposals"
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"oMZ" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/line,
-/obj/machinery/light/dim/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"oNd" = (
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/obj/machinery/door/airlock/silver/glass{
- name = "Kitchen"
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"oNf" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"oNn" = (
-/obj/structure/bed/double,
-/obj/item/bedsheet/cosmos/double,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"oNI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"oNK" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"oNP" = (
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor1/fore)
-"oNV" = (
-/obj/machinery/shower/directional/west,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment2)
-"oOa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"oOb" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/ladder,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"oOc" = (
-/obj/effect/turf_decal/bot_white,
-/obj/machinery/computer/cargo/request{
- dir = 8
- },
-/obj/effect/turf_decal/siding/thinplating/end{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/cargo/lobby)
-"oOd" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"oOg" = (
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"oOi" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"oOA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"oOE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"oOK" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"oON" = (
-/obj/item/storage/medkit/brute{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/storage/medkit/brute,
-/obj/item/storage/medkit/brute{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/structure/table/reinforced,
-/obj/item/storage/medkit/regular,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/window/right/directional/south{
- name = "First Aid Supplies";
- req_access = list("medical")
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"oOR" = (
-/obj/structure/table/glass,
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"oOW" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/armory/dragnet,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"oOY" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/flashlight/flare/candle,
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/service/chapel)
-"oPe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/broken/directional/west,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"oPg" = (
-/obj/effect/turf_decal/trimline/white/warning{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"oPm" = (
-/obj/effect/landmark/start/prisoner,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/light/dim/directional/west,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"oPA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"oPC" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"oPH" = (
-/obj/structure/table,
-/obj/item/folder/yellow,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"oPJ" = (
-/obj/machinery/light/small/directional/east,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/storage/tcomms)
-"oPM" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 4
- },
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"oPU" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/neutral/anticorner/contrasted,
-/obj/effect/turf_decal/bot,
-/obj/machinery/firealarm/directional/south,
-/obj/machinery/status_display/ai/directional/east,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = 2;
- pixel_y = 4
- },
-/obj/item/storage/toolbox/mechanical,
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/item/stack/sheet/iron/fifty,
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
-"oPX" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"oPY" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"oQa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"oQn" = (
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/brig)
-"oQu" = (
-/obj/effect/turf_decal/caution/stand_clear,
-/obj/effect/turf_decal/box,
-/obj/machinery/door/poddoor/shutters{
- id = "secmechbay";
- name = "Security Mech Bay Shutters"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"oQv" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/light/directional/west,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"oQy" = (
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"oQL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"oQN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"oQO" = (
-/obj/effect/turf_decal/tile/green,
-/obj/effect/spawner/random/entertainment/arcade,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"oQS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"oRb" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "fore_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"oRh" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{
- dir = 4
- },
-/obj/effect/spawner/structure/window/hollow/plasma/middle{
- dir = 4
- },
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"oRq" = (
-/obj/machinery/door/window/left/directional/north{
- name = "Pen 3";
- req_access = list("xenobiology")
- },
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"oRw" = (
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/pen,
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/recharger{
- pixel_y = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"oRz" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"oRB" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"oRG" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"oRS" = (
-/obj/machinery/teleport/station,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"oRX" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"oRY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"oSb" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"oSg" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"oSi" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/north,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"oSj" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/button/door/directional/south{
- id = "mine_bhz_lock";
- name = "Biohazard Lockdown";
- normaldoorcontrol = 1;
- pixel_x = -6;
- specialfunctions = 4
- },
-/turf/open/floor/iron/white/smooth_edge{
- dir = 1
- },
-/area/station/cargo/miningoffice)
-"oSt" = (
-/turf/closed/wall,
-/area/station/engineering/lobby)
-"oSu" = (
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor3/aft)
-"oSw" = (
-/obj/structure/flora/bush/lavendergrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"oSx" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/green,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"oSz" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"oSA" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"oSL" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"oSQ" = (
-/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"oSW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/bed{
- dir = 4
- },
-/obj/item/bedsheet/yellow{
- dir = 1
- },
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"oSZ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/table,
-/obj/machinery/microwave{
- pixel_y = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/spawner/random/food_or_drink/donkpockets,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"oTc" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"oTg" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"oTo" = (
-/obj/effect/turf_decal/tile/green/anticorner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/textured_corner{
- dir = 4
- },
-/area/station/hallway/secondary/entry)
-"oTq" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"oTu" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/rnd_all,
-/obj/effect/turf_decal/tile/purple/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"oTx" = (
-/obj/structure/table/wood,
-/obj/item/storage/box/drinkingglasses,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"oTA" = (
-/obj/structure/cable/multilayer/connected,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"oTG" = (
-/obj/structure/table,
-/obj/item/storage/fancy/donut_box{
- pixel_x = 4
- },
-/obj/effect/spawner/random/food_or_drink/donkpockets{
- pixel_x = -14;
- pixel_y = 6
- },
-/obj/machinery/newscaster/directional/south,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"oTK" = (
-/obj/structure/sign/poster/contraband/robust_softdrinks,
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"oTQ" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/arrows/white{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"oTW" = (
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"oTX" = (
-/obj/structure/bed/dogbed{
- name = "pet bed"
- },
-/obj/structure/window/spawner/directional/south,
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"oUl" = (
-/obj/machinery/door/airlock/public{
- name = "Chapel Morgue"
- },
-/obj/effect/mapping_helpers/airlock/access/all/service/crematorium,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"oUu" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"oUE" = (
-/obj/machinery/vending/wallmed/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"oUH" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"oUW" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"oVa" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"oVg" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 4
- },
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/science/robotics/lab)
-"oVj" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 5
- },
-/turf/closed/wall/r_wall,
-/area/station/maintenance/disposal/incinerator)
-"oVy" = (
-/obj/structure/bed/medical/emergency,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/gym/mirrored/right{
- pixel_y = 32
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"oVB" = (
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"oVH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"oVP" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"oVY" = (
-/obj/effect/spawner/random/vending/snackvend,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"oVZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/sign/departments/medbay/alt/directional/south,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"oWe" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"oWs" = (
-/obj/item/analyzer{
- pixel_y = 4
- },
-/obj/item/analyzer{
- pixel_y = 4
- },
-/obj/item/pipe_dispenser{
- pixel_x = -1;
- pixel_y = 2
- },
-/obj/item/pipe_dispenser{
- pixel_y = -2
- },
-/obj/effect/turf_decal/tile/neutral/anticorner/contrasted,
-/obj/effect/turf_decal/bot,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/effect/turf_decal/bot,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
-"oWt" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 1
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"oWA" = (
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"oWC" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"oWM" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"oWS" = (
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"oWY" = (
-/obj/structure/chair/plastic{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/fore)
-"oXa" = (
-/obj/structure/grille,
-/turf/open/floor/plating/airless,
-/area/station/service/chapel)
-"oXb" = (
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/effect/turf_decal/delivery/white{
- color = "#52B4E9"
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"oXd" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/railing/corner,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"oXp" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"oXE" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"oXN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"oXQ" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"oXV" = (
-/obj/machinery/holopad,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"oXW" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/commons/storage/art)
-"oYi" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"oYn" = (
-/obj/machinery/shower/directional/south,
-/turf/open/floor/catwalk_floor/iron_white,
-/area/station/cargo/miningoffice)
-"oYv" = (
-/obj/effect/turf_decal/tile/green/anticorner{
- dir = 1
- },
-/turf/open/floor/iron/textured_corner,
-/area/station/hallway/secondary/entry)
-"oYw" = (
-/obj/machinery/shower/directional/west,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"oYA" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"oYE" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"oYG" = (
-/obj/structure/table/wood,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment1)
-"oYI" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"oYL" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"oYT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Astrotelemetry Data Bus"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"oYW" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"oYY" = (
-/obj/structure/closet{
- anchored = 1;
- can_be_unanchored = 1;
- name = "Cold protection gear"
- },
-/obj/item/clothing/suit/hooded/wintercoat,
-/obj/item/clothing/suit/hooded/wintercoat,
-/obj/item/clothing/suit/hooded/wintercoat,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/tank/internals/emergency_oxygen,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"oZd" = (
-/obj/machinery/computer/security/telescreen/auxbase/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"oZj" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 1
- },
-/area/station/science/robotics/lab)
-"oZk" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer,
-/obj/machinery/light/cold/directional/north,
-/turf/open/misc/asteroid/snow/standard_air,
-/area/station/maintenance/floor2/port/aft)
-"oZo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"oZp" = (
-/turf/open/floor/light/colour_cycle/dancefloor_a,
-/area/station/medical/abandoned)
-"oZv" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Science - Experimentor"
- },
-/turf/open/floor/engine,
-/area/station/science/explab)
-"oZx" = (
-/turf/open/openspace,
-/area/station/hallway/floor3/fore)
-"oZz" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"oZE" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"oZJ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"oZV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/smooth_corner,
-/area/station/cargo/miningoffice)
-"oZW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"oZY" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/decoration/material,
-/obj/machinery/light/small/red/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"oZZ" = (
-/obj/machinery/atmospherics/components/tank/air,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"pan" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Storage Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port)
-"paA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"pbe" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"pbg" = (
-/obj/machinery/door/airlock{
- id_tag = "dorms_1_bolts";
- name = "Standard Dorm 1"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/dorms/room1)
-"pbj" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 9
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"pbk" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/holopad,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"pbm" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"pbt" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"pbx" = (
-/obj/effect/landmark/start/prisoner,
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"pbF" = (
-/obj/machinery/computer/piratepad_control/civilian,
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 6
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/smooth_large,
-/area/station/cargo/lobby)
-"pbG" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"pbJ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"pbX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"pcf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"pcg" = (
-/obj/structure/rack,
-/obj/item/storage/box/lights/tubes,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"pch" = (
-/obj/structure/sign/poster/official/moth_hardhat/directional/east,
-/obj/structure/rack,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"pcq" = (
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"pcy" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/light/warm/directional/south,
-/obj/effect/landmark/start/psychologist,
-/obj/structure/chair/sofa/right/brown{
- dir = 1
- },
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"pcC" = (
-/turf/open/openspace,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"pcO" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"pcR" = (
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"pdd" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
-/obj/structure/cable,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"pdf" = (
-/obj/structure/closet/secure_closet/chief_medical,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"pdh" = (
-/turf/closed/wall/r_wall,
-/area/station/science/server)
-"pdJ" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"pdK" = (
-/obj/structure/railing,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"pdO" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 4
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"pdU" = (
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"pdW" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/sign/poster/contraband/have_a_puff/directional/north,
-/obj/machinery/vending/snack/blue,
-/turf/open/floor/iron/white,
-/area/station/medical/break_room)
-"pdY" = (
-/obj/structure/sign/painting/library{
- pixel_y = 32
- },
-/obj/machinery/light/small/directional/east,
-/obj/machinery/pdapainter/medbay,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"peg" = (
-/obj/machinery/light/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"pei" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair/sofa/left/brown{
- dir = 4
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"pen" = (
-/turf/closed/wall,
-/area/station/service/abandoned_gambling_den)
-"peo" = (
-/obj/effect/spawner/random/vending/colavend,
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"pep" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"per" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"peC" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"pfd" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/blood/old,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/table/optable{
- desc = "A cold, hard place for your final rest.";
- name = "Morgue Slab"
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"pfg" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/engineering/storage/tech)
-"pfi" = (
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/burnchamber)
-"pfj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/cola/red,
-/obj/effect/turf_decal/tile/green/half/contrasted,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"pfn" = (
-/obj/structure/disposalpipe/junction/flip,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"pfC" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"pfL" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 8
- },
-/obj/effect/turf_decal/tile/dark_blue,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison/garden)
-"pgi" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"pgo" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"pgv" = (
-/obj/machinery/light/floor,
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"pgE" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"pgG" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"pgL" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"pgS" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"pgU" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"phd" = (
-/turf/open/misc/sandy_dirt,
-/area/station/maintenance/floor3/starboard)
-"phj" = (
-/obj/structure/chair/sofa/corp/left{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"pht" = (
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/turf/open/floor/engine/o2,
-/area/station/engineering/atmos)
-"phI" = (
-/obj/effect/turf_decal/stripes{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"phL" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/atmos)
-"phU" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"pie" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 4
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"pii" = (
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"pik" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"pim" = (
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/abandoned)
-"piq" = (
-/obj/machinery/holopad,
-/obj/effect/landmark/start/mime,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"piw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/neutral/end,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"pix" = (
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark,
-/area/station/science/robotics/lab)
-"piz" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/brigdoor/left/directional/north{
- name = "Virology Desk";
- req_access = list("virology")
- },
-/obj/machinery/door/window/brigdoor/left/directional/south{
- name = "Virology Desk"
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "viro-inner";
- name = "Virology Inner Shutters"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"piA" = (
-/obj/machinery/modular_computer/preset/curator{
- dir = 4
- },
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"piG" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/carpet/royalblue,
-/area/station/command/heads_quarters/cmo)
-"piI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"piO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"piR" = (
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"piT" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/engineering/storage/tech)
-"pjf" = (
-/turf/open/floor/light/colour_cycle/dancefloor_a,
-/area/station/maintenance/floor2/port/fore)
-"pjh" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"pjs" = (
-/obj/machinery/vending/hydronutrients,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"pjw" = (
-/obj/machinery/netpod,
-/obj/effect/decal/cleanable/vomit/old{
- pixel_x = -12;
- pixel_y = -13
- },
-/obj/item/radio/intercom/directional/north,
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/cargo/bitrunning/den)
-"pjB" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"pjD" = (
-/obj/structure/table,
-/obj/item/dest_tagger{
- pixel_x = 7;
- pixel_y = 5
- },
-/turf/open/floor/pod/light,
-/area/station/cargo/sorting)
-"pjM" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/execution/transfer)
-"pjU" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"pjW" = (
-/obj/structure/bed,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"pjX" = (
-/obj/structure/ladder,
-/obj/structure/window/spawner/directional/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"pjZ" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"pka" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/hallway/secondary/entry)
-"pke" = (
-/obj/structure/dresser,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"pkm" = (
-/obj/structure/rack,
-/obj/item/toy/crayon/spraycan{
- pixel_x = 4
- },
-/obj/item/toy/crayon/spraycan,
-/obj/item/toy/crayon/spraycan{
- pixel_x = -4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"pkr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"pkH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/stripes,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"pkR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/entry)
-"pkT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/work)
-"pld" = (
-/obj/structure/chair/comfy,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"plf" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/bronze,
-/area/station/maintenance/floor1/starboard)
-"pll" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/courtroom)
-"plz" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"plC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"plI" = (
-/obj/structure/table,
-/obj/item/food/pizzaslice/moldy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"plO" = (
-/obj/machinery/icecream_vat,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"plX" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"pmd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/structure/chair/sofa/bench/right,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"pme" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/head/costume/allies,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"pmn" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"pmo" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"pmw" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/holopad,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"pmA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"pmB" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"pmC" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/shower)
-"pmD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"pmO" = (
-/obj/structure/chair/comfy/brown{
- dir = 8
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"pmS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/aft)
-"pmX" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical/glass{
- name = "Treatment Center"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"pnc" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"pnf" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"pnk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/furniture_parts,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"pnm" = (
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"pno" = (
-/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos)
-"pnr" = (
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"pnw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/security/range)
-"pnF" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/warning,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 5
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"pnJ" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/landmark/start/security_officer,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"pnK" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"pnV" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 4;
- initialize_directions = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"pog" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"pov" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"poD" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"poE" = (
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"poL" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/machinery/camera/directional/west,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/landmark/start/assistant,
-/obj/machinery/firealarm/directional/west,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"poR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/yellow/end{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"poY" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/shutters{
- dir = 4;
- id = "visitation";
- name = "Visitation Shutters"
- },
-/turf/open/floor/plating,
-/area/station/security/prison/visit)
-"ppd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/obj/machinery/status_display/evac/directional/south,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"ppe" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"ppf" = (
-/obj/effect/turf_decal/weather/sand/light,
-/turf/closed/wall/r_wall,
-/area/station/security/execution/education)
-"ppi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"ppo" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"ppr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"pps" = (
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"ppN" = (
-/obj/machinery/door/airlock/engineering{
- name = "Tech Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"ppO" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"ppQ" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Holodeck - Aft";
- name = "holodeck camera"
- },
-/turf/open/floor/engine{
- name = "Holodeck Projector Floor"
- },
-/area/station/holodeck/rec_center)
-"ppT" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"ppX" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"ppZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor3/port)
-"pqd" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/item/storage/toolbox/electrical{
- pixel_y = 5
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/science/circuits)
-"pqe" = (
-/obj/effect/turf_decal/siding/white,
-/obj/item/kirbyplants/random/fullysynthetic,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"pqg" = (
-/obj/machinery/button/door/directional/east{
- id = "mechbay";
- name = "Mech Bay Shutters Control";
- req_access = list("robotics")
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"pqn" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 10
- },
-/obj/structure/reagent_dispensers/plumbed{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"pqo" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"pqt" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/official/love_ian/directional/south,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"pqy" = (
-/obj/machinery/camera{
- c_tag = "Power Storage";
- dir = 1;
- network = list("ss13","engine")
- },
-/obj/structure/cable,
-/obj/machinery/power/smes/engineering,
-/turf/open/floor/iron,
-/area/station/engineering/engine_smes)
-"pqz" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"pqB" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"pqH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/north{
- areastring = "/area/station/science/ordnance/burnchamber"
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"pqO" = (
-/obj/effect/decal/cleanable/glass,
-/obj/item/shard,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"pqP" = (
-/obj/structure/chair/office{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"pqY" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/decal/cleanable/blood/gibs/bubblegum,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/extinguisher_cabinet/directional/north,
-/obj/item/clothing/suit/toggle/labcoat,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"prd" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"pre" = (
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/fore)
-"pri" = (
-/obj/item/shard,
-/obj/effect/decal/cleanable/glass,
-/obj/item/stack/rods{
- amount = 3
- },
-/obj/effect/decal/cleanable/blood/drip,
-/turf/open/misc/dirt/jungle,
-/area/station/service/hydroponics/garden/abandoned)
-"pro" = (
-/obj/effect/turf_decal/stripes,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"prt" = (
-/obj/machinery/door/airlock/mining{
- name = "Warehouse"
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"prw" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/cargo/lobby)
-"prD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"prQ" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 1
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Theater"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"prS" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"prZ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"psa" = (
-/obj/structure/table/wood,
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"psc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"pse" = (
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/security/office)
-"psh" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/service/chapel/funeral)
-"psn" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor2/fore)
-"psq" = (
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"psF" = (
-/obj/structure/chair/wood,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"psJ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"psK" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/machinery/vending/coffee,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"ptc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/shard,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"ptd" = (
-/obj/effect/turf_decal/trimline/yellow/corner,
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"ptg" = (
-/obj/structure/sign/departments/security/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"ptl" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 4
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port)
-"ptu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"ptD" = (
-/obj/machinery/vending/dinnerware,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"ptL" = (
-/obj/machinery/recharge_station,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"ptW" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"pui" = (
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"pum" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/flashlight,
-/obj/structure/rack,
-/obj/machinery/light/red/dim/directional/west,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"puw" = (
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"pux" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"puB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-17";
- location = "2-16"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"puG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"puH" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"puI" = (
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"puM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"puQ" = (
-/obj/machinery/recharger,
-/obj/structure/table/reinforced,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"puY" = (
-/obj/structure/rack,
-/obj/item/stack/package_wrap{
- pixel_x = 6
- },
-/obj/item/stack/package_wrap{
- pixel_x = -4;
- pixel_y = 6
- },
-/obj/item/hand_labeler,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"pvm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/reinforced/rglass,
-/obj/item/reagent_containers/pill/iron{
- desc = "What could it be?";
- name = "blue pill"
- },
-/turf/open/floor/carpet/blue,
-/area/station/maintenance/floor3/port/aft)
-"pvs" = (
-/obj/effect/decal/cleanable/blood,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"pvw" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 1
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"pvx" = (
-/obj/structure/stairs/north,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/aft)
-"pvD" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"pvE" = (
-/obj/structure/lattice/catwalk,
-/turf/open/openspace,
-/area/station/maintenance/floor3/port/aft)
-"pvF" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/corner,
-/area/station/commons/storage/primary)
-"pvO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"pvX" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"pvZ" = (
-/obj/structure/chair/sofa/bench/left,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"pwf" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"pwv" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"pwA" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/blood/drip,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"pwC" = (
-/obj/machinery/light/small/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/red,
-/area/station/maintenance/floor3/port/aft)
-"pwF" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"pwH" = (
-/obj/structure/railing/corner,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"pwI" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"pwL" = (
-/obj/effect/turf_decal/siding/blue{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"pwS" = (
-/obj/machinery/suit_storage_unit/cmo,
-/obj/effect/turf_decal/trimline/blue/filled/end{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"pwY" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"pxb" = (
-/obj/machinery/grill,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"pxh" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"pxk" = (
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"pxt" = (
-/obj/item/restraints/handcuffs,
-/obj/structure/table/optable,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"pxu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"pxw" = (
-/obj/effect/turf_decal/stripes,
-/obj/effect/decal/cleanable/robot_debris/down,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"pxy" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark{
- dir = 1
- },
-/obj/structure/table/wood/fancy/red,
-/obj/machinery/light/small/blacklight/directional/east,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/port/fore)
-"pxC" = (
-/obj/item/radio/intercom/directional/east,
-/obj/effect/turf_decal/trimline/dark_blue/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"pxF" = (
-/obj/structure/chair/pew{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"pxK" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"pxL" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 9
- },
-/obj/structure/railing/corner/end/flip{
- dir = 1
- },
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"pxQ" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible,
-/turf/open/space/basic,
-/area/space/nearstation)
-"pxX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"pxY" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"pxZ" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"pye" = (
-/obj/structure/disposaloutlet{
- dir = 1
- },
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"pyg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor3/fore)
-"pyt" = (
-/obj/effect/spawner/random/structure/table_fancy,
-/obj/machinery/door/window/brigdoor/right/directional/north{
- req_access = list("library")
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"pyE" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"pyL" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"pyO" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"pyQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/brig)
-"pyR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-11";
- location = "1-10"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"pyS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible/layer2,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"pyU" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/landmark/start/mime,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"pyW" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"pzb" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"pzd" = (
-/obj/effect/turf_decal/bot_white/left,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"pze" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"pzi" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"pzu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/morgue{
- name = "Private Study"
- },
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"pzx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/port)
-"pzE" = (
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/plating,
-/area/station/construction)
-"pzK" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"pzT" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"pzU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/yellow/filled/warning{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"pzV" = (
-/obj/structure/mirror/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/sink/directional/east,
-/obj/structure/sink/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"pzY" = (
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 8
- },
-/obj/structure/table_frame,
-/obj/item/stack/sheet/iron,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"pAb" = (
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"pAk" = (
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"pAn" = (
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/obj/machinery/door/airlock/medical{
- name = "Operation Center"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"pAy" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/snow/style_random,
-/turf/open/misc/snow/actually_safe{
- icon_state = "snow7"
- },
-/area/station/hallway/floor2/fore)
-"pAH" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/misc/dirt/jungle,
-/area/station/service/hydroponics/garden/abandoned)
-"pAK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"pAL" = (
-/obj/machinery/light_switch/directional/east,
-/obj/machinery/space_heater,
-/obj/effect/turf_decal/bot,
-/obj/machinery/camera{
- c_tag = "Atmospherics Office Cam #1";
- dir = 6;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"pAN" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible,
-/obj/machinery/meter,
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos)
-"pAV" = (
-/obj/structure/flora/rock/pile/style_2,
-/obj/machinery/duct,
-/turf/open/misc/sandy_dirt,
-/area/station/science/cytology)
-"pAY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/stairs{
- dir = 4
- },
-/area/station/service/bar/atrium)
-"pBg" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 10
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"pBv" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"pBJ" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-7";
- location = "1-6"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"pBQ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"pBS" = (
-/obj/machinery/deepfryer,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"pBV" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/bridge)
-"pBW" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "library2"
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Lower Library"
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"pBZ" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"pCb" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/white/corner,
-/obj/effect/turf_decal/trimline/white/line{
- dir = 9
- },
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"pCc" = (
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"pCf" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"pCg" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"pCr" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/table/wood,
-/obj/structure/window/reinforced/tinted/spawner/directional/east,
-/obj/structure/window/reinforced/tinted/spawner/directional/north,
-/obj/effect/spawner/random/bureaucracy,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"pCv" = (
-/obj/structure/chair/sofa/corp/right{
- dir = 1
- },
-/turf/open/floor/carpet/purple,
-/area/station/maintenance/floor1/port/aft)
-"pCC" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"pCG" = (
-/obj/effect/spawner/random/vending/snackvend,
-/obj/effect/turf_decal/trimline/white/warning,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"pCH" = (
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"pCS" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/fore)
-"pCU" = (
-/obj/structure/table/reinforced/rglass,
-/obj/item/stack/sheet/mineral/plasma,
-/obj/structure/reagent_dispensers/wall/virusfood/directional/east,
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"pDd" = (
-/obj/structure/table/reinforced/plasmarglass,
-/obj/item/reagent_containers/pill/epinephrine{
- desc = "What could it be?";
- name = "red pill"
- },
-/turf/open/floor/carpet/red,
-/area/station/maintenance/floor3/port/aft)
-"pDq" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"pDv" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"pDx" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"pDK" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"pDL" = (
-/obj/structure/closet/secure_closet/personal,
-/obj/item/clothing/under/misc/assistantformal,
-/obj/item/clothing/suit/hooded/wintercoat,
-/obj/item/clothing/shoes/winterboots,
-/obj/machinery/bluespace_vendor/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/commons/locker)
-"pDQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"pDS" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"pDX" = (
-/obj/structure/railing/corner,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"pEp" = (
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"pEq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/machinery/meter,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"pEs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"pEu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"pEv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"pEx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/hop)
-"pEz" = (
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/machinery/light/directional/east,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"pEA" = (
-/obj/machinery/door/airlock/medical{
- name = "Patient Containment"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"pEE" = (
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/holopad,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"pEJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"pEO" = (
-/obj/effect/turf_decal/trimline/blue/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"pEQ" = (
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"pEY" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high/empty,
-/obj/structure/sign/poster/contraband/random/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/commons/vacant_room/commissary)
-"pEZ" = (
-/obj/structure/closet/radiation,
-/obj/effect/turf_decal/box,
-/obj/machinery/camera{
- c_tag = "Atmospherics Office Cam #2";
- dir = 8;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/office)
-"pFb" = (
-/obj/effect/turf_decal/stripes,
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/cargo/drone_bay)
-"pFy" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"pFA" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"pFI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate/trashcart,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"pFT" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/quantumpad,
-/turf/open/floor/iron/smooth,
-/area/station/science/robotics/mechbay)
-"pFW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"pGb" = (
-/obj/structure/table/glass,
-/obj/item/camera_film{
- pixel_x = -6;
- pixel_y = 5
- },
-/obj/item/camera,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"pGf" = (
-/obj/structure/curtain/cloth/fancy,
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/obj/machinery/door/airlock/silver{
- name = "Kitchen Backdoor"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/diner)
-"pGr" = (
-/obj/structure/rack,
-/obj/item/storage/box/lights/mixed,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"pGs" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"pGy" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Briefing Room"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"pGz" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"pGG" = (
-/obj/structure/ladder,
-/obj/structure/lattice/catwalk,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"pGR" = (
-/obj/effect/spawner/random/engineering/canister,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 5
- },
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"pGS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"pGW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"pHc" = (
-/obj/structure/filingcabinet/employment,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/teleporter)
-"pHe" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"pHf" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/green,
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"pHu" = (
-/obj/machinery/smartfridge/chemistry/virology/preloaded,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"pHD" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"pHI" = (
-/obj/effect/landmark/blobstart,
-/obj/structure/railing,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"pHL" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"pHQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"pHT" = (
-/obj/structure/table/wood,
-/obj/item/paper/fluff/gateway,
-/obj/item/melee/chainofcommand,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"pHU" = (
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/obj/machinery/door/airlock/silver/glass{
- name = "Kitchen Backdoor"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"pIf" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"pIj" = (
-/obj/structure/sink/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"pIm" = (
-/obj/effect/spawner/random/vending/snackvend,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"pIq" = (
-/obj/effect/mapping_helpers/burnt_floor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"pIu" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor3/starboard)
-"pIv" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/openspace,
-/area/station/maintenance/floor4/port/aft)
-"pIG" = (
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"pIH" = (
-/obj/structure/chair/sofa/left/brown{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"pIS" = (
-/obj/machinery/requests_console/directional/east{
- department = "Captain's Desk";
- name = "Captain's Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"pIT" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"pIZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"pJb" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"pJd" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/security/execution/education)
-"pJf" = (
-/turf/open/floor/grass/fairy,
-/area/station/maintenance/floor2/port/fore)
-"pJg" = (
-/obj/structure/railing,
-/obj/item/chair,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"pJj" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/door/window/brigdoor/right/directional/west{
- name = "Shooting Range"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/range)
-"pJq" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"pJs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"pJu" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/cobweb,
-/obj/item/trash/ready_donk,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"pJv" = (
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/machinery/portable_atmospherics/canister/anesthetic_mix,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"pJz" = (
-/obj/structure/table,
-/obj/item/reagent_containers/syringe,
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"pJA" = (
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"pJC" = (
-/obj/effect/turf_decal/trimline/yellow/filled/warning{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port/aft)
-"pJG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"pJH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/janitor_supplies,
-/obj/effect/spawner/random/structure/table_or_rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"pJO" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"pJV" = (
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"pKc" = (
-/obj/machinery/door/airlock/hatch{
- name = "MiniSat Antechamber"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"pKd" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"pKg" = (
-/obj/structure/water_source/puddle,
-/obj/structure/flora/bush/reed/style_3{
- pixel_y = 7
- },
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"pKp" = (
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"pKA" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"pKD" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"pKE" = (
-/obj/machinery/chem_master/condimaster{
- name = "CondiMaster Neo"
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"pKO" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/corner,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"pLe" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"pLy" = (
-/obj/effect/spawner/random/trash/cigbutt,
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/freezer,
-/area/station/hallway/secondary/service)
-"pLI" = (
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"pLJ" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/machinery/rnd/production/protolathe/department/engineering,
-/obj/structure/cable,
-/obj/machinery/newscaster/directional/east,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/lobby)
-"pLK" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"pLO" = (
-/obj/effect/turf_decal/box/white{
- color = "#52B4E9"
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"pLQ" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/machinery/airalarm/directional/west,
-/obj/structure/reagent_dispensers/plumbed,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"pLY" = (
-/obj/machinery/vending/cola/pwr_game,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"pMe" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "roboprivacy";
- name = "Robotics Shutters"
- },
-/turf/open/floor/plating,
-/area/station/science/robotics/lab)
-"pMf" = (
-/obj/structure/closet/secure_closet/medical2,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"pMo" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"pMq" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"pMu" = (
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"pMx" = (
-/obj/item/ammo_casing/shotgun/beanbag,
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"pMy" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"pME" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"pMI" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"pMK" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"pMR" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/blue/corner,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"pMW" = (
-/obj/effect/turf_decal/trimline/purple/corner,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/railing/corner/end/flip,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"pMZ" = (
-/obj/structure/table/wood,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/broken/directional/east,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"pNa" = (
-/obj/structure/chair/office/light{
- dir = 4
- },
-/obj/effect/landmark/start/scientist,
-/obj/effect/turf_decal/tile/neutral/half/contrasted{
- dir = 8
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"pNb" = (
-/obj/machinery/telecomms/processor/preset_three,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"pNc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/north,
-/obj/effect/turf_decal/trimline/green/end,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"pNe" = (
-/obj/structure/chair/plastic,
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"pNj" = (
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"pNs" = (
-/obj/effect/spawner/structure/window/hollow/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/aft)
-"pNA" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard/fore)
-"pNH" = (
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"pNI" = (
-/obj/machinery/power/floodlight{
- anchored = 1
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"pNK" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"pNM" = (
-/obj/machinery/door/airlock/silver{
- name = "Bathroom"
- },
-/obj/machinery/duct,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"pNN" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"pNV" = (
-/obj/machinery/power/shuttle_engine/large{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"pNW" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"pOi" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"pOk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"pOn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"pOv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"pOG" = (
-/turf/closed/wall/r_wall,
-/area/station/security/eva)
-"pOH" = (
-/obj/structure/table/reinforced,
-/obj/item/clothing/suit/apron/overalls,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"pOK" = (
-/obj/machinery/cryo_cell{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"pOQ" = (
-/obj/effect/turf_decal/caution/white{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"pOU" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Research and Development"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"pOY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"pOZ" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/sink/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"pPe" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"pPf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"pPh" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"pPr" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"pPx" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "aft_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"pPC" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"pPG" = (
-/obj/effect/spawner/random/engineering/tank,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"pPI" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"pPJ" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/disposalpipe/junction{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"pPP" = (
-/obj/effect/decal/cleanable/oil/streak,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"pPQ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"pPY" = (
-/obj/machinery/light/red/dim/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"pPZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"pQk" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"pQm" = (
-/obj/structure/closet{
- name = "Evidence Closet 1"
- },
-/obj/item/paperplane,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"pQG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/neutral/end,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"pQH" = (
-/obj/structure/closet/secure_closet/personal,
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 1
- },
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"pQP" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"pQW" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/medical/pharmacy)
-"pQZ" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"pRa" = (
-/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/medical/glass{
- name = "Pharmacy"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"pRk" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit)
-"pRl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"pRq" = (
-/obj/machinery/door/airlock/external/glass,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"pRs" = (
-/obj/structure/lattice/catwalk,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"pRD" = (
-/obj/machinery/shower/directional/north,
-/obj/effect/turf_decal/trimline/green/end{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"pRG" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"pRN" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/item/knife/shiv,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"pRS" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"pRU" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/room1)
-"pRY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"pSd" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"pSl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"pSn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"pSp" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"pSz" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/status_display/ai/directional/south,
-/obj/machinery/photocopier,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"pSE" = (
-/obj/effect/turf_decal/trimline/yellow/corner,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"pSI" = (
-/obj/machinery/button/ignition/incinerator/ordmix{
- pixel_x = 8;
- pixel_y = 32
- },
-/obj/machinery/button/door/incinerator_vent_ordmix{
- pixel_x = -8;
- pixel_y = 32
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/obj/machinery/airalarm/directional/west,
-/obj/effect/mapping_helpers/airalarm/mixingchamber_access,
-/obj/effect/mapping_helpers/airalarm/link{
- chamber_id = "ordnanceburn"
- },
-/obj/effect/mapping_helpers/airalarm/tlv_no_checks,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"pSV" = (
-/obj/machinery/griddle,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"pTI" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"pTP" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"pTR" = (
-/obj/structure/closet/toolcloset,
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"pUa" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/door/airlock/silver{
- name = "Bathroom"
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"pUe" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"pUl" = (
-/obj/effect/turf_decal/trimline/brown/line,
-/obj/machinery/air_sensor/mix_tank,
-/turf/open/floor/engine/vacuum,
-/area/station/engineering/atmos)
-"pUn" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/ai_monitored/command/storage/eva)
-"pUp" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/lobby)
-"pUq" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"pUr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"pUB" = (
-/obj/machinery/power/smes/super/full,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"pUC" = (
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"pUD" = (
-/obj/machinery/button/elevator/directional/west{
- id = "fore_vator"
- },
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/machinery/lift_indicator/directional/west{
- linked_elevator_id = "fore_vator";
- pixel_y = -4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"pUH" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"pUI" = (
-/obj/structure/chair/comfy,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/wood/parquet,
-/area/station/commons/dorms/room2)
-"pUK" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"pUV" = (
-/turf/open/floor/plating/airless,
-/area/station/solars/port/aft)
-"pUY" = (
-/obj/machinery/quantum_server,
-/obj/effect/turf_decal/bot/left,
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 4
- },
-/area/station/cargo/bitrunning/den)
-"pVd" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/machinery/vending/coffee,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"pVe" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "mailbelt"
- },
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"pVi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"pVj" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/office)
-"pVk" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/wood/parquet,
-/area/station/commons/dorms/room2)
-"pVr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"pVD" = (
-/obj/structure/chair/sofa/bench,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"pVK" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"pVP" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/medical/medbay/central)
-"pVZ" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/half,
-/area/station/engineering/lobby)
-"pWa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"pWf" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/reagent_dispensers/watertank/high,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics/garden)
-"pWj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"pWr" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"pWA" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"pWD" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/item/beacon,
-/obj/effect/landmark/navigate_destination/teleporter,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"pWF" = (
-/obj/structure/table,
-/obj/item/stack/package_wrap,
-/obj/item/stack/package_wrap{
- pixel_x = -4;
- pixel_y = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"pWH" = (
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input,
-/obj/effect/turf_decal/trimline/purple/line,
-/turf/open/floor/engine/plasma,
-/area/station/engineering/atmos)
-"pWQ" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"pXg" = (
-/obj/effect/mapping_helpers/airlock/access/all/science/xenobio,
-/obj/machinery/door/airlock/hatch{
- name = "Science Maintenance"
- },
-/turf/open/floor/plating,
-/area/station/science/cytology)
-"pXh" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"pXr" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating/airless,
-/area/station/solars/port/aft)
-"pXG" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/effect/turf_decal/arrows{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"pXL" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/trimline/dark_blue/filled/corner,
-/turf/open/floor/iron/dark/corner,
-/area/station/hallway/floor3/aft)
-"pXR" = (
-/obj/structure/chair/office/light{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/light/small/directional/north,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"pXT" = (
-/obj/structure/chair/plastic{
- dir = 4
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/fore)
-"pXU" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Genetics Lab"
- },
-/obj/structure/chair/sofa/right/brown{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/effect/landmark/start/cook,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"pYf" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"pYg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/port)
-"pYj" = (
-/obj/machinery/computer/apc_control,
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 9
- },
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"pYl" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/carpet/blue,
-/area/station/command/heads_quarters/hop)
-"pYs" = (
-/obj/machinery/computer/atmos_control/nocontrol/master{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/office)
-"pYw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"pYC" = (
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 10
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"pYK" = (
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"pYS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"pYU" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/item/kirbyplants/random,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"pZc" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"pZi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/any/command/hop,
-/obj/machinery/door/airlock/command{
- name = "Head of Personnel's Quarters"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"pZm" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"pZp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/status_display/evac/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/command/bridge)
-"pZt" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/newscaster/directional/south,
-/obj/structure/table/reinforced,
-/obj/item/reagent_containers/cup/rag,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"pZB" = (
-/obj/structure/urinal/directional/north,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"pZD" = (
-/obj/effect/decal/cleanable/food/salt,
-/obj/structure/chair/sofa/bench{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/security/prison)
-"pZE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"pZH" = (
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"pZK" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"pZL" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_loot_count = 3;
- spawn_scatter_radius = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"pZU" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"pZV" = (
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"pZW" = (
-/turf/closed/wall/r_wall,
-/area/station/security/checkpoint/second)
-"pZZ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/paramedic)
-"qac" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"qah" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"qaj" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-6";
- location = "1-5"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"qao" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/hydroponics/garden)
-"qas" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/structure/railing/corner/end/flip{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"qat" = (
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"qaE" = (
-/obj/structure/cable,
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/cargo/sorting)
-"qaJ" = (
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Cell"
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"qaS" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"qaV" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"qaW" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/science/auxlab)
-"qaY" = (
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"qbh" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/aicard,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"qbl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"qbo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/supermatter/room)
-"qbr" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"qbt" = (
-/obj/effect/turf_decal/caution/stand_clear{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qbw" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"qbz" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/commons/vacant_room/commissary)
-"qbG" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"qcd" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"qcj" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 6
- },
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"qck" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"qcp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"qcr" = (
-/obj/structure/fake_stairs/directional/south,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"qct" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"qcA" = (
-/obj/machinery/requests_console/directional/south{
- department = "Bar";
- name = "Bar Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/bar)
-"qcD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"qcH" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"qcI" = (
-/obj/structure/bed/medical/anchored{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"qcP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/weather/dirt{
- dir = 4
- },
-/obj/machinery/hydroponics/constructable{
- anchored = 0
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"qcQ" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"qcR" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"qcS" = (
-/obj/structure/chair/stool/bamboo,
-/turf/open/floor/iron/dark/small,
-/area/station/service/chapel/office)
-"qcW" = (
-/obj/machinery/computer/shuttle/mining{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"qcX" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"qcY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"qcZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"qdc" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Research and Development"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"qdm" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"qdz" = (
-/obj/structure/table/reinforced,
-/obj/item/book/manual/wiki/security_space_law{
- pixel_x = 9;
- pixel_y = 4
- },
-/obj/item/radio{
- pixel_x = -6;
- pixel_y = -3
- },
-/obj/machinery/recharger{
- pixel_y = 3
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"qdB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"qdC" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"qdD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"qdF" = (
-/obj/machinery/bluespace_vendor/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"qdS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"qdV" = (
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
-"qdW" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"qdX" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"qdY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"qea" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-0";
- location = "3-19"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"qeb" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/aft)
-"qef" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2,
-/obj/effect/turf_decal/stripes/end{
- dir = 8
- },
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/aft)
-"qek" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark,
-/obj/effect/turf_decal/siding/wideplating_new/dark/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input,
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"qem" = (
-/obj/machinery/door/airlock/wood{
- name = "Bedroom"
- },
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"qeu" = (
-/obj/effect/landmark/start/hangover,
-/obj/structure/chair/sofa/middle/brown{
- dir = 1
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"qey" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"qez" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"qeA" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"qeW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"qeX" = (
-/obj/structure/ladder,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"qeY" = (
-/obj/machinery/door/airlock/wood{
- id_tag = "library-private";
- name = "Private Reading Room"
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"qff" = (
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/eighties,
-/area/station/commons/dorms/room2)
-"qfg" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"qfk" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"qfm" = (
-/obj/machinery/newscaster/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"qfn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"qfr" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"qfv" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"qfz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"qfE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 9
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"qfG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"qfK" = (
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"qfR" = (
-/obj/machinery/door/airlock/security{
- name = "High Security"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"qfT" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/light/colour_cycle/dancefloor_b,
-/area/station/medical/abandoned)
-"qfV" = (
-/obj/structure/reagent_dispensers/water_cooler,
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"qgb" = (
-/obj/structure/table/wood,
-/obj/item/folder/red,
-/obj/item/hand_labeler,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"qgh" = (
-/obj/item/kirbyplants/random,
-/obj/structure/sign/painting/library{
- pixel_y = 32
- },
-/obj/structure/sign/painting/library{
- pixel_x = 32
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"qgr" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"qgw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/toy/nuke,
-/turf/open/floor/pod/light,
-/area/station/security/execution/education)
-"qgE" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"qgQ" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"qgT" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold,
-/turf/open/space/basic,
-/area/space/nearstation)
-"qgU" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"qgV" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"qhp" = (
-/obj/machinery/camera/directional/east{
- c_tag = "MiniSAT Access Staircase"
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"qhC" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/photocopier,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"qhE" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/turf/open/misc/asteroid/snow/standard_air{
- icon_state = "snow12"
- },
-/area/station/maintenance/floor2/port/aft)
-"qhH" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"qhN" = (
-/obj/structure/cable/multilayer/multiz,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/aft)
-"qhP" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/landmark/start/chemist,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"qhQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"qia" = (
-/obj/structure/railing,
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"qiw" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/sign/poster/official/moth_meth/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"qiy" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qiF" = (
-/obj/item/bedsheet/cmo/double,
-/obj/structure/bed/double,
-/obj/effect/landmark/start/chief_medical_officer,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet/royalblue,
-/area/station/command/heads_quarters/cmo)
-"qiJ" = (
-/obj/machinery/vending/games,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"qiR" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/east,
-/obj/effect/spawner/random/contraband/landmine,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"qiU" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"qjj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/highsecurity{
- name = "Gravity Generator"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/construction,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/maintenance/floor1/port/aft)
-"qjn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"qjq" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
-"qjr" = (
-/turf/closed/wall/r_wall,
-/area/station/security/range)
-"qjs" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"qju" = (
-/obj/effect/decal/cleanable/greenglow,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"qjK" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/structure/sign/departments/restroom/directional/west,
-/turf/open/openspace,
-/area/station/hallway/floor3/aft)
-"qkr" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"qku" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/service/chapel/funeral)
-"qkx" = (
-/obj/machinery/newscaster/directional/east,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningdock)
-"qkz" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/airlock/command/glass{
- name = "Bridge"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/command/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"qkI" = (
-/obj/machinery/camera/directional/east{
- c_tag = "MiniSAT Access"
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"qkL" = (
-/turf/closed/wall,
-/area/station/tcommsat/server)
-"qkO" = (
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input,
-/obj/effect/turf_decal/trimline/red/line,
-/turf/open/floor/engine/n2,
-/area/station/engineering/atmos)
-"qkP" = (
-/obj/structure/table,
-/obj/item/electropack,
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"qkS" = (
-/turf/closed/wall/r_wall,
-/area/station/security/prison/shower)
-"qkU" = (
-/obj/structure/filingcabinet/medical,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/command/teleporter)
-"qkZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"qlb" = (
-/obj/structure/mirror/directional/north,
-/obj/structure/sink/directional/south,
-/turf/open/floor/iron/showroomfloor,
-/area/station/command/heads_quarters/qm)
-"qle" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/dark_blue{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/security/prison)
-"qlf" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"qlh" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"qlo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"qlp" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"qlq" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/newscaster/directional/north,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"qlt" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"qly" = (
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"qmb" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"qmf" = (
-/obj/machinery/vending/security,
-/obj/machinery/light/directional/west,
-/obj/machinery/newscaster/directional/west,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"qmg" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"qmj" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"qmu" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"qmC" = (
-/obj/effect/decal/cleanable/confetti,
-/obj/effect/turf_decal/siding/blue{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"qmG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"qmM" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/carpet/neon/simple/white,
-/area/station/commons/dorms/room3)
-"qmN" = (
-/obj/structure/bed,
-/obj/effect/spawner/random/bedsheet/any,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"qnc" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"qno" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"qnq" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"qnu" = (
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor2/fore)
-"qnv" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"qnw" = (
-/obj/structure/table,
-/obj/structure/fluff/beach_umbrella{
- pixel_x = -5;
- pixel_y = 15
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"qnx" = (
-/obj/machinery/computer/station_alert{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"qnB" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"qnI" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/effect/decal/cleanable/blood/old,
-/obj/item/stack/sheet/iron/five,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"qnN" = (
-/obj/machinery/chem_heater/withbuffer,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"qnO" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/modular_computer/preset/cargochat/service{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"qnS" = (
-/obj/machinery/door/airlock/highsecurity,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"qoa" = (
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"qob" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/siding/yellow{
- dir = 8;
- pixel_x = 15
- },
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"qoq" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"qos" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/department/engine/atmos)
-"qot" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"qov" = (
-/obj/structure/chair/comfy,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/carpet/neon/simple/white,
-/area/station/commons/dorms/room3)
-"qox" = (
-/turf/open/openspace,
-/area/station/maintenance/floor4/starboard/fore)
-"qoC" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"qoF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/storage/primary)
-"qoG" = (
-/obj/machinery/field/generator,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"qoI" = (
-/obj/structure/chair/wood{
- dir = 4
- },
-/obj/machinery/keycard_auth/wall_mounted/directional/north,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"qoJ" = (
-/obj/machinery/telecomms/processor/preset_two,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"qoV" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"qoW" = (
-/obj/machinery/airalarm/directional/west,
-/obj/structure/cable,
-/obj/machinery/light/directional/west,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"qpa" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin/carbon{
- pixel_x = -2;
- pixel_y = 4
- },
-/obj/machinery/camera/directional/north,
-/obj/machinery/requests_console/directional/north{
- department = "Security";
- name = "Security Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"qpb" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/south,
-/obj/structure/foamedmetal,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"qpp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/science/robotics/lab)
-"qpt" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"qpx" = (
-/obj/machinery/airlock_sensor/incinerator_atmos{
- pixel_y = 24
- },
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{
- dir = 4
- },
-/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos,
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"qpH" = (
-/obj/structure/foamedmetal,
-/obj/structure/grille,
-/obj/effect/decal/cleanable/molten_object/large{
- desc = "The pile looks inert, yet you still hear a faint hum. Standing around this makes you feel funny.";
- name = "glob of mess"
- },
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"qqf" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{
- dir = 8
- },
-/obj/machinery/portable_atmospherics/pump,
-/obj/structure/railing,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/floor1/aft)
-"qqp" = (
-/obj/structure/toilet/greyscale{
- dir = 4
- },
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"qqu" = (
-/obj/machinery/light/broken/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"qqv" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"qqE" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"qqY" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"qrd" = (
-/turf/closed/wall,
-/area/station/maintenance/floor3/starboard)
-"qrf" = (
-/obj/machinery/portable_atmospherics/canister/plasma,
-/obj/effect/turf_decal/bot,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"qrg" = (
-/obj/structure/table/reinforced,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/bodypart/chest/mushroom,
-/obj/item/surgical_drapes,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"qrt" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark{
- dir = 4
- },
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"qrx" = (
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/circuit,
-/area/station/science/cytology)
-"qry" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/newscaster/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"qrK" = (
-/obj/effect/turf_decal/trimline/blue/warning,
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/lift_indicator/directional/east{
- linked_elevator_id = "aft_vator";
- pixel_y = -4
- },
-/obj/machinery/button/elevator/directional/east{
- id = "aft_vator"
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"qrN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"qrZ" = (
-/obj/structure/table,
-/obj/item/grenade/chem_grenade/cleaner{
- pixel_x = -7;
- pixel_y = 12
- },
-/obj/effect/turf_decal/tile/green/full,
-/obj/item/grenade/chem_grenade/cleaner{
- pixel_x = -7;
- pixel_y = 8
- },
-/obj/item/grenade/chem_grenade/cleaner{
- pixel_x = -7;
- pixel_y = 4
- },
-/obj/item/storage/box/lights/mixed{
- pixel_x = 6;
- pixel_y = 10
- },
-/obj/item/storage/box/lights/mixed{
- pixel_x = 6;
- pixel_y = 8
- },
-/obj/item/reagent_containers/spray/cleaner,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"qse" = (
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"qsh" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/turf/open/floor/pod,
-/area/station/hallway/secondary/entry)
-"qsj" = (
-/obj/structure/bed/medical/anchored{
- dir = 1
- },
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"qsy" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/commons/storage/primary)
-"qsD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"qsF" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/computer/records/security{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"qsH" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"qsL" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"qsP" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark/corner,
-/area/station/command/teleporter)
-"qsR" = (
-/obj/effect/turf_decal/tile/blue/full,
-/obj/machinery/power/floodlight,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/textured_large,
-/area/station/medical/abandoned)
-"qsW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"qtf" = (
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/fore)
-"qtj" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/spawner/random/structure/crate_abandoned,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"qtm" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 10
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"qtp" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"qtw" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"qty" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 4;
- id = "chem-lock-a";
- name = "Chemistry Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/pharmacy)
-"qtz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"qtA" = (
-/obj/structure/railing/corner,
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/filled/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"qtH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/filingcabinet/chestdrawer{
- name = "bathroom cabinet"
- },
-/obj/item/storage/pill_bottle/mining,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/captain/private)
-"qtM" = (
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"qtO" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/item/radio/intercom/directional/west,
-/obj/structure/disposalpipe/junction/yjunction{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"qtQ" = (
-/obj/machinery/holopad,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"qtS" = (
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"qtV" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"qtW" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/disposal/delivery_chute{
- dir = 8;
- name = "Space Chute"
- },
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/structure/sign/warning/vacuum/external/directional/south{
- name = "WARNING: CHUTE LEADS DIRECTLY TO SPACE"
- },
-/obj/machinery/light/small/directional/east,
-/obj/structure/sign/warning/deathsposal/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"qun" = (
-/turf/closed/wall/r_wall,
-/area/station/science/genetics)
-"quA" = (
-/obj/structure/railing/corner,
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"quB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"quC" = (
-/obj/machinery/door/airlock/medical{
- name = "Operating Room B"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/surgery,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"quE" = (
-/obj/structure/closet/crate/bin{
- name = "biowaste bin"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"quO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"quV" = (
-/obj/effect/turf_decal/trimline/white/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"quW" = (
-/obj/machinery/button/ignition{
- id = "Xenobio";
- pixel_x = -4;
- pixel_y = 24
- },
-/obj/machinery/button/door/directional/north{
- id = "Xenolab";
- name = "Test Chamber Blast Doors";
- pixel_x = 6;
- req_access = list("xenobiology")
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"qvc" = (
-/obj/structure/chair/stool/bar/directional/north,
-/obj/item/stack/arcadeticket,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"qvi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"qvk" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"qvl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"qvn" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"qvv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"qvw" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/textured_half,
-/area/station/hallway/secondary/entry)
-"qvy" = (
-/obj/effect/turf_decal/trimline/yellow,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"qvA" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/commons/storage/primary)
-"qvE" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/iron/textured_corner{
- dir = 8
- },
-/area/station/medical/chemistry)
-"qvM" = (
-/obj/structure/table,
-/obj/item/dest_tagger{
- pixel_x = 7;
- pixel_y = 5
- },
-/obj/item/folder/yellow,
-/obj/item/folder/yellow,
-/obj/item/folder/yellow,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"qvN" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/treatment_center)
-"qwc" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/room4)
-"qwg" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"qwj" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"qwu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/aft)
-"qww" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"qwy" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"qwA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"qwC" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-7";
- location = "3-6"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"qwI" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/fireaxecabinet/directional/north,
-/obj/effect/landmark/start/atmospheric_technician,
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/engineering/atmos/office)
-"qwK" = (
-/obj/item/stack/cable_coil,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
-"qwS" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos/pumproom)
-"qxb" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"qxd" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"qxh" = (
-/turf/closed/wall/r_wall,
-/area/station/science/lower)
-"qxr" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"qxy" = (
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"qxz" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"qxE" = (
-/obj/structure/bookcase{
- name = "Forbidden Knowledge"
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/service/library/private)
-"qxI" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"qxJ" = (
-/obj/effect/turf_decal/siding/white{
- dir = 10
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"qxN" = (
-/obj/machinery/firealarm/directional/south,
-/obj/machinery/light/directional/south,
-/obj/effect/decal/cleanable/oil/streak,
-/obj/machinery/byteforge,
-/obj/effect/turf_decal/box,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/cargo/bitrunning/den)
-"qxQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"qxT" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 6
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"qxW" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 5
- },
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"qxY" = (
-/obj/structure/extinguisher_cabinet/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"qxZ" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/machinery/computer/crew,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"qyk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"qyo" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/flip,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"qyx" = (
-/turf/open/floor/engine,
-/area/station/science/explab)
-"qyB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/tcommsat/computer)
-"qyD" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"qyE" = (
-/obj/structure/table/reinforced,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/green/full,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"qyF" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"qyH" = (
-/obj/machinery/atmospherics/components/binary/pump/off/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
-/turf/open/floor/engine,
-/area/station/science/ordnance/burnchamber)
-"qyJ" = (
-/obj/effect/turf_decal/tile/blue,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron/textured_corner,
-/area/station/medical/chemistry)
-"qyN" = (
-/obj/machinery/atmospherics/components/trinary/filter/critical{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"qyO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark/corner,
-/area/station/security/prison)
-"qyP" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/closet/secure_closet/quartermaster,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/carpet/orange,
-/area/station/command/heads_quarters/qm)
-"qza" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"qzc" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock{
- name = "Escape Pod B"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/escape_pod)
-"qzg" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/construction)
-"qzh" = (
-/obj/structure/table/wood,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"qzm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white/smooth_corner,
-/area/station/cargo/miningdock)
-"qzo" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"qzx" = (
-/obj/structure/bookcase/random/fiction,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"qzy" = (
-/turf/open/floor/plating,
-/area/station/engineering/atmos/project)
-"qzE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"qzH" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"qzK" = (
-/obj/structure/chair/comfy{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"qzQ" = (
-/obj/machinery/newscaster/directional/north,
-/obj/structure/water_source/puddle,
-/turf/open/misc/dirt/jungle,
-/area/station/security/prison/garden)
-"qzX" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/machinery/door/airlock/hatch{
- name = "Oxygen Recycling"
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard)
-"qAa" = (
-/obj/machinery/door/window/left/directional/north{
- name = "Pen 2";
- req_access = list("xenobiology")
- },
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"qAd" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"qAh" = (
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"qAk" = (
-/obj/effect/turf_decal/trimline/red/corner,
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"qAq" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/hedge,
-/obj/machinery/camera/directional/north{
- c_tag = "Science - Break Room"
- },
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"qAv" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/fore)
-"qAw" = (
-/obj/structure/closet/firecloset,
-/obj/effect/turf_decal/trimline/red/line{
- dir = 10
- },
-/obj/machinery/airalarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"qAx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"qAF" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"qAG" = (
-/turf/closed/wall,
-/area/station/science/lobby)
-"qAI" = (
-/obj/structure/chair/comfy,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/room4)
-"qAJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/holopad,
-/obj/effect/landmark/navigate_destination/minisat_access_ai,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"qAK" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"qAM" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/landmark/event_spawn,
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"qAO" = (
-/turf/closed/wall,
-/area/station/commons/storage/tools)
-"qAS" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"qAU" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"qAY" = (
-/obj/structure/chair/sofa/corp,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment1)
-"qBf" = (
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"qBg" = (
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"qBk" = (
-/obj/structure/bed,
-/obj/effect/spawner/random/bedsheet,
-/turf/open/floor/carpet/black,
-/area/station/hallway/secondary/service)
-"qBm" = (
-/obj/machinery/light/small/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"qBv" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 6
- },
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"qBx" = (
-/turf/closed/wall,
-/area/station/service/hydroponics)
-"qBJ" = (
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/port)
-"qBP" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/escape_pod)
-"qBW" = (
-/obj/structure/table,
-/obj/item/ai_module/reset,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/item/radio/intercom/directional/south,
-/obj/effect/spawner/random/aimodule/harmless{
- pixel_x = -15
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"qCa" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"qCo" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"qCp" = (
-/obj/structure/transport/linear/public,
-/obj/machinery/elevator_control_panel/directional/west{
- linked_elevator_id = "fore_vator";
- pixel_x = -24;
- preset_destination_names = list("2" = "Supply-Engi Floor", "3" = "Med-Sci Floor", "4" = "Service Floor")
- },
-/obj/machinery/lift_indicator/directional/west{
- linked_elevator_id = "fore_vator";
- pixel_x = -38;
- pixel_y = -7
- },
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/fore)
-"qCr" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/effect/turf_decal/trimline/red/line{
- dir = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"qCs" = (
-/obj/structure/grille,
-/turf/open/openspace,
-/area/station/security/brig)
-"qCt" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"qCv" = (
-/obj/effect/spawner/structure/window/hollow/directional,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"qCx" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qCy" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-16";
- location = "3-15"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"qCH" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor4/aft)
-"qCO" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"qCZ" = (
-/obj/structure/table/reinforced,
-/obj/item/surgical_drapes{
- pixel_x = -4;
- pixel_y = -2
- },
-/obj/item/scalpel{
- pixel_y = 16
- },
-/obj/item/hemostat{
- pixel_x = 9
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"qDa" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 1
- },
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"qDt" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qDu" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/effect/turf_decal/tile/bar/half,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/service/bar/atrium)
-"qDv" = (
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/commons/storage/primary)
-"qDD" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"qDH" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"qDI" = (
-/obj/effect/turf_decal/siding/wideplating_new/end{
- dir = 8
- },
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"qDM" = (
-/obj/machinery/shuttle_manipulator{
- desc = "It's displaying various schematics and maps of the ship.";
- name = "Holographic Display"
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"qDN" = (
-/obj/machinery/door/airlock/engineering/glass{
- name = "Engineering"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "engimain"
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/construction,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"qDS" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"qEb" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"qEe" = (
-/obj/structure/table,
-/obj/effect/spawner/random/food_or_drink/donkpockets,
-/turf/open/misc/asteroid/snow/standard_air,
-/area/station/maintenance/floor2/port/aft)
-"qEh" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"qEi" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"qEt" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/security/courtroom)
-"qEw" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{
- dir = 4
- },
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"qEy" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 9
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"qEB" = (
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/railing/corner/end,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"qEE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"qEG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"qEH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"qFa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"qFi" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"qFr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"qFu" = (
-/obj/machinery/door/airlock/public{
- name = "Funeral Hall"
- },
-/obj/effect/mapping_helpers/airlock/access/all/service/crematorium,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"qFv" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Maintenance"
- },
-/obj/structure/barricade/wooden/crude,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"qFz" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"qFA" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"qFC" = (
-/obj/machinery/door/airlock/medical{
- name = "Psych"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"qFI" = (
-/turf/closed/wall,
-/area/station/security/medical)
-"qFL" = (
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"qFM" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/effect/turf_decal/tile/green/anticorner/contrasted{
- dir = 4
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"qFO" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/general,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"qFX" = (
-/obj/structure/cable,
-/obj/structure/firelock_frame/heavy,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"qGa" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"qGb" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "chem-lock-a";
- name = "Chemistry Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/pharmacy)
-"qGf" = (
-/obj/machinery/door/poddoor/shutters{
- id = "survhang";
- name = "Ancient Hangars"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"qGk" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"qGm" = (
-/turf/closed/wall/r_wall,
-/area/station/hallway/floor2/fore)
-"qGp" = (
-/obj/structure/table,
-/obj/item/flashlight/lamp,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"qGC" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/aft)
-"qGF" = (
-/obj/structure/table/reinforced,
-/obj/machinery/recharger,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/item/multitool,
-/obj/machinery/digital_clock/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"qGV" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"qHf" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"qHi" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"qHo" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/item/folder/red,
-/obj/item/folder/red,
-/obj/item/folder/red,
-/obj/item/folder/red,
-/obj/item/toy/figure/hos,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"qHv" = (
-/obj/effect/spawner/random/vending/snackvend,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"qHE" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"qHH" = (
-/obj/structure/rack,
-/obj/item/reagent_containers/cup/bottle/iron{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/lithium{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/multiver{
- pixel_x = 1
- },
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"qHR" = (
-/obj/machinery/smartfridge,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"qHW" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/pharmacy)
-"qIf" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/keycard_auth/wall_mounted/directional/south{
- pixel_x = 6
- },
-/obj/effect/landmark/start/chief_engineer,
-/obj/machinery/button/door/directional/south{
- id = "ceprivacy";
- name = "Privacy Shutters Control";
- pixel_x = -6
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"qIv" = (
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"qIz" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"qIH" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"qIM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"qIT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"qIY" = (
-/obj/structure/closet/secure_closet/freezer/meat{
- req_access = list("bar")
- },
-/obj/machinery/camera/autoname/directional/east,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"qJe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/storage/box/donkpockets,
-/obj/structure/table,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"qJq" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"qJA" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"qJD" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/railing/corner/end/flip,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"qJT" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/machinery/door/airlock/hatch{
- name = "Oxygen Recycling"
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard)
-"qJU" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"qKl" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"qKp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"qKt" = (
-/obj/structure/spider/stickyweb,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"qKG" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/mod/maint,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"qKI" = (
-/obj/item/stack/sheet/iron,
-/obj/effect/spawner/random/structure/furniture_parts,
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"qKN" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"qKR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"qLb" = (
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"qLg" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"qLo" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"qLH" = (
-/obj/machinery/fax{
- fax_name = "Head of Personnel's Office";
- name = "Head of Personnel's Fax Machine"
- },
-/obj/structure/table,
-/turf/open/floor/carpet/blue,
-/area/station/command/heads_quarters/hop)
-"qLI" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"qLP" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"qLS" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"qLW" = (
-/obj/structure/displaycase/captain,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"qMe" = (
-/obj/structure/ladder,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"qMu" = (
-/obj/structure/cable,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/plating,
-/area/station/construction)
-"qMv" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/aft)
-"qMV" = (
-/obj/machinery/atmospherics/components/unary/portables_connector,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"qNe" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock{
- name = "Service Hall"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"qNf" = (
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{
- dir = 10
- },
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Waste Cooling Gas"
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"qNh" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 10
- },
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"qNu" = (
-/obj/structure/displaycase/trophy,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"qNw" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"qNx" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qND" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"qNF" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/room1)
-"qNG" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/modular_computer/preset/civilian,
-/obj/machinery/airalarm/directional/west,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"qNI" = (
-/obj/machinery/light/floor,
-/obj/machinery/bluespace_vendor/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor4/aft)
-"qNK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"qNW" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"qNY" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 4
- },
-/obj/machinery/newscaster/directional/east,
-/obj/machinery/modular_computer/preset/civilian{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"qOh" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"qOp" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"qOq" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/machinery/computer/records/medical{
- dir = 8
- },
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"qOs" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/paper_bin,
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/room1)
-"qOF" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Departures"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qOH" = (
-/obj/machinery/status_display/ai/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"qON" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"qOO" = (
-/obj/machinery/light_switch/directional/west,
-/obj/structure/chair/sofa/corp/right{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"qOQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"qOV" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/warning/vacuum/external{
- pixel_x = 32
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"qPi" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/effect/turf_decal/arrows{
- dir = 1
- },
-/obj/effect/turf_decal/arrows,
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"qPl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"qPn" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"qPp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"qPt" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lantern{
- pixel_y = 7
- },
-/obj/item/radio/intercom/chapel/directional/south,
-/turf/open/floor/iron/dark/small,
-/area/station/service/chapel/office)
-"qPu" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"qPv" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"qPG" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/port)
-"qPM" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/vending/wallmed/directional/west,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"qPQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit)
-"qPS" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
-"qPU" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"qPV" = (
-/obj/item/storage/medkit/emergency,
-/obj/item/storage/box/matches{
- name = "creative cautery"
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/structure/table,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"qQb" = (
-/obj/structure/mirror/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/sink/directional/east,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/kitchen/diner)
-"qQe" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/airalarm/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"qQi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/glass,
-/obj/item/bonesetter,
-/obj/effect/spawner/random/medical/surgery_tool,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"qQr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/exit/escape_pod)
-"qQt" = (
-/obj/structure/railing{
- dir = 9
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"qQG" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"qQI" = (
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"qQM" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"qQN" = (
-/obj/structure/table/wood,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/wood/parquet,
-/area/station/commons/dorms/room2)
-"qQS" = (
-/obj/effect/landmark/start/cyborg,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"qRi" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"qRn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/commons/storage/primary)
-"qRx" = (
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"qRy" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"qRz" = (
-/obj/structure/table/wood{
- name = "chopping board"
- },
-/obj/item/stack/sheet/animalhide/mothroach,
-/obj/item/food/meat/slab/mothroach,
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"qRA" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/caution/stand_clear,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"qRE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"qRF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/obj/effect/turf_decal/bot,
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/starboard/fore)
-"qRI" = (
-/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/science/ordnance/burnchamber)
-"qRS" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"qRW" = (
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"qSf" = (
-/obj/structure/musician/piano/minimoog,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"qSl" = (
-/turf/closed/wall,
-/area/station/maintenance/department/engine/atmos)
-"qSr" = (
-/obj/structure/ladder,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/aft)
-"qSv" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"qSz" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/obj/machinery/camera/directional/south{
- c_tag = "Science Foyer - #2"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"qSD" = (
-/obj/structure/aquarium/lawyer,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"qSJ" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"qSR" = (
-/obj/structure/displaycase/trophy,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"qSW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"qTg" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"qTn" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"qTp" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"qTw" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"qTA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"qTF" = (
-/obj/structure/disposalpipe/segment,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"qTH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"qTK" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"qTS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"qUo" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qUr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"qUs" = (
-/obj/machinery/reagentgrinder{
- pixel_y = 4
- },
-/obj/structure/table,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"qUC" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/brown{
- dir = 1
- },
-/obj/structure/table,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"qUL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"qUO" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"qUV" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/railing/corner,
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"qUW" = (
-/obj/machinery/newscaster/directional/west,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"qVa" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"qVf" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden)
-"qVh" = (
-/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"qVl" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"qVm" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"qVv" = (
-/obj/structure/chair/comfy/brown{
- dir = 8
- },
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"qVO" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"qVV" = (
-/obj/machinery/mecha_part_fabricator,
-/turf/open/floor/iron/dark,
-/area/station/science/auxlab)
-"qWc" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 1
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-18";
- location = "1-17"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"qWe" = (
-/obj/machinery/vending/wardrobe/chem_wardrobe,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"qWm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/space_heater,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"qWn" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"qWo" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"qWp" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"qWv" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/camera/directional/south{
- c_tag = "Science Foyer - #1"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/landmark/navigate_destination/research,
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"qWJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/warehouse)
-"qWN" = (
-/obj/structure/lattice,
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"qWQ" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/duct,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"qWR" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"qWS" = (
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"qXc" = (
-/obj/structure/rack,
-/obj/item/clothing/suit/hazardvest,
-/obj/item/clothing/gloves/color/black,
-/obj/item/clothing/mask/gas,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"qXi" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/corner,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"qXj" = (
-/obj/structure/railing{
- dir = 10
- },
-/obj/effect/turf_decal/weather/dirt{
- dir = 1
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"qXk" = (
-/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"qXm" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"qXn" = (
-/obj/structure/table,
-/obj/item/storage/fancy/cigarettes{
- pixel_x = 8;
- pixel_y = 8
- },
-/obj/item/folder/red{
- pixel_x = -5
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"qXo" = (
-/obj/docking_port/stationary{
- dwidth = 11;
- height = 22;
- name = "North Star: Abandoned Hangar";
- shuttle_id = "whiteship_home";
- width = 35
- },
-/turf/open/space/openspace,
-/area/space)
-"qXp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"qXq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"qXr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"qXs" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"qXv" = (
-/obj/structure/ladder,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"qXw" = (
-/obj/machinery/biogenerator,
-/obj/effect/turf_decal/tile/dark_blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/security/prison/garden)
-"qXy" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable/layer3,
-/turf/open/floor/plating,
-/area/station/ai_monitored/turret_protected/aisat)
-"qXE" = (
-/obj/structure/table,
-/obj/item/plate,
-/obj/item/knife/plastic{
- pixel_x = 16
- },
-/obj/item/food/donkpocket/warm/berry{
- pixel_y = 7
- },
-/turf/open/floor/iron/kitchen,
-/area/station/command/heads_quarters/rd)
-"qXW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"qXX" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"qYb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"qYi" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"qYq" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/airlock/external{
- name = "Security External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/security/eva)
-"qYA" = (
-/obj/structure/railing/corner/end,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"qYJ" = (
-/obj/item/kirbyplants/organic/plant21,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 5
- },
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"qYM" = (
-/obj/structure/dresser,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/room4)
-"qYQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"qYZ" = (
-/obj/machinery/atmospherics/components/binary/valve/digital{
- name = "Waste Release"
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"qZc" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/obj/structure/chair{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor1/aft)
-"qZh" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port)
-"qZi" = (
-/obj/machinery/portable_atmospherics/canister/plasma,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"qZq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"qZA" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"qZF" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"qZP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/north,
-/obj/structure/table,
-/obj/item/analyzer{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/item/tank/internals/emergency_oxygen/engi,
-/obj/item/tank/internals/emergency_oxygen/engi{
- pixel_x = -5
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"qZR" = (
-/obj/item/storage/box/lights/bulbs,
-/obj/structure/table,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"qZT" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"qZU" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/cargo/bitrunning/den)
-"rac" = (
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"rag" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible,
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #6";
- dir = 5;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"ram" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"rao" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"raq" = (
-/turf/open/floor/wood,
-/area/station/hallway/floor4/fore)
-"ras" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock{
- name = "Arrivals"
- },
-/obj/structure/disposalpipe/segment{
- dir = 1
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/secondary/entry)
-"rav" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"raz" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"raE" = (
-/obj/machinery/light/directional/west,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hos)
-"raN" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/checkpoint)
-"raO" = (
-/obj/machinery/vending/cigarette,
-/obj/structure/sign/departments/security/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"raP" = (
-/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior,
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2,
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4,
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"raW" = (
-/obj/machinery/vending/tool,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/storage/primary)
-"raY" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"rbh" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"rbm" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"rbp" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"rbr" = (
-/turf/closed/wall/r_wall,
-/area/station/security/execution/transfer)
-"rbs" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"rbx" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"rbz" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"rbD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"rbK" = (
-/obj/structure/chair/wood{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"rbQ" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"rbR" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"rbT" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"rca" = (
-/obj/structure/closet/toolcloset,
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"rcc" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/power/smes/full,
-/obj/machinery/light/directional/east,
-/turf/open/floor/plating,
-/area/station/tcommsat/computer)
-"rcd" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/lobby)
-"rci" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"rcm" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"rcp" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/cigbutt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"rcu" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"rcy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 8
- },
-/area/station/maintenance/floor1/starboard/aft)
-"rcO" = (
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"rcT" = (
-/obj/effect/turf_decal/trimline/white/arrow_ccw{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/secondary/entry)
-"rcV" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"rdj" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"rdl" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/closet/secure_closet/medical3,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"rdt" = (
-/obj/effect/spawner/xmastree,
-/obj/effect/turf_decal/siding/wood/corner,
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"rdv" = (
-/obj/structure/rack,
-/obj/item/mod/core/standard,
-/obj/item/stock_parts/power_store/cell/high,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"rdx" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"rdy" = (
-/obj/effect/spawner/random/engineering/flashlight,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"rdC" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"rdF" = (
-/obj/machinery/door/airlock/medical{
- frequency = 1450;
- id_tag = "asylum_airlock_interior";
- name = "Asylum Airlock"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"rdH" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 4;
- id = "viro-outer";
- name = "Virology Outer Shutters"
- },
-/turf/open/floor/plating,
-/area/station/medical/virology/isolation)
-"rdJ" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/holopad,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"rdW" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"rec" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"red" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"ref" = (
-/obj/effect/turf_decal/arrows{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"rej" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"rek" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/corner,
-/area/station/security/office)
-"rem" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Chapel Office"
- },
-/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/office)
-"rep" = (
-/obj/structure/chair/sofa/corp{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/effect/landmark/start/paramedic,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"res" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{
- dir = 1
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"ret" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/transit_tube/curved/flipped{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/hallway/floor4/aft)
-"reD" = (
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/contraband/random/directional/east,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"reI" = (
-/obj/structure/table,
-/obj/item/folder/red{
- pixel_x = 3
- },
-/obj/item/folder/white{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/restraints/handcuffs,
-/obj/item/radio/off,
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/requests_console/directional/east{
- department = "Security";
- name = "Security Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"reW" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"rfn" = (
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"rfo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"rfq" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/aft)
-"rfx" = (
-/turf/open/floor/light/colour_cycle/dancefloor_b,
-/area/station/medical/abandoned)
-"rfz" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/spawner/random/structure/grille,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"rfD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/button/door/directional/east{
- id = "maint-shut";
- name = "Shutters Control"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"rfI" = (
-/obj/structure/closet/emcloset,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"rfM" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"rfT" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"rfU" = (
-/turf/closed/wall,
-/area/station/commons/dorms/room3)
-"rgc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=4-0";
- location = "4-3"
- },
-/mob/living/simple_animal/bot/secbot/beepsky,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"rgi" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Atmospherics Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos)
-"rgx" = (
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/science/auxlab)
-"rgy" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"rgz" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/library/private)
-"rgE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/aft)
-"rgL" = (
-/obj/machinery/door/airlock{
- name = "Minikitchen Access"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/any/service/bar,
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/turf/open/floor/iron/dark,
-/area/station/service/bar)
-"rgM" = (
-/obj/structure/closet/boxinggloves,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"rgR" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"rgT" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/station/construction)
-"rhi" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/structure/closet/secure_closet/bar,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"rho" = (
-/obj/structure/table/reinforced,
-/obj/item/book/manual/wiki/chemistry,
-/obj/item/hand_labeler,
-/obj/effect/turf_decal/siding/wideplating,
-/obj/machinery/light/cold/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"rhs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/landmark/start/cargo_technician,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"rhw" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"rhx" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/cargo/lobby)
-"rhC" = (
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/turf/open/floor/engine,
-/area/station/command/heads_quarters/rd)
-"rhI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/marker_beacon/jade,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"rhJ" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"rhN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/contraband/permabrig_weapon,
-/obj/machinery/light/small/blacklight/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"rhO" = (
-/obj/item/kirbyplants/random,
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/machinery/computer/security/telescreen/interrogation/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"rhR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"rhY" = (
-/obj/item/storage/box/donkpockets{
- pixel_y = 5
- },
-/obj/structure/table,
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment1)
-"rhZ" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"ric" = (
-/obj/structure/transit_tube/diagonal{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"rif" = (
-/obj/effect/decal/cleanable/robot_debris,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"rim" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"rip" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"ris" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner{
- dir = 1
- },
-/obj/structure/table,
-/obj/item/aquarium_kit,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"riy" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"riC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"riD" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"riE" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 6
- },
-/obj/structure/grille,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"riF" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"riT" = (
-/obj/effect/decal/cleanable/ash/large,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"rjh" = (
-/turf/open/floor/iron/dark/textured_edge{
- dir = 4
- },
-/area/station/maintenance/floor1/starboard/aft)
-"rjm" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/light_switch/directional/south,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"rjp" = (
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/railing/corner/end,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"rjB" = (
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"rjD" = (
-/turf/closed/wall,
-/area/station/hallway/floor1/aft)
-"rkd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"rkf" = (
-/obj/machinery/camera{
- c_tag = "Shared Engineering Storage #3";
- dir = 4;
- network = list("ss13","engine")
- },
-/obj/machinery/shower/directional/south,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/pumproom)
-"rks" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"rkE" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 1
- },
-/obj/structure/railing/corner/end,
-/obj/structure/railing/corner/end/flip,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"rkM" = (
-/turf/closed/wall/r_wall,
-/area/station/science/cytology)
-"rkO" = (
-/obj/machinery/suit_storage_unit/standard_unit,
-/obj/effect/turf_decal/bot_white/right,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"rkY" = (
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/vending/wardrobe/sec_wardrobe,
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"rkZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/service/kitchen/abandoned)
-"rlf" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"rlw" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/structure/closet/crate/freezer,
-/obj/effect/spawner/random/medical/memeorgans,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"rlB" = (
-/obj/structure/chair/office/tactical{
- dir = 1
- },
-/obj/effect/landmark/start/coroner,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"rlC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=4-1";
- location = "4-0"
- },
-/mob/living/basic/bot/medbot/autopatrol,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor4/fore)
-"rlJ" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"rlP" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"rlX" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"rmd" = (
-/obj/effect/turf_decal/siding/white,
-/obj/machinery/computer/records/medical,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"rmm" = (
-/obj/structure/table,
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/requests_console/directional/north{
- department = "Head of Personnel's Desk";
- name = "Head of Personnel's Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/obj/item/hand_labeler{
- pixel_y = 3
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"rms" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"rmz" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"rmD" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/closet/secure_closet/chemical,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"rmF" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"rmT" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"rmZ" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/ai_monitored/command/storage/eva)
-"rnd" = (
-/obj/effect/turf_decal/trimline/white/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"rne" = (
-/obj/structure/falsewall,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"rnl" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"rns" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"rnv" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"rnE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-17";
- location = "3-16"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"rnP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"rnU" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"rnW" = (
-/obj/machinery/light/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment2)
-"roa" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"roe" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"rof" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"rog" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"roh" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/aft)
-"roj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"rom" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/structure/closet/radiation,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"roo" = (
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/aft)
-"rov" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard)
-"roy" = (
-/obj/item/toy/plush/beeplushie{
- desc = "Maybe hugging this will make you feel better about yourself.";
- name = "Therabee"
- },
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/obj/structure/table/wood,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"roz" = (
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"roZ" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"rpa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"rpj" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"rpp" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"rpr" = (
-/obj/structure/chair/stool/bar/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"rpA" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"rpD" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"rpF" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/turf/open/water/beach{
- desc = "Refreshing!";
- name = "treated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"rpN" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 1
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"rpR" = (
-/turf/open/floor/iron/dark/textured_edge,
-/area/station/maintenance/floor1/starboard/aft)
-"rpV" = (
-/obj/structure/sign/warning/radiation/rad_area{
- pixel_y = 32
- },
-/obj/effect/turf_decal/bot_white,
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"rqc" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"rqf" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/structure/table,
-/obj/item/storage/box/matches{
- name = "creative cautery"
- },
-/obj/item/knife/shiv{
- desc = "Not great at stabbing, but handy when it comes to surgery.";
- force = 1;
- name = "makeshift scalpel";
- tool_behaviour = "scalpel"
- },
-/obj/item/pen/red{
- name = "ghetto hemostat"
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"rqi" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/airalarm/directional/north,
-/obj/effect/mapping_helpers/airalarm/tlv_cold_room,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"rqj" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/obj/machinery/light_switch/directional/east,
-/obj/item/pinpointer/nuke,
-/obj/item/disk/nuclear,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"rqr" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/white,
-/area/station/engineering/atmos)
-"rqx" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/obj/machinery/camera/directional/south{
- c_tag = "Auxiliary Base Construction"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"rqK" = (
-/obj/effect/turf_decal/stripes/full,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/railing{
- dir = 6
- },
-/obj/machinery/door/poddoor/preopen{
- id = "Xenolab";
- name = "Test Chamber Blast Door"
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"rqM" = (
-/obj/structure/chair/sofa/bench{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"rqU" = (
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/machinery/door/window/left/directional/east{
- req_access = list("maint_tunnels")
- },
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"rqV" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/dark_blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/spawner/random/decoration/carpet,
-/turf/open/floor/iron,
-/area/station/security/prison/garden)
-"rrl" = (
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"rrm" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"rrr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"rrs" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2,
-/obj/machinery/air_sensor/ordnance_freezer_chamber,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"rrD" = (
-/obj/machinery/biogenerator,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/door/firedoor,
-/turf/open/floor/plating,
-/area/station/service/hydroponics)
-"rrQ" = (
-/obj/structure/table,
-/obj/machinery/airalarm/directional/west,
-/obj/item/stack/cable_coil/five,
-/obj/item/storage/toolbox/mechanical,
-/obj/item/multitool,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"rrR" = (
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"rrW" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"rrX" = (
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"rsa" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"rsd" = (
-/obj/structure/table,
-/obj/item/reagent_containers/pill/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"rsf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/sign/warning/vacuum/external{
- pixel_x = 32
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"rsh" = (
-/obj/structure/closet{
- name = "Evidence Closet 1"
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"rsi" = (
-/obj/item/radio/intercom/directional/east,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"rsz" = (
-/obj/structure/chair/wood{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"rsL" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"rsT" = (
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{
- dir = 4
- },
-/obj/item/paper{
- default_raw_text = "Once you have gas coming in from the SM to the containment chamber, you'll need to cool it.-
To set up the waste gas cooling loop, follow these steps: 1. Wrench in the plasma can. 2. Turn on the waste Cooling Gas pump and set the thermomachines to cold. 3. Set up the scrubbers in the chamber using the air alarm. 4. Turn on the filter to the canisters or replace it. 5. Turn on the Supermatter Waste To Port pump. Once everything on that list is complete, make sure that gas isn't building up inside the chamber or the pipes and you are done.";
- name = "HOW TO SET UP THE SM WASTE"
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"rsW" = (
-/turf/open/floor/carpet/blue,
-/area/station/maintenance/floor3/port/aft)
-"rsY" = (
-/obj/machinery/button/door/directional/north{
- id = "aband_armour";
- name = "Armoury Shutters"
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"rtb" = (
-/obj/machinery/conveyor{
- id = "coffinbelt"
- },
-/obj/structure/plasticflaps/opaque,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"rtc" = (
-/obj/effect/spawner/structure/window/hollow/end,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"rti" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"rtl" = (
-/turf/closed/wall/r_wall,
-/area/station/science/xenobiology/hallway)
-"rtm" = (
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"rtv" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"rtB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"rtD" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/warning,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"rtH" = (
-/obj/machinery/vending/boozeomat,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"rtL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"rtS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"rtV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/entry)
-"rua" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"ruo" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"ruU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sign/poster/random/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"rve" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"rvD" = (
-/obj/structure/sink/directional/south,
-/obj/structure/mirror/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"rvL" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor2/port/fore)
-"rwc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/moisture_trap,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/mineral/plastitanium,
-/area/station/maintenance/floor2/starboard)
-"rwh" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"rwj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured_corner{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"rwn" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/hallway/secondary/entry)
-"rwq" = (
-/obj/structure/cable,
-/obj/machinery/door/airlock/grunge{
- name = "Prison Showers"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plastic,
-/area/station/security/prison)
-"rws" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 8
- },
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"rwv" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"rwG" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/camera/directional/north{
- c_tag = "Science - Foyer #4"
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"rwM" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"rwN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"rwY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/modular_computer/preset/civilian{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"rxa" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"rxe" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/structure/chair{
- dir = 4
- },
-/obj/machinery/light/red/dim/directional/north,
-/obj/item/scalpel,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"rxg" = (
-/obj/effect/spawner/random/vending/colavend,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"rxi" = (
-/obj/item/stack/sheet/animalhide/human,
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"rxn" = (
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"rxq" = (
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"rxz" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"rxJ" = (
-/obj/structure/chair/pew/left{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"rxL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"rxS" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/trash/soap,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"rxZ" = (
-/obj/item/storage/toolbox/maint_kit,
-/obj/effect/spawner/random/junk_shell,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"ryh" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"ryi" = (
-/obj/item/shard,
-/obj/structure/chair{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"rym" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/structure/tank_dispenser{
- pixel_x = -1
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/office)
-"rys" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"ryu" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"ryx" = (
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/room4)
-"ryz" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"ryA" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/tcommsat/computer)
-"ryE" = (
-/obj/effect/turf_decal/trimline/blue/corner,
-/obj/effect/turf_decal/trimline/blue/arrow_cw{
- dir = 9
- },
-/obj/machinery/flasher/directional/west{
- id = "hopflash"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"ryQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"ryX" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"rza" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 9
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 6
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"rze" = (
-/turf/closed/wall,
-/area/station/cargo/lobby)
-"rzg" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 6
- },
-/obj/machinery/computer/records/security{
- dir = 1
- },
-/obj/machinery/status_display/evac/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"rzu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/holopad,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron,
-/area/station/command/bridge)
-"rzA" = (
-/obj/machinery/atmospherics/components/trinary/filter{
- dir = 4
- },
-/obj/effect/turf_decal/box,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"rzI" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/chair/stool/bar/directional/east,
-/obj/machinery/holopad,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"rzK" = (
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit)
-"rzT" = (
-/obj/effect/spawner/random/structure/table,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"rzW" = (
-/obj/effect/turf_decal/siding/white{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/large,
-/area/station/command/heads_quarters/rd)
-"rAe" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"rAm" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{
- dir = 5
- },
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"rAu" = (
-/obj/structure/cable,
-/obj/machinery/computer/operating{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"rAv" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 10
- },
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"rAy" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"rAE" = (
-/obj/machinery/computer/records/security{
- dir = 4
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/red/filled,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"rAP" = (
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"rBm" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/aft)
-"rBr" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"rBt" = (
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"rBB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/entertainment/drugs,
-/obj/structure/closet/crate/preopen,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"rBC" = (
-/obj/structure/table/wood/fancy/red,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"rBF" = (
-/obj/structure/stairs/north,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"rBI" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Laboratory B"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"rBK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible,
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/engine/air,
-/area/station/engineering/supermatter/waste)
-"rBP" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/lobby)
-"rBT" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"rBU" = (
-/obj/structure/rack,
-/obj/machinery/button/door/directional/south{
- id = "armory";
- name = "Armory Shutters";
- req_access = list("armory")
- },
-/obj/item/gun/energy/temperature/security,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"rBW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/toy/cattoy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"rBY" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"rCa" = (
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos)
-"rCc" = (
-/obj/machinery/computer/records/security,
-/obj/item/radio/intercom/directional/north,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"rCe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"rCj" = (
-/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
-/obj/effect/turf_decal/bot,
-/obj/structure/sign/warning/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"rCk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/courtroom)
-"rCp" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{
- dir = 4
- },
-/turf/open/space/basic,
-/area/space/nearstation)
-"rCq" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"rCv" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"rCx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/aft)
-"rCz" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"rCF" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/tile/dark_blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/item/reagent_containers/cup/watering_can,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/security/prison/garden)
-"rCK" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"rCM" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/fore)
-"rCN" = (
-/obj/machinery/atmospherics/components/trinary/filter/flipped/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"rCO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/engine_smes)
-"rCQ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/chapel)
-"rCR" = (
-/obj/structure/transit_tube/horizontal{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"rCS" = (
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/construction)
-"rCW" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"rDh" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"rDD" = (
-/obj/structure/transit_tube/curved/flipped{
- dir = 8
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"rDF" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"rDK" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"rDL" = (
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"rDQ" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"rDR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/aft)
-"rDZ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"rEa" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"rEm" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-2";
- location = "1-1"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"rEp" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/turf_decal/siding/white/end{
- dir = 4
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/cryo)
-"rES" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"rEU" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"rFg" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"rFy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/sign/warning/vacuum/external{
- pixel_y = -32
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"rFC" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"rFG" = (
-/obj/machinery/light/small/dim/directional/north,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/port/fore)
-"rFW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"rGb" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Security- Central"
- },
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"rGd" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"rGe" = (
-/obj/machinery/camera{
- c_tag = "Engineering Foyer #3";
- dir = 8;
- network = list("ss13","engine")
- },
-/obj/structure/chair/sofa/bench/right,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/lobby)
-"rGl" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"rGv" = (
-/obj/structure/table/wood,
-/obj/item/knife,
-/obj/machinery/light/directional/east,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"rGC" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/medical/glass{
- name = "Medical Front Desk"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"rGI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"rGL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"rGP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"rGZ" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/recharger,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"rHf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"rHg" = (
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor3/fore)
-"rHq" = (
-/obj/machinery/space_heater,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/bot,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"rHr" = (
-/obj/structure/grille/broken,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"rHy" = (
-/obj/machinery/vending/wardrobe/atmos_wardrobe,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"rHA" = (
-/obj/effect/turf_decal/arrows/white{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"rHP" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"rHX" = (
-/obj/effect/turf_decal/bot_white/right,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"rHY" = (
-/obj/structure/table,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 4
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"rIa" = (
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/corner,
-/area/station/security/brig)
-"rIb" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 5
- },
-/obj/effect/turf_decal/siding/thinplating/dark/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"rIc" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"rId" = (
-/obj/structure/disposalpipe/junction{
- dir = 2
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"rIo" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor4/starboard/aft)
-"rIp" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"rIt" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"rIy" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"rIS" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/disposal/incinerator)
-"rIU" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"rJb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/bodypart/arm/right/mushroom,
-/obj/item/bodypart/leg/right/mushroom,
-/obj/item/bodypart/head/mushroom,
-/obj/structure/closet/crate/freezer,
-/obj/item/bodypart/arm/right/alien,
-/obj/effect/spawner/random/medical/memeorgans,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"rJv" = (
-/obj/structure/table/glass,
-/obj/item/storage/box/rxglasses,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"rJy" = (
-/turf/open/floor/pod,
-/area/station/cargo/miningdock)
-"rJC" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"rJF" = (
-/turf/closed/wall,
-/area/station/security/prison/safe)
-"rJI" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/teleporter)
-"rJO" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/warning/radiation{
- pixel_y = 32
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"rJR" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"rJU" = (
-/obj/structure/chair/stool/bar/directional/east,
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"rKc" = (
-/obj/structure/cable,
-/obj/machinery/mining_weather_monitor/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit)
-"rKg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"rKk" = (
-/obj/structure/table/wood,
-/obj/item/folder/red,
-/obj/item/folder/red,
-/obj/item/folder/red,
-/obj/item/clothing/glasses/sunglasses/big,
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"rKB" = (
-/obj/structure/railing{
- dir = 9
- },
-/obj/item/toy/seashell,
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"rKC" = (
-/obj/machinery/door/airlock/external{
- name = "Security External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/security/eva)
-"rKG" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/flashlight/flare,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"rKJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"rKM" = (
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"rKQ" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"rKV" = (
-/obj/machinery/bluespace_vendor/directional/north,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"rKX" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/security/execution/transfer)
-"rLb" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/aft)
-"rLd" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"rLf" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"rLh" = (
-/obj/machinery/camera/directional/north,
-/obj/structure/bookcase/random,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"rLl" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/machinery/newscaster/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"rLs" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"rLx" = (
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"rLB" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 6
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"rLE" = (
-/obj/structure/rack,
-/obj/item/stack/sheet/iron/five,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"rLM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"rLR" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"rLU" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"rMc" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"rMo" = (
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/microwave,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"rMq" = (
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor1/fore)
-"rMu" = (
-/obj/effect/spawner/random/trash/soap{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"rMx" = (
-/obj/machinery/conveyor{
- id = "mailbelt"
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"rMC" = (
-/obj/effect/turf_decal/siding/white/corner{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"rMD" = (
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/entry)
-"rMM" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor3/fore)
-"rMR" = (
-/obj/structure/closet/l3closet/virology,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"rMX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"rMY" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"rNa" = (
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sink/kitchen/directional/west,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"rNb" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"rNg" = (
-/obj/machinery/vending/modularpc,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"rNo" = (
-/turf/closed/wall,
-/area/station/service/chapel)
-"rNG" = (
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/textured_corner{
- dir = 8
- },
-/area/station/cargo/office)
-"rNL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"rNN" = (
-/obj/effect/mapping_helpers/airlock/access/all/command/captain,
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/fore)
-"rNO" = (
-/obj/structure/chair/sofa/bench{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"rNT" = (
-/obj/structure/table/reinforced,
-/obj/item/folder/red,
-/obj/item/pen,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"rOj" = (
-/obj/effect/turf_decal/tile/blue/anticorner,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/ai_monitored/turret_protected/ai)
-"rOm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"rOB" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"rOJ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"rOW" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/machinery/ai_slipper{
- uses = 10
- },
-/turf/open/floor/iron/dark/side,
-/area/station/ai_monitored/turret_protected/ai)
-"rPi" = (
-/turf/closed/wall,
-/area/station/cargo/office)
-"rPr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor4/aft)
-"rPw" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/landmark/start/janitor,
-/obj/machinery/light_switch/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"rPA" = (
-/obj/effect/spawner/structure/window/hollow/directional,
-/obj/machinery/duct,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"rPC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"rPF" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"rPG" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"rPK" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Security - Showers"
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"rPV" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"rPX" = (
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"rPZ" = (
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"rQa" = (
-/obj/item/shard,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"rQc" = (
-/obj/machinery/computer/camera_advanced/xenobio{
- dir = 4
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"rQd" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 9
- },
-/obj/item/kirbyplants/random,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/server)
-"rQf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"rQh" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"rQj" = (
-/obj/effect/turf_decal/trimline/neutral/end{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"rQl" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"rQx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/atmospherics/components/binary/pump/on/supply/hidden/layer4{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"rQG" = (
-/obj/machinery/chem_master{
- name = "CytoMaster 3000"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/science/cytology)
-"rQV" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"rRd" = (
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/department/engine/atmos)
-"rRf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"rRh" = (
-/obj/structure/closet/radiation,
-/obj/machinery/atmospherics/pipe/smart/simple/orange/visible,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"rRp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"rRu" = (
-/obj/structure/table,
-/obj/item/holosign_creator/robot_seat/restaurant{
- pixel_y = -5
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"rRB" = (
-/obj/effect/turf_decal/stripes,
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"rRC" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"rRP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"rRS" = (
-/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible,
-/obj/machinery/meter,
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos)
-"rRU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/checkpoint)
-"rRX" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"rSc" = (
-/obj/effect/spawner/random/maintenance,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"rSk" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/command_all,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/smooth_corner{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"rSu" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"rSw" = (
-/turf/open/misc/asteroid/snow/standard_air{
- icon_state = "snow1"
- },
-/area/station/maintenance/floor2/port/aft)
-"rSC" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/components/binary/pump/on/supply/visible/layer4{
- name = "Airmix to Distro"
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"rSD" = (
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"rSJ" = (
-/obj/structure/chair/plastic{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"rSK" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"rSN" = (
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"rSS" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/wood{
- name = "Dining Room"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/kitchen/diner)
-"rSU" = (
-/obj/structure/chair/comfy/carp{
- dir = 1
- },
-/obj/effect/decal/cleanable/confetti,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"rSY" = (
-/obj/structure/chair/comfy/brown{
- dir = 4
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"rTa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"rTg" = (
-/obj/item/paper_bin,
-/obj/structure/table/wood/fancy/royalblack,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/carpet/neon/simple/white,
-/area/station/commons/dorms/room3)
-"rTk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/starboard/fore)
-"rTt" = (
-/obj/machinery/space_heater,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"rTv" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"rTw" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"rTz" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"rTB" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"rTE" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"rTL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"rTV" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/pen/blue{
- pixel_x = 5;
- pixel_y = 5
- },
-/obj/item/pen/red,
-/obj/item/pen/fountain{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"rUh" = (
-/obj/effect/turf_decal/stripes{
- dir = 10
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"rUi" = (
-/obj/machinery/ai_slipper{
- uses = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"rUD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/scientist,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"rUG" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/any/service/theatre,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/aft)
-"rUH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"rUJ" = (
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/structure/table,
-/obj/item/storage/box/monkeycubes{
- pixel_x = 4
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"rUN" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/railing/corner/end/flip,
-/obj/structure/railing/corner/end,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"rUW" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/trimline/yellow,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"rVi" = (
-/obj/machinery/firealarm/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"rVk" = (
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"rVo" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"rVy" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"rVI" = (
-/obj/structure/rack,
-/obj/item/flashlight,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"rVJ" = (
-/obj/machinery/door/airlock/hatch{
- name = "Ordnance Maintenance"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/science/ordnance_storage,
-/obj/machinery/door/firedoor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"rVN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"rVQ" = (
-/turf/closed/wall,
-/area/station/service/library/private)
-"rVY" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"rWa" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"rWm" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"rWo" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"rWu" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock{
- name = "Service Hall"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"rWx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/aft)
-"rWz" = (
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 1
- },
-/obj/machinery/flasher/directional/west{
- id = "secentranceflasher"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"rWT" = (
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/rd)
-"rWV" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/pod,
-/area/station/hallway/secondary/entry)
-"rXg" = (
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"rXp" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/random/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"rXs" = (
-/obj/structure/table,
-/obj/item/reagent_containers/condiment/peppermill{
- pixel_x = 3
- },
-/obj/item/reagent_containers/condiment/saltshaker{
- pixel_x = -3
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"rXx" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/table/wood,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"rXC" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 6
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"rXH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"rXJ" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"rXL" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"rXY" = (
-/obj/machinery/newscaster/directional/east,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/trimline/dark_blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"rYf" = (
-/obj/structure/closet/secure_closet/security/sec,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"rYq" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"rYw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/maintenance/solars/starboard/fore)
-"rYA" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"rYK" = (
-/obj/machinery/door/airlock/hatch{
- name = "Wine Cellar"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"rYR" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/machinery/camera/directional/north{
- c_tag = "AI Upload Foyer";
- network = list("aiupload")
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"rYS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/command/bridge)
-"rZb" = (
-/obj/structure/chair/comfy/black,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"rZe" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate/trashcart/filled,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"rZi" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"rZl" = (
-/obj/structure/chair/stool{
- dir = 8
- },
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"rZn" = (
-/obj/structure/reagent_dispensers/watertank/high,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"rZC" = (
-/obj/structure/showcase/cyborg/old{
- dir = 4;
- pixel_x = -9;
- pixel_y = 2
- },
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/power/terminal,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"rZS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/table/wood,
-/obj/item/clipboard,
-/obj/machinery/light/directional/north,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"rZV" = (
-/obj/effect/turf_decal/tile/blue/half,
-/obj/machinery/light/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/command/teleporter)
-"rZX" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 5
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/iron/telecomms,
-/area/station/tcommsat/server)
-"sab" = (
-/obj/machinery/atmospherics/components/binary/valve/digital{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/stripes/white/corner,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"sal" = (
-/obj/structure/cable,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"sar" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"sat" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"sav" = (
-/obj/effect/turf_decal/box/corners,
-/obj/structure/sign/warning/biohazard/directional/east,
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"saA" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/machinery/vending/tool,
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/iron/dark/textured_corner,
-/area/station/engineering/lobby)
-"saB" = (
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"saG" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"saW" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/engine/vacuum,
-/area/station/engineering/atmos)
-"sbm" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"sbn" = (
-/obj/structure/barricade/sandbags,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"sbw" = (
-/obj/item/storage/toolbox/emergency,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"sby" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/machinery/hydroponics/constructable,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"sbB" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/obj/item/fuel_pellet{
- pixel_x = -4;
- pixel_y = -2
- },
-/obj/item/fuel_pellet,
-/obj/item/fuel_pellet{
- pixel_x = 4;
- pixel_y = 2
- },
-/obj/structure/rack,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/cargo/drone_bay)
-"sbI" = (
-/obj/structure/flora/bush/snow/style_random,
-/turf/open/misc/snow/actually_safe{
- icon_state = "snow5"
- },
-/area/station/hallway/floor2/fore)
-"sbK" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"sbU" = (
-/obj/structure/bed{
- dir = 4
- },
-/obj/effect/decal/cleanable/glass,
-/obj/effect/spawner/random/entertainment/cigarette_pack,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"scc" = (
-/obj/structure/fluff/paper/stack{
- desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging."
- },
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"scn" = (
-/obj/machinery/netpod,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/cargo/bitrunning/den)
-"sct" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/left/directional/west{
- name = "Warden's Desk"
- },
-/obj/item/folder/red,
-/obj/item/pen,
-/obj/structure/cable,
-/obj/machinery/door/window/brigdoor/right/directional/east{
- name = "Warden's Desk";
- req_access = list("armory")
- },
-/turf/open/floor/plating,
-/area/station/security/warden)
-"scu" = (
-/obj/structure/railing/corner,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"scv" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/disposal)
-"scx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"scD" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/suit_storage_unit/medical,
-/obj/structure/sign/poster/official/cleanliness/directional/east,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"scG" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"scH" = (
-/obj/structure/table,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/folder/blue,
-/obj/item/folder/blue{
- pixel_y = 2
- },
-/obj/item/clothing/glasses/sunglasses/big,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"scI" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"scK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"sda" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"sdh" = (
-/obj/structure/cable,
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"sdi" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"sdo" = (
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/obj/machinery/gravity_generator/main,
-/turf/open/floor/iron,
-/area/station/engineering/gravity_generator)
-"sds" = (
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/machinery/newscaster/directional/north,
-/obj/item/kirbyplants/random,
-/turf/open/floor/wood/parquet,
-/area/station/hallway/floor4/aft)
-"sdA" = (
-/obj/effect/turf_decal/trimline/white/filled/corner,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"sdB" = (
-/obj/structure/table,
-/obj/item/stack/sheet/rglass{
- amount = 50;
- pixel_x = 3
- },
-/obj/item/stack/sheet/iron/fifty{
- pixel_x = -5
- },
-/obj/item/stack/sheet/iron/fifty{
- pixel_x = -5
- },
-/obj/item/stack/sheet/rglass{
- amount = 50;
- pixel_x = 3
- },
-/obj/item/grenade/chem_grenade/smart_metal_foam{
- pixel_x = 4;
- pixel_y = 2
- },
-/obj/item/grenade/chem_grenade/smart_metal_foam{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/grenade/chem_grenade/smart_metal_foam{
- pixel_y = 4
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"sdI" = (
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"sdL" = (
-/obj/machinery/door/airlock/engineering/glass{
- name = "Engineering"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "engimain"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/construction,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"sdN" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"sdO" = (
-/obj/item/stack/sheet/iron,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"sdQ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/hallway/secondary/entry)
-"sdX" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 5
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"sdZ" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/siding/white,
-/obj/machinery/button/crematorium{
- id = "crematorium_chapel";
- pixel_y = -28
- },
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"see" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"sei" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"sfe" = (
-/obj/structure/chair/comfy/carp,
-/obj/effect/decal/cleanable/glitter,
-/obj/machinery/light/blacklight/directional/east,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"sff" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor2/starboard)
-"sfg" = (
-/obj/docking_port/stationary{
- dwidth = 6;
- height = 6;
- name = "Cargo Bay";
- shuttle_id = "cargo_home";
- width = 11
- },
-/turf/open/floor/pod,
-/area/station/cargo/storage)
-"sfk" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"sfv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"sfw" = (
-/obj/effect/spawner/random/maintenance,
-/obj/structure/rack,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"sfz" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal/incinerator)
-"sfB" = (
-/obj/effect/landmark/start/warden,
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/security/brig)
-"sfG" = (
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"sfM" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/aft)
-"sfR" = (
-/obj/machinery/photocopier,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"sfS" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"sfT" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/chair/sofa/middle/brown,
-/mob/living/carbon/human/species/monkey/punpun,
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"sgc" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/firealarm/directional/south,
-/obj/machinery/camera/directional/south{
- c_tag = "Cytology - Lab"
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"sgm" = (
-/obj/structure/chair/office{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"sgF" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/closet/secure_closet/medical3,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"sgH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/entertainment/drugs,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"sgJ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"sgL" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/turf/open/floor/iron/textured_half,
-/area/station/hallway/secondary/entry)
-"sgR" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"sgT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sink/directional/east,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"shd" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"shi" = (
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"shk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/start/scientist,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"shu" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"shy" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"shz" = (
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/openspace,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"shB" = (
-/obj/structure/reagent_dispensers/plumbed,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"shE" = (
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"shV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"shW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/service/lawoffice)
-"sif" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/lab)
-"sih" = (
-/obj/structure/table,
-/obj/item/clothing/glasses/welding,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"sil" = (
-/obj/item/restraints/legcuffs/beartrap/prearmed,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"sim" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/project)
-"siq" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"siu" = (
-/obj/structure/chair/sofa/bench/right,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"siA" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible,
-/obj/structure/cable,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"siB" = (
-/turf/open/floor/engine,
-/area/station/science/auxlab/firing_range)
-"siK" = (
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"siT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/security/prison/work)
-"siY" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"sjc" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"sjf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"sjs" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/ce,
-/obj/machinery/door/airlock/engineering{
- name = "Chief Engineer's Desk"
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"sjD" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/sorting)
-"sjH" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/access/any/service/theatre,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"sjW" = (
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/five,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"sjX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"ske" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"skj" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"skv" = (
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"skz" = (
-/obj/structure/chair/sofa/bench/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"skD" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"skM" = (
-/obj/structure/table/wood,
-/obj/machinery/fax{
- fax_name = "Quartermaster's Office";
- name = "Quartermaster's Fax Machine"
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/qm)
-"skQ" = (
-/obj/structure/table,
-/obj/machinery/recharger,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"skU" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"skW" = (
-/obj/effect/decal/cleanable/glass,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"slk" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"sln" = (
-/obj/structure/chair/wood,
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"slv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"sly" = (
-/obj/structure/table/reinforced,
-/obj/item/pipe_dispenser,
-/obj/item/pipe_dispenser,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 1
- },
-/area/station/engineering/supermatter/room)
-"slz" = (
-/obj/structure/bookcase/random/fiction,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"slC" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/cable,
-/mob/living/basic/parrot/poly,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/command/heads_quarters/ce)
-"slI" = (
-/obj/item/radio/intercom/directional/west,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"slP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"slQ" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-13";
- location = "2-12"
- },
-/obj/effect/turf_decal/tile/purple/anticorner/contrasted,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"smi" = (
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"smq" = (
-/obj/machinery/button/door/directional/south{
- id = "dorms_3_bolts";
- name = "Dorms 3 Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"smv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"smx" = (
-/obj/structure/table,
-/obj/item/pai_card{
- pixel_y = 6
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"smJ" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"smU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/science/research,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/science{
- name = "Firing Range"
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"smY" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"snd" = (
-/turf/closed/wall,
-/area/station/maintenance/solars/starboard/aft)
-"sng" = (
-/obj/structure/table,
-/obj/machinery/microwave,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"sno" = (
-/obj/structure/table/reinforced/rglass,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/item/stack/medical/suture/emergency{
- pixel_y = 5;
- pixel_x = -5
- },
-/obj/item/stack/medical/ointment{
- pixel_y = -5;
- pixel_x = 5
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/lobby)
-"snp" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/courtroom)
-"snI" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"snL" = (
-/obj/structure/chair/comfy/brown{
- dir = 8
- },
-/obj/effect/landmark/start/captain,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"snO" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/line,
-/obj/effect/turf_decal/trimline/white/line{
- dir = 1
- },
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"snU" = (
-/obj/structure/closet/crate,
-/obj/effect/spawner/random/maintenance/three,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"soq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-17";
- location = "1-16"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"sow" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"soz" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 6
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"soI" = (
-/obj/structure/table/wood/poker,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/effect/spawner/random/entertainment/deck,
-/obj/machinery/camera/autoname/directional/south,
-/obj/item/toy/plush/slimeplushie{
- name = "stress toy"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"soN" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"soP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"soQ" = (
-/obj/machinery/telecomms/hub/preset,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"soZ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"spa" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"spb" = (
-/obj/machinery/newscaster/directional/south,
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/service/library/private)
-"spd" = (
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"sph" = (
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"spl" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/medical_all,
-/obj/effect/turf_decal/tile/blue/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"spr" = (
-/turf/closed/wall/mineral/titanium/nodiagonal,
-/area/station/maintenance/floor2/starboard/aft)
-"spE" = (
-/obj/structure/rack,
-/obj/item/circuitboard/machine/telecomms/broadcaster,
-/obj/item/circuitboard/machine/telecomms/broadcaster,
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/storage/tcomms)
-"spF" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/flip,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"spI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"spT" = (
-/obj/structure/mirror/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"sqi" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"sqj" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/sign/poster/contraband/random/directional/east,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"sqv" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"sqy" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/left/directional/south{
- name = "Cryo Checkpoint";
- req_access = list("brig")
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/secondary/entry)
-"sqG" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"srf" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/shieldgen,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"srl" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/obj/machinery/door/window/right/directional/north{
- name = "Butterfly Garden";
- req_access = list("hydroponics")
- },
-/turf/open/misc/sandy_dirt,
-/area/station/hallway/secondary/entry)
-"srz" = (
-/obj/machinery/door/airlock/atmos{
- name = "Atmospherics"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"srC" = (
-/obj/effect/turf_decal/trimline/white/arrow_ccw,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"srK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"srO" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/fore)
-"srP" = (
-/obj/structure/closet/toolcloset,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"srS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen/diner)
-"ssa" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"ssi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"ssj" = (
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"ssm" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"ssr" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/medical/psychology)
-"ssw" = (
-/obj/structure/table/glass,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"ssx" = (
-/obj/item/stack/medical/suture/emergency,
-/obj/item/stack/medical/gauze/improvised{
- pixel_y = 12
- },
-/obj/structure/table,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"ssy" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"ssz" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"ssB" = (
-/obj/structure/table/optable,
-/obj/machinery/defibrillator_mount/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"ssL" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Research and Development"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "bridge"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"ssM" = (
-/obj/machinery/light/red/dim/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"ssP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"ssY" = (
-/obj/item/kirbyplants/random,
-/obj/effect/turf_decal/trimline/green/arrow_ccw,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"stj" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit)
-"stl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/broken/directional/west,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"stp" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"stx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"stS" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"stV" = (
-/obj/structure/girder/displaced,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"stZ" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/grille,
-/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south,
-/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"sua" = (
-/obj/machinery/light/red/dim/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"sui" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"sul" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"sum" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"sup" = (
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 4
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"sus" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"sut" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grime,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"suu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"suv" = (
-/obj/machinery/processor/slime,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"suB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"suD" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"suM" = (
-/obj/structure/stairs/north,
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/hop)
-"suP" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"suR" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"suT" = (
-/obj/machinery/status_display/door_timer{
- id = "cell-3";
- name = "Floor 3 Cell";
- pixel_y = 32
- },
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"suZ" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/structure/window/spawner/directional/east,
-/obj/structure/closet/secure_closet/engineering_electrical,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/engineering/lobby)
-"svs" = (
-/obj/machinery/vending/wallmed/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit)
-"svu" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/structure/electrified_grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"svy" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/aft)
-"svI" = (
-/obj/machinery/door/poddoor/incinerator_ordmix,
-/turf/open/openspace,
-/area/station/science/ordnance/burnchamber)
-"svK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"svR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair/plastic{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"svW" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/obj/machinery/computer/security{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"svX" = (
-/turf/closed/wall,
-/area/station/commons/locker)
-"swk" = (
-/obj/item/kirbyplants/random,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"swm" = (
-/obj/machinery/air_sensor/nitrogen_tank,
-/obj/effect/turf_decal/trimline/red/line,
-/turf/open/floor/engine/n2,
-/area/station/engineering/atmos)
-"swn" = (
-/obj/machinery/light/directional/north,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"sws" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"swI" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"swK" = (
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"swM" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate/freezer,
-/obj/item/stack/medical/suture,
-/obj/item/stack/medical/gauze/twelve,
-/obj/item/stack/medical/bone_gel,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"swT" = (
-/turf/closed/wall/r_wall,
-/area/station/science/circuits)
-"sxb" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/obj/effect/turf_decal/arrows{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/cargo/bitrunning/den)
-"sxe" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/commons/locker)
-"sxg" = (
-/obj/machinery/computer/atmos_control/carbon_tank,
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos)
-"sxi" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 10
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"sxl" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/camera/directional/west{
- c_tag = "Science - Circuitry Lab"
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"sxm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"sxo" = (
-/turf/closed/wall,
-/area/station/service/chapel/office)
-"sxt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"sxv" = (
-/obj/effect/turf_decal/siding/wood/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"sxw" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/window/spawner/directional/south,
-/obj/structure/window/spawner/directional/east,
-/obj/structure/window/spawner/directional/north,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"sxy" = (
-/obj/effect/spawner/random/structure/chair_maintenance{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"sxA" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"sxK" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"sxZ" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"syd" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"syi" = (
-/obj/effect/turf_decal/siding/wideplating_new/corner,
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 1
- },
-/turf/open/floor/engine/airless,
-/area/station/solars/port/aft)
-"syt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"syz" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"syE" = (
-/obj/machinery/door/airlock/hatch{
- name = "Fighter Airlock"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/mineral/plastitanium/red,
-/area/station/maintenance/floor4/starboard/aft)
-"syH" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp,
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/window/reinforced/tinted/spawner/directional/west,
-/obj/structure/window/reinforced/tinted/spawner/directional/north,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"syP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/aft)
-"syV" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/closet/firecloset,
-/obj/machinery/duct,
-/obj/machinery/light/cold/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"szb" = (
-/obj/structure/chair/sofa/corp/right,
-/obj/machinery/light/directional/north,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"szd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/misc/dirt/jungle,
-/area/station/service/hydroponics/garden/abandoned)
-"szl" = (
-/obj/machinery/computer/slot_machine,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"szn" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/food_or_drink/cups,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"szo" = (
-/obj/structure/closet/secure_closet/brig{
- name = "Prisoner Locker"
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"szt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"szx" = (
-/obj/item/soap,
-/obj/machinery/shower/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"szz" = (
-/obj/machinery/telecomms/bus/preset_two,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"szC" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port)
-"szD" = (
-/obj/structure/table,
-/obj/item/storage/box/evidence{
- pixel_x = 9;
- pixel_y = 8
- },
-/obj/item/hand_labeler{
- pixel_x = -8;
- pixel_y = 10
- },
-/obj/item/storage/box/evidence{
- pixel_x = 9;
- pixel_y = 8
- },
-/obj/item/storage/box/evidence{
- pixel_x = 9;
- pixel_y = 8
- },
-/obj/item/storage/box/prisoner{
- pixel_x = 9
- },
-/obj/machinery/recharger{
- pixel_x = -5;
- pixel_y = -3
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"szK" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"szS" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"szU" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"sAa" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"sAi" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 1
- },
-/obj/effect/decal/cleanable/blood/drip,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"sAr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"sAv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer4{
- dir = 8
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos)
-"sAw" = (
-/obj/machinery/computer/station_alert{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"sAz" = (
-/obj/machinery/light/built/directional/north,
-/obj/item/light/tube/broken,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"sAA" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/machinery/door/airlock/engineering{
- name = "Power Generation Experimentation"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"sAH" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/supermatter/waste)
-"sAI" = (
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"sAJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/machinery/door/airlock/grunge{
- name = "Laundry Room"
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/cafeteria,
-/area/station/security/prison)
-"sAK" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"sBb" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/newscaster/directional/east,
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"sBp" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/spawner/random/structure/furniture_parts,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"sBt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"sBx" = (
-/obj/structure/bonfire,
-/obj/structure/cable,
-/obj/machinery/light/broken/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"sBy" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/aft)
-"sBE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"sBF" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"sBI" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"sBJ" = (
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"sBK" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/obj/structure/railing/corner/end{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"sBN" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/aft)
-"sBT" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"sBV" = (
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/table,
-/obj/structure/disposalpipe/segment,
-/obj/item/stamp/head/hos,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"sCp" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/medical/patients_rooms)
-"sCu" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"sCv" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"sCz" = (
-/obj/item/kirbyplants/photosynthetic,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"sCH" = (
-/obj/structure/frame/machine,
-/obj/item/circuitboard/machine/telecomms/relay,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"sCO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/structure/cable,
-/obj/machinery/photobooth/security,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"sDg" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"sDo" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"sDp" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 5
- },
-/obj/machinery/firealarm/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"sDE" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/recharger,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/mineral/plastitanium/red,
-/area/station/maintenance/floor4/starboard/aft)
-"sDL" = (
-/obj/structure/table,
-/obj/item/storage/medkit/emergency,
-/obj/item/clothing/mask/breath,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"sDT" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"sEd" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"sEk" = (
-/obj/effect/turf_decal/tile/red/anticorner/contrasted{
- dir = 4
- },
-/obj/machinery/flasher/directional/east{
- id = "secentranceflasher"
- },
-/obj/machinery/camera/directional/east{
- c_tag = "Security - Aft Entrance"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"sEl" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/bot_white{
- color = "#74b2d3"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"sEt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/stairs/old,
-/area/station/service/theater)
-"sEA" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"sEE" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/machinery/light/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"sEK" = (
-/obj/item/chair/stool/bar,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"sEL" = (
-/obj/machinery/rnd/production/circuit_imprinter/department/science,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/science/auxlab)
-"sEP" = (
-/obj/item/toy/plush/bubbleplush,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/fakebasalt,
-/area/station/maintenance/floor3/port)
-"sEU" = (
-/obj/structure/closet/firecloset,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"sFa" = (
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"sFe" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/curtain/cloth/fancy/mechanical/start_closed{
- id = "theater"
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"sFf" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/curtain/cloth/fancy/mechanical/start_closed{
- id = "theater"
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"sFt" = (
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"sFz" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"sFG" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/paramedic)
-"sFJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/fore)
-"sFQ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"sFR" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 6
- },
-/obj/structure/window/reinforced/plasma/spawner/directional/south,
-/turf/open/floor/engine/airless,
-/area/station/science/ordnance/freezerchamber)
-"sGb" = (
-/obj/structure/sign/nanotrasen,
-/turf/closed/wall/r_wall,
-/area/station/command/bridge)
-"sGu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"sGw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"sGB" = (
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"sGN" = (
-/obj/item/stack/ducts/fifty,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"sGR" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"sGU" = (
-/obj/structure/table/wood,
-/obj/item/folder{
- pixel_x = -5;
- pixel_y = 1
- },
-/obj/effect/turf_decal/siding/yellow{
- dir = 1
- },
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"sGW" = (
-/obj/structure/closet/secure_closet/freezer/meat,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"sGZ" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"sHd" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/table,
-/obj/machinery/vending/wallmed/directional/north,
-/obj/machinery/duct,
-/obj/item/stack/medical/gauze,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"sHq" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"sHv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"sHB" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"sHG" = (
-/obj/item/stack/sheet/mineral/plasma/thirty,
-/obj/item/wrench,
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/table,
-/obj/machinery/requests_console/directional/south{
- department = "Telecomms Admin";
- name = "Telecomms Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/obj/effect/mapping_helpers/requests_console/information,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/plating,
-/area/station/tcommsat/computer)
-"sHJ" = (
-/obj/structure/table,
-/obj/item/folder/blue{
- pixel_x = -18;
- pixel_y = 3
- },
-/obj/item/paper_bin{
- pixel_x = 3;
- pixel_y = 7
- },
-/obj/item/pen{
- pixel_x = 3;
- pixel_y = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"sHL" = (
-/obj/structure/table/reinforced,
-/obj/item/pipe_dispenser,
-/obj/item/pipe_dispenser,
-/turf/open/floor/iron/dark,
-/area/station/engineering/supermatter)
-"sHN" = (
-/obj/structure/sign/directions/medical/directional/north,
-/obj/structure/sign/directions/science/directional/north{
- pixel_y = 24
- },
-/obj/structure/sign/directions/upload/directional/north{
- pixel_y = 40
- },
-/obj/structure/ladder,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor1/fore)
-"sHP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"sHQ" = (
-/obj/structure/table,
-/obj/item/analyzer{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/bot,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/wrench{
- pixel_x = -2;
- pixel_y = 5
- },
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"sHY" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"sId" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/curtain/cloth/fancy/mechanical/start_closed{
- id = "theater"
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"sIv" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"sIx" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/fore)
-"sIz" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"sIA" = (
-/obj/machinery/light/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/kitchen/diner)
-"sIB" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- elevator_mode = 1;
- transport_linked_id = "fore_vator"
- },
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"sIE" = (
-/obj/machinery/power/terminal,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"sIH" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/break_room)
-"sIN" = (
-/obj/structure/curtain,
-/turf/open/floor/iron/showroomfloor,
-/area/station/command/heads_quarters/qm)
-"sIT" = (
-/obj/effect/landmark/start/captain,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/duct,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/captain/private)
-"sIX" = (
-/obj/structure/barricade/sandbags,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"sJg" = (
-/obj/machinery/button/door/directional/north{
- id = "dorms_lux_1_bolts";
- name = "Luxury Dorm 1 Bolt Control";
- normaldoorcontrol = 1;
- pixel_x = 6;
- specialfunctions = 4
- },
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"sJm" = (
-/turf/closed/wall/r_wall,
-/area/station/science/ordnance/testlab)
-"sJn" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/medical/virology)
-"sJp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"sJt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"sJu" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"sJA" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"sJE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"sJK" = (
-/obj/structure/closet/secure_closet/brig{
- name = "Prisoner Locker"
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"sJM" = (
-/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{
- dir = 8
- },
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"sJO" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"sJU" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"sKa" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/structure/bed/medical/emergency,
-/obj/machinery/iv_drip,
-/obj/machinery/light/cold/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/office)
-"sKm" = (
-/turf/closed/wall,
-/area/station/medical/virology/isolation)
-"sKn" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"sKs" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"sKt" = (
-/turf/closed/wall,
-/area/station/maintenance/floor1/starboard/aft)
-"sKu" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"sKw" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/vending/wardrobe/medi_wardrobe,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"sKz" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"sKC" = (
-/obj/effect/spawner/structure/window/hollow/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"sKG" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/north,
-/obj/effect/turf_decal/trimline/neutral/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"sKI" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"sKN" = (
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"sKR" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"sKX" = (
-/obj/machinery/power/smes,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"sKZ" = (
-/obj/machinery/camera/motion/directional/west{
- c_tag = "Minisat - Aft"
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"sLe" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"sLl" = (
-/obj/effect/spawner/structure/window/hollow/end,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"sLm" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Science - Deck 3 Hall"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/structure/sign/warning/xeno_mining/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"sLE" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Security Entrance"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"sLF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/structure/extinguisher_cabinet/directional/west,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/corner{
- dir = 4
- },
-/area/station/cargo/miningdock)
-"sLI" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"sLX" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"sLY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/broken/directional/east,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/rack,
-/obj/item/stack/sheet/iron{
- amount = 30
- },
-/obj/item/stack/sheet/glass{
- amount = 30
- },
-/obj/item/stack/package_wrap,
-/obj/item/flashlight/flare,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"sMb" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"sMg" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"sMk" = (
-/obj/structure/cable,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/commons/fitness/recreation)
-"sMm" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"sMp" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"sMw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"sMx" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple/corner,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"sMB" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/landmark/start/security_officer,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"sMD" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"sMI" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/newscaster/directional/north,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"sMS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/pdapainter/supply,
-/turf/open/floor/iron/textured,
-/area/station/command/heads_quarters/qm)
-"sMY" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/starboard/aft)
-"sNa" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"sNd" = (
-/obj/structure/bed,
-/obj/item/bedsheet/rd,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"sNe" = (
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"sNq" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"sNr" = (
-/obj/machinery/conveyor{
- id = "mailbelt"
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/sorting)
-"sNE" = (
-/obj/machinery/vending/cigarette,
-/turf/open/floor/iron,
-/area/station/commons/fitness)
-"sNJ" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"sNN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/entry)
-"sOj" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"sOq" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"sOs" = (
-/obj/machinery/airalarm/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/science/lobby)
-"sOy" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"sOB" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"sOD" = (
-/obj/effect/turf_decal/trimline/brown/warning,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"sOI" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"sON" = (
-/obj/structure/closet/radiation,
-/obj/effect/turf_decal/box,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/office)
-"sOO" = (
-/obj/structure/sign/directions/security/directional/north{
- pixel_y = 40
- },
-/obj/structure/sign/directions/command/directional/north{
- pixel_y = 24
- },
-/obj/structure/sign/directions/vault/directional/north,
-/obj/structure/chair/comfy/beige,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"sOT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"sOU" = (
-/turf/open/openspace,
-/area/station/maintenance/floor4/port/aft)
-"sPg" = (
-/obj/structure/cable,
-/obj/structure/bed/dogbed/runtime,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/mob/living/basic/pet/cat/runtime,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"sPk" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/fore)
-"sPp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/button/door/directional/west{
- id = "viro-inner";
- name = "Inner Virology Lockdown";
- pixel_y = -8
- },
-/obj/machinery/button/door/directional/west{
- id = "viro-outer";
- name = "Outer Virology Lockdown";
- pixel_y = 8
- },
-/obj/machinery/button/door/directional/west{
- id = "viro-iso";
- name = "Isolation Bolts";
- normaldoorcontrol = 1;
- pixel_x = -36;
- specialfunctions = 4
- },
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"sPs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/structure/electrified_grille,
-/turf/open/floor/plating,
-/area/station/ai_monitored/security/armory)
-"sPu" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/turf_decal/arrows{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"sPJ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"sPR" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"sPZ" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"sQa" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"sQl" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 10
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"sQn" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"sQv" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/openspace,
-/area/station/command/heads_quarters/hop)
-"sQw" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 1
- },
-/obj/machinery/modular_computer/preset/engineering,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"sQD" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/engine_smes)
-"sQG" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/structure/sign/directions/evac/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"sQH" = (
-/obj/machinery/computer/security/telescreen/entertainment/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"sQT" = (
-/obj/effect/turf_decal/stripes,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"sRd" = (
-/obj/effect/mapping_helpers/airlock/access/all/command/captain,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/door/airlock/command{
- name = "Captain's Quarters"
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"sRf" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/security/brig)
-"sRh" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"sRn" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"sRz" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"sRG" = (
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/teleporter)
-"sRH" = (
-/obj/machinery/firealarm/directional/north,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/vehicle/ridden/secway,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"sRO" = (
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/bridge)
-"sRR" = (
-/turf/closed/wall,
-/area/station/medical/paramedic)
-"sRZ" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"sSl" = (
-/obj/effect/turf_decal/siding/yellow{
- dir = 4
- },
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"sSz" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"sSB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"sSK" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/bot,
-/obj/item/stack/cable_coil{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/multitool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"sSO" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white/side{
- dir = 4
- },
-/area/station/medical/pharmacy)
-"sSR" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"sSV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/service/library/lounge)
-"sSY" = (
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"sTq" = (
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"sTr" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"sTs" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"sTD" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"sTE" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"sTG" = (
-/obj/machinery/chem_dispenser/drinks,
-/obj/structure/table/glass,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"sTQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/north,
-/obj/structure/railing,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"sTT" = (
-/obj/structure/table/glass,
-/obj/item/food/grown/carrot,
-/obj/item/food/grown/wheat,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"sTU" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Lower Library"
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/service/library/lounge)
-"sUj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"sUp" = (
-/obj/structure/railing/corner/end/flip{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"sUt" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/effect/turf_decal/arrows/white{
- dir = 1
- },
-/turf/open/floor/iron/large,
-/area/station/command/gateway)
-"sUy" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"sUC" = (
-/obj/machinery/disposal/delivery_chute{
- dir = 1
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new/corner{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"sUH" = (
-/obj/machinery/door/airlock/command{
- name = "Abandoned Bunks"
- },
-/obj/structure/barricade/wooden{
- name = "wooden barricade (KEEP OUT)"
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"sUI" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"sUP" = (
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/security/prison)
-"sUZ" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"sVb" = (
-/obj/machinery/power/floodlight,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/construction)
-"sVc" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"sVh" = (
-/obj/structure/chair/comfy/brown,
-/obj/machinery/camera/autoname/directional/west,
-/obj/effect/landmark/start/assistant,
-/obj/structure/sign/warning/yes_smoking/circle/directional/west,
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"sVi" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/wardrobe/mixed,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"sVp" = (
-/obj/structure/transit_tube/curved{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"sVr" = (
-/obj/structure/closet/emcloset,
-/obj/machinery/camera/directional/west{
- c_tag = "Science - Fore Entry"
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"sVv" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"sVQ" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 5
- },
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"sVU" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/airlock/hydroponics/glass{
- name = "Hydroponics"
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"sVW" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"sVY" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"sWf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"sWm" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "hosprivacy";
- name = "Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/security/lockers)
-"sWo" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/security/range)
-"sWp" = (
-/obj/effect/spawner/structure/window/hollow/middle,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"sWs" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/marker_beacon/burgundy,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"sWt" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/structure/table,
-/obj/machinery/microwave,
-/obj/effect/spawner/random/food_or_drink/donkpockets,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"sWw" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/botanist,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"sWC" = (
-/obj/structure/table/wood/poker,
-/obj/effect/spawner/random/entertainment/deck,
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"sWF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"sWM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"sWP" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"sWQ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/poddoor/shutters{
- dir = 4;
- id = "z1-maint-crates";
- name = "Abandoned Storage"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"sWW" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"sWZ" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"sXf" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/button/door/directional/north{
- id = "dorms_lux_2_bolts";
- name = "Luxury Dorm 2 Bolt Control";
- normaldoorcontrol = 1;
- pixel_x = -6;
- specialfunctions = 4
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"sXp" = (
-/obj/structure/rack,
-/obj/item/radio/off{
- pixel_x = 4;
- pixel_y = 3
- },
-/obj/item/radio/off{
- pixel_x = -6;
- pixel_y = 7
- },
-/obj/machinery/button/door/directional/south{
- id = "armory";
- name = "Armory Shutters";
- req_access = list("armory")
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"sXE" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-9";
- location = "1-8"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"sXM" = (
-/obj/machinery/recharger,
-/obj/structure/table,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"sXR" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"sXV" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"sXX" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"sYa" = (
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"sYb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/siding/wideplating,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"sYc" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"sYf" = (
-/turf/open/floor/engine/plasma,
-/area/station/engineering/atmos)
-"sYh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/science/lobby)
-"sYl" = (
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"sYw" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/filled/arrow_ccw{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"sYD" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"sYH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/status_display/ai/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/engine_smes)
-"sYI" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/service/library,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/wood{
- name = "Library Book Returns"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/printer)
-"sYK" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"sYN" = (
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"sYP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_x = -32
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"sYU" = (
-/obj/machinery/space_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"sYX" = (
-/obj/structure/toilet{
- dir = 4
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"sZb" = (
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/disposal/bin/tagger,
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/engineering/lobby)
-"sZd" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/white{
- dir = 5
- },
-/obj/item/flashlight/lantern{
- pixel_y = 7
- },
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"sZf" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/light/directional/east,
-/obj/structure/table/reinforced,
-/obj/item/instrument/musicalmoth{
- name = "Congo Ralis"
- },
-/obj/item/clothing/head/mothcap,
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"sZh" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"sZj" = (
-/obj/item/clothing/gloves/boxing,
-/obj/structure/rack,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"sZo" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted,
-/obj/item/radio/intercom/directional/south{
- broadcasting = 1;
- frequency = 1447;
- listening = 0;
- name = "Private Channel"
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"sZy" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/table,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/stack/cable_coil,
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"sZD" = (
-/obj/effect/decal/cleanable/confetti,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"sZH" = (
-/obj/structure/mirror/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/sink/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"sZI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"sZL" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/machinery/light/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/commons/storage/primary)
-"sZN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/machinery/airalarm/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/security/mechbay)
-"sZO" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"sZX" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"sZY" = (
-/obj/effect/turf_decal/loading_area{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"tag" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/chair_flipped,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"tal" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"tam" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/chair/plastic,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"tat" = (
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard/aft)
-"taD" = (
-/obj/machinery/door/airlock/external/glass,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "Gravgenrear"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"taM" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"taW" = (
-/obj/structure/table/wood,
-/obj/effect/spawner/random/entertainment/musical_instrument,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"tbb" = (
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/security/general,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/security/checkpoint/first)
-"tbd" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"tbh" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"tbq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"tbt" = (
-/obj/structure/cable,
-/obj/machinery/bouldertech/refinery/smelter,
-/obj/machinery/conveyor/inverted{
- dir = 10;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"tbu" = (
-/obj/effect/spawner/random/trash/hobo_squat,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"tbw" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/medical/psychology)
-"tby" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/barricade/sandbags,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"tbF" = (
-/obj/effect/turf_decal/trimline/green/end{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"tbG" = (
-/obj/structure/closet/secure_closet/atmospherics,
-/obj/effect/turf_decal/box,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/engineering/atmos/office)
-"tbI" = (
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"tbX" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/security/brig)
-"tch" = (
-/obj/machinery/autolathe,
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"tcl" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/science/xenobiology/hallway)
-"tcm" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/landmark/start/warden,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"tcs" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"tcA" = (
-/obj/machinery/telecomms/server/presets/engineering,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"tcE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/dark_blue/filled,
-/obj/structure/cable,
-/obj/machinery/door/airlock/public/glass{
- name = "Tool Storage"
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"tcM" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/toolbox,
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"tcP" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"tda" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/service)
-"tdb" = (
-/obj/structure/bed{
- dir = 4
- },
-/obj/item/bedsheet/mime{
- dir = 4
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"tde" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"tdf" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"tdn" = (
-/obj/structure/curtain,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"tdt" = (
-/obj/machinery/light/directional/south,
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"tdz" = (
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Theater"
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"tdA" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"tdB" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"tdF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/command/glass{
- name = "Council Chambers"
- },
-/obj/effect/mapping_helpers/airlock/access/all/command/general,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"tdG" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"tdK" = (
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"tdN" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"tec" = (
-/obj/machinery/door/airlock/public{
- id_tag = "public_toilets_b";
- name = "Toilet B"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/toilet)
-"teq" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor1/starboard/aft)
-"tev" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/landmark/start/atmospheric_technician,
-/turf/open/floor/iron/corner,
-/area/station/engineering/atmos/office)
-"tez" = (
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"teB" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/machinery/door/airlock/atmos{
- name = "Atmospheric Substation"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"teN" = (
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"teQ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"teV" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"teW" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/service/chapel/office)
-"tff" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/botanist,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"tfo" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"tfs" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"tfw" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"tfA" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/button/door/directional/east{
- id = "chem-lock-f";
- name = "Chemistry Fore Lockdown";
- pixel_y = 5;
- req_access = list("pharmacy")
- },
-/obj/machinery/button/door/directional/east{
- id = "chem-lock-a";
- name = "Chemistry Aft Lockdown";
- pixel_y = -4;
- req_access = list("pharmacy")
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"tfD" = (
-/obj/structure/cable,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"tfE" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"tfL" = (
-/obj/structure/girder,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"tfR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"tfS" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 6
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"tfX" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"tgc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/effect/turf_decal/stripes/end{
- dir = 4
- },
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/aft)
-"tgz" = (
-/obj/effect/landmark/start/prisoner,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/light/dim/directional/east,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"tgA" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"tgF" = (
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/obj/item/stack/sheet/glass{
- amount = 30
- },
-/obj/structure/closet/crate/science{
- name = "Chamber Supplies"
- },
-/obj/item/stack/ducts/fifty,
-/obj/item/storage/toolbox/mechanical,
-/obj/item/electronics/airlock,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"tgP" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"tgS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/maintenance/floor2/starboard/aft)
-"tgX" = (
-/obj/machinery/door/airlock/external{
- name = "Transport Airlock"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"tha" = (
-/obj/structure/chair{
- dir = 8;
- name = "Defense"
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"thd" = (
-/obj/machinery/stasis,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"thi" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"thq" = (
-/obj/structure/railing{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"thu" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/openspace,
-/area/station/service/library)
-"thw" = (
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"thD" = (
-/obj/structure/table/reinforced,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"thM" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"thU" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 9
- },
-/obj/effect/spawner/random/structure/crate_loot,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"tia" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"tic" = (
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"til" = (
-/obj/structure/sign/poster/contraband/grey_tide,
-/turf/closed/wall,
-/area/station/maintenance/floor3/port/aft)
-"tim" = (
-/obj/machinery/telecomms/broadcaster/preset_left,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"tiX" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/obj/machinery/airalarm/directional/east,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"tjc" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"tjd" = (
-/obj/structure/closet/secure_closet/freezer/cream_pie,
-/obj/effect/turf_decal/tile/red/opposingcorners,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"tje" = (
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/maintenance/floor4/port/fore)
-"tji" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"tjA" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/flashlight,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"tjF" = (
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"tjJ" = (
-/obj/effect/turf_decal/caution/stand_clear/white{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/spawner/random/decoration/glowstick,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"tjM" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/table,
-/obj/machinery/microwave,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/kitchen,
-/area/station/command/heads_quarters/rd)
-"tjN" = (
-/turf/open/floor/iron,
-/area/station/maintenance/solars/starboard/fore)
-"tjP" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"tjV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/incident_display/delam/directional/north,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"tkq" = (
-/turf/closed/wall,
-/area/station/solars/starboard/aft)
-"tkz" = (
-/obj/structure/rack,
-/obj/item/reagent_containers/cup/bottle/epinephrine{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/fluorine{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/iodine{
- pixel_x = 1
- },
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"tkB" = (
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor3/starboard)
-"tkE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor1/aft)
-"tkF" = (
-/obj/effect/turf_decal/tile/red/opposingcorners,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"tkJ" = (
-/obj/effect/spawner/random/entertainment/arcade{
- dir = 1
- },
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"tkZ" = (
-/obj/structure/cable,
-/obj/machinery/conveyor/inverted{
- dir = 6;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"tld" = (
-/obj/structure/table/reinforced,
-/obj/item/stack/sheet/mineral/plasma/five,
-/obj/item/clothing/glasses/science,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"tlf" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 5
- },
-/obj/machinery/button/door/incinerator_vent_atmos_aux{
- pixel_x = -24;
- pixel_y = 8
- },
-/obj/machinery/button/door/incinerator_vent_atmos_main{
- pixel_x = -24;
- pixel_y = -8
- },
-/obj/machinery/button/ignition/incinerator/atmos{
- pixel_y = -24
- },
-/obj/structure/chair/stool,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"tll" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/turf_decal/siding/purple{
- dir = 5
- },
-/obj/machinery/dna_scannernew,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"tlr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"tlt" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"tlJ" = (
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"tlK" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"tlZ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"tme" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/obj/effect/landmark/start/lawyer,
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"tmk" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/openspace,
-/area/station/maintenance/floor4/port/aft)
-"tml" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/security/prison)
-"tmq" = (
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"tms" = (
-/obj/machinery/modular_computer/preset/civilian{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"tmu" = (
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"tmH" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"tmM" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"tmU" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/arrow_cw{
- dir = 8
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"tmW" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"tnj" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/sorting/mail/flip{
- dir = 8
- },
-/obj/effect/mapping_helpers/mail_sorting/security/general,
-/obj/effect/mapping_helpers/mail_sorting/security/hos_office,
-/obj/effect/mapping_helpers/mail_sorting/security/detectives_office,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"tnm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/structure/electrified_grille,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"tnn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"tns" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"tnt" = (
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"tnx" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/structure/sign/departments/science/alt/directional/east,
-/turf/open/openspace,
-/area/station/hallway/floor2/fore)
-"tnz" = (
-/obj/effect/turf_decal/trimline/brown/arrow_cw{
- dir = 8
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/trimline/brown/mid_joiner{
- dir = 8
- },
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"tnA" = (
-/obj/machinery/light/cold/no_nightlight/directional/south,
-/obj/structure/flora/bush/fullgrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/service)
-"tnC" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"tnG" = (
-/obj/structure/closet{
- name = "Contraband Locker"
- },
-/obj/effect/spawner/random/contraband/prison,
-/obj/effect/spawner/random/contraband/prison,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"tnM" = (
-/obj/structure/table,
-/obj/machinery/cell_charger{
- pixel_y = 5
- },
-/obj/item/stack/cable_coil,
-/obj/item/multitool,
-/obj/item/stock_parts/power_store/cell/high,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"tnN" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/firealarm/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"tnR" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Brig Fore Entrance"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"tnS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/freezer{
- name = "Bathroom"
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/kitchen/diner)
-"tnT" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"tnV" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"tnX" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 6
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"tod" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"tof" = (
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 4
- },
-/obj/structure/chair/sofa/bench/left,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 8
- },
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/lobby)
-"toh" = (
-/obj/machinery/holopad,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"toy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"toC" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/engineering/storage/tcomms)
-"toH" = (
-/turf/open/openspace,
-/area/station/maintenance/floor3/port/fore)
-"toK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/garbage{
- spawn_loot_count = 3;
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"toM" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"toO" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/landmark/navigate_destination/hydro,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"toQ" = (
-/obj/item/stack/arcadeticket,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"toX" = (
-/obj/machinery/door/airlock/grunge{
- name = "Prison Forestry"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/security/prison/garden)
-"tpi" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"tpw" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/port)
-"tpy" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"tpz" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/structure/rack,
-/obj/item/storage/toolbox/mechanical,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/machinery/requests_console/directional/east{
- department = "Cargo";
- name = "Cargo Request Console"
- },
-/obj/effect/mapping_helpers/requests_console/announcement,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"tpD" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"tpS" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/table/reinforced,
-/obj/machinery/reagentgrinder{
- pixel_x = 6;
- pixel_y = 6
- },
-/obj/item/book/manual/wiki/barman_recipes{
- pixel_x = -4;
- pixel_y = 7
- },
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"tpU" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"tpV" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/science/genetics)
-"tpW" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"tqi" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/room4)
-"tqj" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"tqr" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"tqu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"tqw" = (
-/turf/open/openspace,
-/area/station/maintenance/floor2/starboard/fore)
-"tqx" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/hallway/secondary/exit)
-"tqz" = (
-/obj/structure/destructible/cult/item_dispenser/archives/library,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"tqE" = (
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"tqK" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/mineral/plastitanium/airless,
-/area/space/nearstation)
-"tqW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"trb" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"trf" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 9
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"trq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/aft)
-"trB" = (
-/obj/machinery/ai_slipper{
- uses = 10
- },
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"trD" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"trE" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-3";
- location = "2-2"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"trF" = (
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/hallway/floor1/fore)
-"trH" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"trM" = (
-/obj/machinery/door/poddoor/preopen{
- id = "secure-gate";
- name = "Brig Shutters"
- },
-/obj/machinery/prisongate,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"trP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/machinery/camera/emp_proof/directional/east,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"trV" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"tsi" = (
-/obj/structure/table/wood,
-/obj/item/book/manual/wiki/security_space_law,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"tsy" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"tsB" = (
-/obj/effect/turf_decal/siding/white,
-/obj/structure/railing,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/structure/table/reinforced/rglass,
-/turf/open/floor/iron/large,
-/area/station/science/robotics/lab)
-"tsN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/paramedic)
-"ttb" = (
-/turf/closed/wall,
-/area/station/hallway/floor2/aft)
-"tti" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"ttk" = (
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"ttl" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible,
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"tto" = (
-/obj/machinery/airalarm/directional/north,
-/obj/effect/turf_decal/tile/green/anticorner{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"ttt" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"ttw" = (
-/obj/structure/closet/crate/hydroponics,
-/obj/item/paper/guides/jobs/hydroponics,
-/obj/effect/spawner/random/food_or_drink/seed{
- spawn_all_loot = 1;
- spawn_random_offset = 1
- },
-/obj/effect/spawner/random/contraband/prison,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/prison/garden)
-"ttE" = (
-/obj/structure/grille/broken,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"ttF" = (
-/obj/structure/table,
-/obj/item/flashlight/lamp,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"ttG" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"ttI" = (
-/obj/structure/closet/secure_closet/freezer/cream_pie,
-/obj/item/radio/intercom/directional/north,
-/obj/structure/sign/poster/contraband/random/directional/east,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"ttJ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"tua" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"tuc" = (
-/obj/effect/turf_decal/caution/stand_clear,
-/obj/effect/turf_decal/siding/dark_blue,
-/obj/effect/turf_decal/siding/dark_blue{
- dir = 1
- },
-/obj/machinery/door/poddoor/shutters/window{
- id = "stationawaygate";
- name = "Gateway Access Shutters"
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"tud" = (
-/obj/machinery/computer/security/qm{
- dir = 8
- },
-/obj/machinery/keycard_auth/wall_mounted/directional/north,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"tun" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate,
-/obj/item/stack/license_plates/empty/fifty,
-/obj/item/stack/license_plates/empty/fifty,
-/obj/item/stack/license_plates/empty/fifty,
-/obj/item/stack/license_plates/empty/fifty,
-/obj/item/stack/license_plates/empty/fifty,
-/turf/open/floor/plating,
-/area/station/security/prison/work)
-"tup" = (
-/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"tuv" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/aft)
-"tuy" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"tuB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"tuH" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"tuM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/textured,
-/area/station/cargo/storage)
-"tuT" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"tuX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"tve" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/landmark/navigate_destination/dorms,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"tvm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"tvH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/holopad,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/atmos/office)
-"tvU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"tvW" = (
-/obj/structure/stairs/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor2/fore)
-"tvX" = (
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/floor1/aft)
-"tvY" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"tvZ" = (
-/obj/structure/stairs/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"twa" = (
-/obj/structure/disposalpipe/trunk/multiz,
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard/fore)
-"twd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"twg" = (
-/obj/machinery/holopad,
-/obj/effect/mapping_helpers/iannewyear,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"twp" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw{
- dir = 1
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"twq" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"twv" = (
-/obj/machinery/requests_console/directional/east{
- department = "Xenobiology";
- name = "Xenobiology Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/ore_update,
-/obj/machinery/shower/directional/west,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/noslip,
-/area/station/science/xenobiology)
-"twx" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"twy" = (
-/obj/structure/closet/secure_closet/freezer/meat,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"twz" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"twL" = (
-/obj/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"twM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"twO" = (
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"twP" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"twQ" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/structure/table,
-/obj/item/phone{
- pixel_x = -7;
- pixel_y = 7
- },
-/obj/item/storage/box{
- pixel_x = 4;
- pixel_y = 5
- },
-/obj/item/crowbar/red,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/office)
-"twS" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"twY" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"twZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"txa" = (
-/turf/closed/wall,
-/area/station/security/courtroom)
-"txb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"txp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"txu" = (
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"txv" = (
-/obj/effect/turf_decal/trimline/yellow/filled/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port/aft)
-"txw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/decoration/glowstick,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"txB" = (
-/obj/effect/turf_decal/siding/white,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"txC" = (
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"txF" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"txP" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_corner{
- dir = 4
- },
-/area/station/cargo/office)
-"txQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"txR" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"txT" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Science - Firing Range";
- network = list("ss13","sciC")
- },
-/obj/item/target/syndicate,
-/turf/open/floor/engine,
-/area/station/science/auxlab/firing_range)
-"txU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"tyb" = (
-/obj/machinery/door/airlock{
- name = "Bartender's Backroom"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/service/bar,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/service/bar)
-"tyi" = (
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"tyj" = (
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"tyo" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/random/directional/south,
-/obj/machinery/biogenerator,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"tyu" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/flashlight/flare/candle,
-/obj/item/food/grown/poppy{
- pixel_y = 16
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"tyK" = (
-/obj/machinery/door/window/left/directional/east{
- name = "Slime Storage";
- req_access = list("maint_tunnels")
- },
-/turf/open/floor/grass,
-/area/station/maintenance/floor3/starboard)
-"tyP" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/service/library/private)
-"tyQ" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/supermatter/room)
-"tyR" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"tzb" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/warning/pods/directional/west{
- name = "Escape Pods: Access Via Maint"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"tzf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grime,
-/obj/machinery/light/dim/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"tzs" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"tzu" = (
-/obj/structure/statue/snow/snowman,
-/turf/open/misc/asteroid/snow/standard_air,
-/area/station/maintenance/floor2/port/aft)
-"tzv" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"tzA" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"tzB" = (
-/obj/structure/holosign/barrier,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"tzD" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/machinery/hydroponics/constructable{
- anchored = 0
- },
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"tzF" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"tzU" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/space/nearstation)
-"tzV" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"tAc" = (
-/obj/machinery/door/poddoor/shutters{
- id = "maint-shut";
- name = "Maintenance Shutters"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/furniture_parts,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"tAs" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/effect/landmark/navigate_destination/sec,
-/obj/structure/cable,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"tAz" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"tAE" = (
-/obj/machinery/vending/cola/starkist,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"tAL" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"tAN" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"tAW" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/effect/decal/cleanable/ash,
-/obj/effect/mob_spawn/corpse/human/charredskeleton,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"tBh" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/turf/closed/wall,
-/area/station/engineering/atmos)
-"tBj" = (
-/obj/structure/table/reinforced,
-/obj/item/flashlight/lamp,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"tBk" = (
-/turf/closed/wall/r_wall,
-/area/station/security/prison/visit)
-"tBl" = (
-/obj/structure/toilet{
- pixel_y = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/newscaster/directional/east,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"tBq" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"tBr" = (
-/obj/machinery/camera/autoname/directional/south,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/table/wood,
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"tBv" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"tBy" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"tBN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"tBV" = (
-/obj/structure/mop_bucket/janitorialcart,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"tBY" = (
-/obj/machinery/chem_dispenser,
-/obj/structure/sign/poster/official/periodic_table/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"tCj" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/iron/kitchen,
-/area/station/command/heads_quarters/rd)
-"tCq" = (
-/obj/machinery/light/small/directional/east,
-/mob/living/basic/butterfly,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/entry)
-"tCB" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"tCC" = (
-/obj/effect/decal/cleanable/oil/streak,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"tCF" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 9
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"tCG" = (
-/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"tCS" = (
-/obj/effect/landmark/start/hangover,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"tCU" = (
-/obj/item/stack/tile/iron/white,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"tDa" = (
-/obj/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"tDb" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"tDf" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"tDp" = (
-/obj/structure/bonfire,
-/obj/item/melee/moonlight_greatsword,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/stone,
-/area/station/maintenance/floor3/starboard/fore)
-"tDs" = (
-/turf/open/floor/iron,
-/area/station/hallway/floor4/aft)
-"tDv" = (
-/obj/structure/rack,
-/obj/item/wrench,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"tDw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port)
-"tDB" = (
-/obj/structure/table/reinforced,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"tDE" = (
-/obj/machinery/power/port_gen/pacman,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"tDG" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/safe)
-"tDH" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 5
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
- dir = 8
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"tDI" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/grunge,
-/turf/open/floor/iron/dark/side,
-/area/station/maintenance/floor2/starboard/fore)
-"tDK" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/light_switch/directional/south,
-/obj/effect/landmark/start/atmospheric_technician,
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/engineering/atmos/office)
-"tDO" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"tDV" = (
-/obj/machinery/rnd/production/circuit_imprinter/department/science,
-/obj/effect/turf_decal/bot,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"tDX" = (
-/obj/structure/noticeboard/directional/north,
-/obj/item/paper{
- name = "IMPORTANT NOTICE";
- default_raw_text = "Nanotrasen Mark II IV Drip Stands are to be used in the correct Nanotrasen Mark II IV Drip Stand Installation Location. Failure to do so can result in a 100 credit fine. Glory to Nanotrasen."
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"tEc" = (
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"tEe" = (
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"tEh" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"tEi" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"tEo" = (
-/obj/machinery/atmospherics/components/binary/valve{
- dir = 1;
- name = "Atmospherics-Supermatter Connection"
- },
-/turf/open/floor/plating,
-/area/station/engineering/atmos/pumproom)
-"tEv" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"tEG" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"tEI" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 8
- },
-/turf/open/floor/pod,
-/area/station/hallway/secondary/entry)
-"tEK" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"tEW" = (
-/obj/machinery/camera/autoname/directional/west,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/fore)
-"tEY" = (
-/obj/effect/spawner/random/trash/mopbucket,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"tFc" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/machinery/shieldgen,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/cargo/miningdock)
-"tFm" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"tFp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/red/corner,
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"tFK" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/white/line{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/white/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"tFO" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"tFR" = (
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"tFS" = (
-/obj/effect/landmark/navigate_destination/kitchen,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"tGa" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"tGc" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"tGk" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"tGn" = (
-/turf/closed/wall,
-/area/station/maintenance/floor3/port)
-"tGq" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/project)
-"tGv" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"tGz" = (
-/obj/item/storage/box/teargas{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/handcuffs,
-/obj/item/storage/box/flashbangs{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/airalarm/directional/south,
-/obj/structure/sign/nanotrasen{
- pixel_x = -32
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"tGE" = (
-/turf/open/floor/iron/textured,
-/area/station/command/heads_quarters/qm)
-"tGS" = (
-/obj/machinery/computer/scan_consolenew{
- dir = 8
- },
-/obj/effect/turf_decal/siding/purple{
- dir = 6
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"tGW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/caution/stand_clear/white{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"tHk" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"tHn" = (
-/obj/machinery/atmospherics/components/binary/pump/layer4{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"tHs" = (
-/obj/structure/sink/kitchen/directional/east,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"tHw" = (
-/obj/machinery/light_switch/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"tHH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"tHL" = (
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"tHZ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/washing_machine,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/security/prison)
-"tIc" = (
-/obj/structure/chair/comfy/black{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"tIe" = (
-/obj/structure/sign/directions/evac/directional/north{
- dir = 2;
- pixel_y = 40
- },
-/obj/structure/sign/directions/engineering/directional/north{
- dir = 2
- },
-/obj/structure/sign/directions/supply/directional/north{
- dir = 2;
- pixel_y = 24
- },
-/obj/structure/ladder,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor2/fore)
-"tIj" = (
-/obj/structure/railing,
-/obj/structure/chair,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"tIl" = (
-/obj/machinery/light/small/directional/east,
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"tIm" = (
-/obj/machinery/smartfridge/chemistry/preloaded,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 4;
- id = "chem-lock-a";
- name = "Chemistry Shutters"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"tIn" = (
-/obj/machinery/computer/security/mining{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/cargo/miningdock)
-"tIu" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/closet/secure_closet/medical3,
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"tIx" = (
-/obj/machinery/shower/directional/west,
-/turf/open/floor/noslip,
-/area/station/science/lobby)
-"tIG" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"tIH" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/machinery/chem_dispenser/drinks/beer,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"tIK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"tIR" = (
-/obj/machinery/telecomms/server/presets/common,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"tIT" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"tIV" = (
-/obj/machinery/door/airlock/external{
- name = "Labor Camp Shuttle Airlock";
- shuttledocked = 1
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"tJi" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"tJj" = (
-/obj/machinery/airalarm/directional/east,
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/structure/chair,
-/obj/structure/reagent_dispensers/wall/peppertank/directional/north,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"tJn" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"tJE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"tJG" = (
-/obj/structure/cable,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"tJL" = (
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"tJN" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 8
- },
-/turf/open/floor/iron/corner{
- dir = 4
- },
-/area/station/command/gateway)
-"tJR" = (
-/obj/machinery/light/red/dim/directional/west,
-/obj/effect/mapping_helpers/burnt_floor,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"tJY" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"tJZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-11";
- location = "2-10"
- },
-/mob/living/simple_animal/bot/secbot/beepsky/officer{
- name = "Beepsky the Second"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"tKc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"tKe" = (
-/obj/machinery/light/directional/west,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor1/fore)
-"tKl" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"tKq" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 9
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"tKs" = (
-/obj/structure/curtain,
-/obj/structure/fans/tiny{
- name = "sink"
- },
-/obj/item/soap/deluxe,
-/obj/item/bikehorn/rubberducky,
-/obj/machinery/shower/directional/south,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/captain/private)
-"tKA" = (
-/obj/structure/flora/bush/flowers_pp/style_random,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"tKJ" = (
-/obj/item/storage/toolbox/electrical{
- pixel_y = 10
- },
-/obj/item/clothing/gloves/color/yellow,
-/obj/structure/table,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"tKP" = (
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 1
- },
-/obj/machinery/light/small/directional/west,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"tKU" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"tKY" = (
-/obj/structure/chair/stool/bamboo,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark/small,
-/area/station/service/chapel)
-"tLa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"tLb" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"tLf" = (
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"tLg" = (
-/obj/effect/turf_decal/trimline/green/filled/end,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"tLk" = (
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/hallway/floor4/fore)
-"tLq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/closed/wall,
-/area/station/hallway/floor2/aft)
-"tLr" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 10
- },
-/obj/effect/spawner/random/vending/snackvend,
-/obj/structure/sign/warning/pods/directional/south,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"tLt" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/table,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"tLu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"tLF" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"tMd" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/structure/desk_bell{
- pixel_x = 6;
- pixel_y = 10
- },
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"tMk" = (
-/obj/machinery/light_switch/directional/north,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"tMp" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/locker)
-"tMK" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"tML" = (
-/obj/machinery/door/airlock/security{
- name = "Arrivals Checkpoint"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/general,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/secondary/entry)
-"tNd" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/half,
-/turf/open/floor/iron/dark/side,
-/area/station/security/brig)
-"tNe" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"tNf" = (
-/obj/machinery/shieldgen,
-/obj/effect/decal/cleanable/cobweb,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"tNi" = (
-/obj/structure/table/wood,
-/obj/effect/spawner/random/entertainment/cigar,
-/obj/effect/spawner/random/entertainment/cigarette_pack,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"tNA" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"tNC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/engine_smes)
-"tNG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"tNK" = (
-/obj/machinery/light/directional/south,
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"tNO" = (
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/machinery/disposal/delivery_chute{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"tNS" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"tNU" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/delivery,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"tOc" = (
-/obj/structure/table,
-/obj/machinery/button/door{
- desc = "A door remote control switch for the exterior brig doors.";
- id = "outerbrig";
- name = "Brig Exterior Door Control";
- normaldoorcontrol = 1;
- pixel_x = 6;
- pixel_y = 7;
- req_access = list("armory")
- },
-/obj/machinery/button/flasher{
- id = "secentranceflasher";
- name = "Brig Entrance Flasher";
- pixel_y = -3;
- req_access = list("armory")
- },
-/obj/machinery/button/door{
- desc = "A door remote control switch for the interior brig doors.";
- id = "innerbrig";
- name = "Brig Interior Door Control";
- normaldoorcontrol = 1;
- pixel_x = -6;
- pixel_y = 7;
- req_access = list("armory")
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/requests_console/directional/north{
- department = "Security";
- name = "Security Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/obj/effect/mapping_helpers/requests_console/assistance,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"tOl" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"tOn" = (
-/obj/structure/table,
-/obj/item/reagent_containers/spray/cleaner{
- pixel_x = 5
- },
-/obj/item/razor{
- pixel_x = -8;
- pixel_y = 3
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white/small,
-/area/station/security/execution/education)
-"tOo" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"tOr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured_corner{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"tOE" = (
-/obj/machinery/duct,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"tOP" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"tOS" = (
-/obj/effect/mapping_helpers/burnt_floor,
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"tOV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"tOW" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/machinery/light_switch/directional/north{
- pixel_y = 27;
- pixel_x = 12
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"tPj" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/table/glass,
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/structure/microscope,
-/obj/structure/disposalpipe/segment,
-/obj/item/biopsy_tool{
- pixel_x = -10;
- pixel_y = 3
- },
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"tPk" = (
-/turf/open/misc/sandy_dirt,
-/area/station/maintenance/floor1/starboard)
-"tPm" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor2/port/aft)
-"tPu" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Bulb Storage"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"tPx" = (
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"tPy" = (
-/obj/structure/cable,
-/obj/machinery/brm,
-/obj/machinery/conveyor{
- dir = 4;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"tPB" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable,
-/turf/open/space/basic,
-/area/space/nearstation)
-"tPG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/blue,
-/area/station/command/heads_quarters/hop)
-"tPI" = (
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"tPK" = (
-/obj/structure/sign/warning{
- pixel_y = 32
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"tPL" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/openspace,
-/area/station/maintenance/floor3/port/aft)
-"tPO" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"tQd" = (
-/turf/closed/wall,
-/area/station/service/bar/atrium)
-"tQf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/side,
-/area/station/cargo/miningdock)
-"tQk" = (
-/obj/machinery/computer/apc_control,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/command/heads_quarters/ce)
-"tQl" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"tQF" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor3/fore)
-"tQJ" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"tQK" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"tQM" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"tQN" = (
-/turf/closed/wall,
-/area/station/medical/surgery/fore)
-"tQO" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/burnchamber)
-"tQS" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"tQT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden,
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal/incinerator)
-"tRh" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"tRi" = (
-/obj/structure/filingcabinet,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"tRj" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"tRo" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"tRq" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"tRw" = (
-/obj/machinery/vending/cola,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"tRM" = (
-/obj/structure/table/reinforced,
-/obj/item/stack/sheet/iron/fifty{
- pixel_x = -6;
- pixel_y = 3
- },
-/obj/item/stack/sheet/iron/fifty{
- pixel_x = -4
- },
-/obj/item/stack/sheet/iron/fifty{
- pixel_x = -1;
- pixel_y = -2
- },
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = 4;
- pixel_y = -1
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"tRT" = (
-/obj/machinery/light/directional/north,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"tRU" = (
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"tSf" = (
-/obj/effect/spawner/random/maintenance/two,
-/obj/structure/closet/crate/preopen,
-/obj/item/mop,
-/obj/effect/spawner/random/engineering/flashlight,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"tSs" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/textured_corner{
- dir = 4
- },
-/area/station/cargo/sorting)
-"tSD" = (
-/obj/structure/closet/mini_fridge{
- pixel_x = 6;
- pixel_y = 5
- },
-/obj/structure/table,
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment1)
-"tSK" = (
-/obj/structure/chair/sofa/bench/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"tSU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"tTc" = (
-/obj/structure/cable,
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"tTf" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 6
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"tTi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"tTn" = (
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"tTv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair{
- dir = 8
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"tTw" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"tTy" = (
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"tTB" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/statue/snow/snowman,
-/turf/open/misc/snow/actually_safe,
-/area/station/hallway/floor2/fore)
-"tTC" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/structure/sink/kitchen/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"tTI" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1,
-/obj/machinery/door/airlock/highsecurity{
- name = "Atmos Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/pumproom)
-"tTJ" = (
-/obj/machinery/flasher/portable,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"tTS" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"tTV" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/door/airlock/wood{
- name = "Dining Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/general,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"tUa" = (
-/obj/structure/tank_dispenser/oxygen,
-/obj/effect/turf_decal/tile/red/anticorner,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"tUc" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"tUg" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Laboratory A"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/science/research,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"tUq" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"tUx" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 6
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"tUG" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"tUT" = (
-/obj/structure/railing{
- dir = 10
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"tUW" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Security - Office Fore"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/office)
-"tVa" = (
-/obj/structure/table,
-/obj/item/folder/red{
- pixel_x = 14
- },
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/pen{
- pixel_x = -3;
- pixel_y = 8
- },
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"tVc" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/space_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"tVi" = (
-/obj/structure/chair/sofa/corp/left{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/effect/landmark/start/paramedic,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"tVp" = (
-/obj/machinery/light_switch/directional/north,
-/obj/machinery/status_display/ai/directional/east,
-/obj/structure/table/reinforced/titaniumglass,
-/obj/item/piggy_bank/vault,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/command/nuke_storage)
-"tVq" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"tVz" = (
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/desk_bell{
- pixel_x = 7
- },
-/obj/item/pai_card,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"tVB" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"tVC" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"tVU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/service/chapel/funeral)
-"tWn" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"tWo" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"tWv" = (
-/obj/machinery/status_display/ai/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor2/aft)
-"tWH" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos)
-"tWI" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/structure/sign/departments/custodian/directional/north,
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"tWK" = (
-/obj/machinery/computer/operating{
- dir = 1
- },
-/obj/machinery/vending/wallmed/directional/south,
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"tWL" = (
-/obj/machinery/light/red/dim/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"tWM" = (
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"tWR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"tWX" = (
-/obj/effect/turf_decal/stripes,
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/entry)
-"tXe" = (
-/turf/closed/wall,
-/area/station/cargo/bitrunning/den)
-"tXg" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"tXB" = (
-/obj/effect/turf_decal/siding/white,
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"tXF" = (
-/obj/machinery/power/shuttle_engine/propulsion/burst{
- dir = 4
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"tXJ" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/railing/corner/end/flip{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"tXP" = (
-/obj/machinery/door/window/left/directional/north{
- name = "Hydroponics Garden";
- req_access = list("hydroponics")
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/light/directional/west,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"tXR" = (
-/obj/machinery/button/door/directional/north{
- id = "visitation";
- name = "Visitation Shutters";
- pixel_x = 6;
- req_access = list("brig")
- },
-/obj/machinery/button/flasher{
- id = "visitorflash";
- pixel_x = -6;
- pixel_y = 24
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"tXV" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"tXW" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 8
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/storage)
-"tYa" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"tYc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"tYg" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"tYl" = (
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "radshutnorth"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"tYn" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"tYo" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/purple/end{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"tYF" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/shard,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"tYV" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{
- dir = 5
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"tYW" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor4/fore)
-"tZq" = (
-/obj/structure/chair/stool/directional/south,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/newscaster/directional/north,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/maintenance/disposal)
-"tZz" = (
-/obj/machinery/door/airlock{
- id_tag = "dorms_2_bolts";
- name = "Standard Dorm 2"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room2)
-"tZD" = (
-/turf/closed/wall,
-/area/station/engineering/atmos/pumproom)
-"tZF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"tZJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/gibs/core,
-/obj/effect/decal/cleanable/blood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"tZO" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"tZX" = (
-/obj/machinery/door/airlock/security{
- name = "Permabrig Visitation"
- },
-/turf/open/floor/iron,
-/area/station/security/prison)
-"tZY" = (
-/obj/structure/table,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"tZZ" = (
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/bed/medical/anchored,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"uae" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/medical_kiosk,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"uaC" = (
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"uaD" = (
-/obj/structure/hedge,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/sign/departments/holy/directional/north,
-/turf/open/floor/grass,
-/area/station/hallway/floor3/aft)
-"uaE" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"uaG" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"uaJ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"uaK" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/iron/white,
-/area/station/science/server)
-"uaV" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"uaX" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"uba" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/kitchen/diner)
-"ubi" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"ubt" = (
-/obj/structure/chair/comfy{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"ubu" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw,
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"ubP" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"ubR" = (
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"ubW" = (
-/obj/structure/table/reinforced,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"ubZ" = (
-/obj/effect/turf_decal/trimline/brown/arrow_ccw{
- dir = 10
- },
-/obj/structure/reagent_dispensers/water_cooler,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/cargo/lobby)
-"ucf" = (
-/obj/effect/turf_decal/tile/blue/anticorner,
-/turf/open/floor/iron/textured_corner{
- dir = 1
- },
-/area/station/medical/chemistry)
-"ucm" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/machinery/camera/directional/south{
- c_tag = "Genetics Lab"
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"uco" = (
-/obj/effect/turf_decal/siding/white{
- dir = 5
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"ucA" = (
-/turf/open/space/openspace,
-/area/space)
-"ucB" = (
-/obj/effect/turf_decal/siding/blue{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"ucN" = (
-/obj/machinery/door/poddoor/massdriver_chapel,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"ucS" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/graffiti,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"ucY" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"udb" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"udn" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"udq" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"udw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Science Maintenance"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"udx" = (
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/engine,
-/area/station/science/auxlab/firing_range)
-"udy" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/sheet/mineral/wood,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"udC" = (
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"udE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"udF" = (
-/obj/effect/turf_decal/tile/green/anticorner{
- dir = 4
- },
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"udU" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/turf/open/floor/iron/textured_large,
-/area/station/maintenance/disposal/incinerator)
-"udZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"uek" = (
-/obj/structure/flora/bush/fullgrass/style_random,
-/obj/structure/flora/bush/flowers_br/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/service)
-"uep" = (
-/obj/structure/railing/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"ueu" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/caution/stand_clear{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"uex" = (
-/obj/machinery/door/airlock/atmos{
- name = "Atmos Emergency Supplies"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/port/fore)
-"ueA" = (
-/obj/machinery/camera/autoname/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"ueC" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"ueG" = (
-/obj/item/healthanalyzer{
- pixel_x = 2;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/epinephrine{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/reagent_containers/syringe,
-/obj/structure/table/glass,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"ueJ" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"ueO" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"ueS" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"ueW" = (
-/obj/machinery/newscaster/directional/south,
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"ueX" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"ufl" = (
-/turf/closed/wall,
-/area/station/commons/storage/art)
-"ufm" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/maintenance/floor1/starboard/aft)
-"ufs" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"ufL" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"ufN" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"ufW" = (
-/obj/item/stack/sheet/paperframes/fifty,
-/obj/structure/table/wood,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"ugb" = (
-/obj/structure/marker_beacon/burgundy,
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 6
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"ugn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"ugp" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"ugs" = (
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor2/fore)
-"ugv" = (
-/obj/structure/window/reinforced/tinted/spawner/directional/north,
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/punching_bag,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"ugD" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"ugP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"ugU" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"ugV" = (
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/aft)
-"ugW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"uhg" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"uhj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/table/reinforced,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/dark_blue/end{
- dir = 8
- },
-/obj/item/storage/toolbox/emergency,
-/obj/machinery/bluespace_vendor/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"uhl" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"uhr" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/science/xenobiology/hallway)
-"uhu" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/spawner/random/structure/table,
-/obj/item/assembly/igniter{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/assembly/signaler{
- pixel_x = 6;
- pixel_y = 5
- },
-/obj/item/screwdriver{
- pixel_y = -3
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"uhw" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"uhx" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"uhB" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"uhC" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"uhF" = (
-/obj/machinery/light/small/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"uhG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"uhK" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"uhU" = (
-/obj/structure/table/wood,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"uif" = (
-/obj/effect/decal/cleanable/greenglow,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"uik" = (
-/obj/structure/mirror/directional/south,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"uim" = (
-/obj/structure/closet/crate/mod,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"uiv" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/brig)
-"uiE" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"uiF" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/table/reinforced,
-/obj/structure/cable,
-/obj/item/phone{
- pixel_x = 6;
- pixel_y = -2
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"uiM" = (
-/obj/structure/table/wood,
-/obj/item/lighter,
-/obj/effect/turf_decal/trimline/blue/end,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"uiR" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"uiS" = (
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/security/courtroom)
-"uiT" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 10
- },
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/turf/open/floor/iron/telecomms,
-/area/station/tcommsat/server)
-"uiY" = (
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/effect/turf_decal/trimline/white/filled/line{
- color = "#065C93";
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/command/bridge)
-"ujc" = (
-/obj/structure/stairs/east,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"ujd" = (
-/obj/item/surgery_tray/full{
- pixel_y = 13
- },
-/obj/item/reagent_containers/medigel/sterilizine{
- pixel_x = 1
- },
-/obj/item/reagent_containers/syringe{
- pixel_x = -7
- },
-/obj/item/stack/medical/bone_gel{
- pixel_x = 10
- },
-/obj/effect/turf_decal/box/white,
-/obj/structure/table/reinforced/rglass,
-/obj/effect/turf_decal/siding/white{
- dir = 9
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"ujl" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer4{
- dir = 1
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"ujr" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"ujs" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"ujt" = (
-/obj/item/kirbyplants/organic/plant10,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/security/office)
-"ujv" = (
-/obj/docking_port/stationary/mining_home/common/northstar{
- dir = 2
- },
-/turf/open/floor/plating/airless,
-/area/station/hallway/secondary/exit)
-"ujC" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured,
-/area/station/cargo/storage)
-"ujI" = (
-/obj/structure/railing,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"ujQ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/storage)
-"ujT" = (
-/obj/item/cigbutt/cigarbutt,
-/obj/machinery/camera/autoname/directional/north,
-/obj/machinery/newscaster/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"ukd" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/office)
-"ukf" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 10
- },
-/obj/machinery/airalarm/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"ukC" = (
-/obj/structure/grille,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"ukI" = (
-/obj/structure/flora/tree/jungle/small/style_2,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"ukK" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"ukR" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"ukT" = (
-/obj/structure/table,
-/obj/item/clothing/mask/gas,
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/turf/open/floor/iron/white/smooth_edge{
- dir = 1
- },
-/area/station/medical/abandoned)
-"ulh" = (
-/obj/structure/table/wood,
-/obj/item/storage/fancy/cigarettes/cigpack_uplift{
- pixel_x = 6
- },
-/obj/item/storage/fancy/cigarettes/cigpack_carp{
- pixel_x = -3
- },
-/obj/item/lighter,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ulo" = (
-/obj/structure/closet/emcloset,
-/obj/effect/landmark/start/hangover/closet,
-/turf/open/floor/iron,
-/area/station/commons/fitness)
-"ulp" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"uls" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"ulu" = (
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/duct,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"ulv" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining/glass{
- name = "Mail Sorting"
- },
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
-/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"ulB" = (
-/obj/structure/hedge,
-/turf/open/floor/carpet/green,
-/area/station/service/kitchen/diner)
-"ulN" = (
-/obj/structure/chair/pew{
- dir = 1
- },
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"ulU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"ulW" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/neutral/end{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"umb" = (
-/obj/machinery/door/window/left/directional/south{
- name = "Pen 6";
- req_access = list("xenobiology")
- },
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"umg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/arrows{
- dir = 1
- },
-/obj/machinery/firealarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"umo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/weather/dirt{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/service/library/garden)
-"umw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"umC" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/structure/disposalpipe/junction{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"umG" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"umQ" = (
-/obj/machinery/door/airlock/hatch{
- name = "External Path Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"umT" = (
-/obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"umZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/displaycase/forsale/kitchen,
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"una" = (
-/obj/effect/turf_decal/siding/wideplating_new/corner{
- dir = 8
- },
-/obj/effect/turf_decal/siding/wideplating_new/corner{
- dir = 1
- },
-/obj/machinery/light/cold/no_nightlight/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"unb" = (
-/obj/structure/cable,
-/obj/machinery/holopad,
-/obj/effect/landmark/start/hangover,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/commons/storage/primary)
-"unf" = (
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"unh" = (
-/obj/structure/mirror/directional/west,
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/table/wood,
-/obj/item/toy/figure/clown,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"unm" = (
-/obj/effect/landmark/start/clown,
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/chair/wood{
- dir = 8
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"uns" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"unv" = (
-/obj/structure/bed,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/bedsheet/patriot,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"unC" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"unE" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/start/scientist,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"unQ" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"unV" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/siding/wideplating,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"unW" = (
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"uov" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"uoS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood/tile,
-/area/station/service/library/printer)
-"upc" = (
-/obj/machinery/atmospherics/components/trinary/filter/critical{
- dir = 4
- },
-/obj/machinery/status_display/evac/directional/north,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"uph" = (
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"upo" = (
-/obj/structure/table/wood,
-/obj/item/canvas/twentyfour_twentyfour,
-/obj/item/canvas/twentyfour_twentyfour,
-/obj/item/canvas/twentyfour_twentyfour,
-/obj/item/canvas/twentyfour_twentyfour,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"upx" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"upG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"upP" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"upS" = (
-/obj/item/chair/plastic,
-/obj/structure/sign/poster/contraband/random/directional/north,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"upT" = (
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"uqc" = (
-/turf/closed/wall/r_wall,
-/area/station/command/teleporter)
-"uqd" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"uqi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"uqt" = (
-/turf/closed/wall,
-/area/station/command/heads_quarters/hos)
-"uqu" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"uqv" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"uqz" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/techstorage/service_all,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"uqA" = (
-/obj/structure/dresser,
-/obj/structure/sign/poster/random/directional/west,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/apartment2)
-"uqC" = (
-/obj/structure/table,
-/obj/machinery/vending/wallmed/directional/west,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/fore)
-"uqT" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"ure" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/effect/mapping_helpers/damaged_window,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"urf" = (
-/obj/effect/turf_decal/tile/blue/anticorner{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/ai_monitored/turret_protected/ai)
-"urv" = (
-/obj/machinery/camera/directional/south{
- c_tag = "Xenobio - Holding Pen"
- },
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"urO" = (
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"urS" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"usa" = (
-/obj/machinery/light/small/directional/west,
-/obj/machinery/camera/directional/west{
- c_tag = "Command - Research Director's Quarters #1"
- },
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/obj/machinery/newscaster/directional/west,
-/obj/item/kirbyplants/random/dead/research_director,
-/turf/open/floor/iron/large,
-/area/station/command/heads_quarters/rd)
-"use" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"usf" = (
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"usj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Storage Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"usl" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"usp" = (
-/obj/effect/turf_decal/trimline/blue/filled/end{
- dir = 8
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"usq" = (
-/obj/structure/bed,
-/obj/item/toy/talking/griffin,
-/obj/item/bedsheet/orange,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood/parquet,
-/area/station/maintenance/floor2/port/aft)
-"ust" = (
-/obj/item/radio/intercom/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"usB" = (
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/turf/open/floor/iron/textured_corner{
- dir = 4
- },
-/area/station/hallway/secondary/entry)
-"usF" = (
-/obj/machinery/suit_storage_unit/standard_unit,
-/obj/effect/turf_decal/bot_white/right,
-/obj/structure/sign/nanotrasen{
- pixel_x = -32
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"usI" = (
-/obj/structure/chair/pew/right{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"usK" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"usN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"usS" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"usV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing/corner,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"usX" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"utl" = (
-/obj/structure/closet/secure_closet/medical1,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/noticeboard/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"utm" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/girder/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/engine_smes)
-"utu" = (
-/obj/machinery/disposal/delivery_chute{
- dir = 8
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"utw" = (
-/obj/item/kirbyplants/random,
-/obj/machinery/light/small/directional/south,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/funeral)
-"utE" = (
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"utJ" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/court,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/service/lawyer,
-/obj/machinery/door/airlock/security{
- name = "Law Hall"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/lawoffice)
-"utT" = (
-/obj/structure/hedge/opaque,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/service/library/private)
-"utU" = (
-/obj/effect/landmark/start/mime,
-/obj/structure/chair/wood{
- dir = 4
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"utV" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-2";
- location = "2-1"
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/fore)
-"uuh" = (
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"uuu" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/security/prison)
-"uuz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/obj/machinery/light/small/directional/south,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"uuF" = (
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"uuG" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"uuH" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing/corner{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"uuM" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"uuO" = (
-/turf/open/floor/iron/white/smooth_corner,
-/area/station/commons/fitness/recreation)
-"uuU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"uvv" = (
-/obj/effect/turf_decal/stripes,
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"uvD" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"uvE" = (
-/obj/structure/sign/departments/medbay/alt/directional/east,
-/turf/open/openspace,
-/area/station/hallway/floor2/fore)
-"uvG" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"uvJ" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"uvQ" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"uwa" = (
-/obj/machinery/oven/range,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"uwf" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"uwl" = (
-/obj/machinery/computer/slot_machine,
-/obj/machinery/firealarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"uwm" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"uwr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"uws" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/engineering/atmos)
-"uwA" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark/corner,
-/area/station/security/brig)
-"uwG" = (
-/obj/item/stack/sheet/iron/five,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"uwP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/power/port_gen/pacman,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"uwQ" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 5
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"uxf" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/execution/transfer)
-"uxj" = (
-/obj/structure/mirror/directional/north{
- pixel_y = 29
- },
-/obj/structure/sink/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/random/directional/west,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"uxl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"uxt" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/electrical{
- pixel_y = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"uxw" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"uxD" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing,
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"uxF" = (
-/obj/machinery/status_display/ai/directional/west,
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"uxI" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"uxQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"uxR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"uxT" = (
-/turf/closed/wall,
-/area/station/tcommsat/computer)
-"uxW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"uxX" = (
-/obj/structure/closet/secure_closet/engineering_welding,
-/obj/structure/window/spawner/directional/west,
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"uxZ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"uyf" = (
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"uyg" = (
-/obj/effect/spawner/random/structure/grille,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"uyh" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"uym" = (
-/obj/machinery/door/airlock/grunge{
- name = "Cell 2"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"uyu" = (
-/obj/machinery/computer/station_alert{
- dir = 4
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/office)
-"uyD" = (
-/turf/closed/wall/r_wall,
-/area/station/engineering/supermatter)
-"uyH" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 1
- },
-/obj/structure/reagent_dispensers/wall/peppertank/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"uyK" = (
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 6
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"uyL" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"uyQ" = (
-/obj/effect/turf_decal/stripes/corner,
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"uyX" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"uza" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"uzn" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"uzq" = (
-/obj/effect/spawner/random/engineering/material,
-/obj/structure/closet,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"uzB" = (
-/obj/structure/table/reinforced,
-/obj/item/screwdriver,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard/aft)
-"uzE" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"uzH" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"uzK" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"uzN" = (
-/obj/structure/grille,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"uzP" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/south,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"uzZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/teleporter)
-"uAc" = (
-/obj/structure/mirror/directional/east,
-/obj/structure/table/wood,
-/obj/item/toy/figure/mime,
-/obj/item/food/baguette,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"uAe" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"uAf" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"uAg" = (
-/obj/structure/table/reinforced,
-/obj/item/paper_bin/carbon{
- pixel_x = -2;
- pixel_y = 4
- },
-/obj/item/pen,
-/obj/effect/turf_decal/trimline/red/filled,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/third)
-"uAi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"uAo" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/fore)
-"uAW" = (
-/obj/structure/closet/secure_closet/medical2,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"uBi" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"uBr" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"uBE" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/dark/small,
-/area/station/science/xenobiology)
-"uBG" = (
-/obj/structure/rack,
-/obj/item/soap,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/smooth_large,
-/area/station/cargo/miningoffice)
-"uBN" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/trimline/white/filled/line{
- color = "#065C93";
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/bin/tagger,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/bridge)
-"uBR" = (
-/obj/machinery/airalarm/directional/south,
-/obj/structure/table,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/plasteel/fifty{
- pixel_x = -11
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"uCb" = (
-/obj/effect/turf_decal/trimline/green/corner,
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/machinery/light_switch/directional/north,
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"uCe" = (
-/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{
- dir = 4;
- filter_type = list(/datum/gas/nitrogen)
- },
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"uCl" = (
-/obj/machinery/door/airlock/external{
- name = "Common Mining Dock"
- },
-/obj/effect/landmark/navigate_destination,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit)
-"uCm" = (
-/obj/machinery/door/poddoor/incinerator_atmos_main,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"uCn" = (
-/obj/structure/window/spawner/directional/south,
-/obj/machinery/suit_storage_unit/rd,
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"uCo" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/obj/structure/girder/reinforced,
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/qm)
-"uCv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"uCw" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"uCC" = (
-/obj/machinery/vending/boozeomat,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"uCP" = (
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"uCU" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"uCV" = (
-/obj/effect/landmark/start/medical_doctor,
-/obj/structure/chair/sofa/right/brown,
-/turf/open/floor/carpet/royalblue,
-/area/station/medical/break_room)
-"uCW" = (
-/obj/structure/curtain/cloth/fancy/mechanical{
- id = "restaurant_booth_a";
- name = "Booth A"
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"uDb" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"uDc" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"uDr" = (
-/obj/machinery/light/small/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port)
-"uDA" = (
-/obj/structure/chair/sofa/corp{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"uDB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"uDD" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 4
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"uDE" = (
-/turf/open/openspace,
-/area/station/maintenance/floor4/starboard)
-"uDH" = (
-/obj/machinery/door/airlock/hatch{
- name = "Escape Pods"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit/escape_pod)
-"uDL" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/light/small/directional/south,
-/obj/machinery/suit_storage_unit/hos,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"uDN" = (
-/obj/machinery/door/airlock/engineering/glass/critical{
- heat_proof = 1;
- name = "Supermatter Engine"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"uDP" = (
-/obj/structure/cable,
-/obj/machinery/power/solar_control,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white/corner{
- dir = 8
- },
-/turf/open/floor/iron/corner,
-/area/station/maintenance/solars/starboard/fore)
-"uDR" = (
-/obj/machinery/firealarm/directional/west,
-/obj/machinery/power/smes/super/full,
-/obj/structure/cable,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"uDZ" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/airalarm/directional/north,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"uEb" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{
- dir = 8
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"uEo" = (
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/plating,
-/area/station/maintenance/solars/port/aft)
-"uEu" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2,
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{
- dir = 9
- },
-/obj/machinery/camera/preset/ordnance{
- c_tag = "Supermatter Waste";
- light_range = 0;
- network = list("waste","engine")
- },
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"uED" = (
-/obj/effect/turf_decal/tile/yellow/half,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/edge,
-/area/station/engineering/atmos)
-"uEF" = (
-/turf/closed/wall,
-/area/station/security/prison/work)
-"uEG" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"uEK" = (
-/obj/effect/decal/cleanable/blood/tracks,
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"uEL" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 9
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/storage)
-"uEO" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"uET" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"uEY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"uFc" = (
-/obj/machinery/vending/coffee,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"uFh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"uFk" = (
-/obj/structure/table/optable,
-/obj/machinery/defibrillator_mount/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"uFw" = (
-/obj/structure/cable,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/nuke_storage)
-"uFI" = (
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"uFO" = (
-/obj/structure/window/spawner/directional/south,
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"uFQ" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"uFR" = (
-/obj/structure/ladder,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"uFU" = (
-/obj/item/rack_parts,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"uGc" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"uGe" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/table/wood,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/item/flashlight/lamp/green,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"uGt" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/escape_pod)
-"uGO" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/right/directional/south{
- name = "Access Queue"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "hopblast";
- name = "HoP Blast Door"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/brigdoor/left/directional/north{
- name = "Access Desk";
- req_access = list("hop")
- },
-/turf/open/floor/iron,
-/area/station/command/heads_quarters/hop)
-"uGP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 8
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"uGQ" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/vending/coffee,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"uGS" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/obj/machinery/bluespace_vendor/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"uHa" = (
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"uHe" = (
-/obj/machinery/atmospherics/components/unary/passive_vent{
- dir = 1
- },
-/turf/open/floor/circuit/telecomms,
-/area/station/science/server)
-"uHf" = (
-/obj/structure/mirror/directional/north,
-/obj/structure/sink/directional/south,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"uHq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"uHu" = (
-/obj/effect/turf_decal/trimline/white/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"uHv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"uHx" = (
-/obj/structure/grille/broken,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"uHE" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-15";
- location = "3-14"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"uHI" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"uHQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/table,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"uHR" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/modular_computer/preset/cargochat/science{
- dir = 8
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"uHT" = (
-/obj/structure/chair/office/light,
-/obj/structure/sink/directional/west,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"uHV" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"uHZ" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"uIh" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"uIi" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/portable_atmospherics/pump,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"uIk" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"uIm" = (
-/obj/machinery/door/airlock/hatch{
- name = "Storage Room"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"uIn" = (
-/obj/structure/bed/double{
- dir = 4
- },
-/obj/item/bedsheet/ce/double{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/ce)
-"uIp" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 5
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"uIq" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/yellow/end{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"uIr" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"uIw" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"uIx" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor4/port/fore)
-"uIy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"uIz" = (
-/obj/machinery/computer/bank_machine{
- dir = 1
- },
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/tile/blue/full,
-/turf/open/floor/iron/textured_large,
-/area/station/ai_monitored/command/nuke_storage)
-"uID" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"uIL" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"uIM" = (
-/obj/machinery/light/red/dim/directional/west,
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/plumbed{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"uIN" = (
-/turf/closed/wall/r_wall,
-/area/station/security/checkpoint/third)
-"uIP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"uIQ" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/science/xenobiology/hallway)
-"uJa" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"uJb" = (
-/obj/structure/grille,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"uJi" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"uJn" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"uJo" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"uJq" = (
-/obj/machinery/vatgrower{
- dir = 4
- },
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/misc/dirt/jungle,
-/area/station/science/cytology)
-"uJr" = (
-/obj/effect/landmark/event_spawn,
-/turf/open/floor/grass/fairy,
-/area/station/maintenance/floor2/port/fore)
-"uJs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/aft)
-"uJA" = (
-/obj/structure/table/glass,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"uJD" = (
-/obj/structure/table/wood,
-/obj/item/food/grown/banana/bunch,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"uJE" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/structure/water_source/puddle{
- pixel_y = 3
- },
-/obj/effect/landmark/start/hangover,
-/obj/machinery/light/small/directional/west,
-/turf/open/misc/beach/sand,
-/area/station/hallway/secondary/entry)
-"uJG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/silver{
- name = "Bathroom"
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment1)
-"uJM" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"uJN" = (
-/obj/machinery/computer/records/medical/laptop{
- dir = 1;
- pixel_y = 4
- },
-/obj/structure/table/glass,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"uJR" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"uJW" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"uJX" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"uKl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"uKn" = (
-/obj/structure/stairs/north,
-/turf/open/floor/plating,
-/area/station/science/lobby)
-"uKs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/office)
-"uKt" = (
-/obj/structure/cable/multilayer/multiz,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/fore)
-"uKz" = (
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"uKC" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"uKD" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"uKE" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/glass,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"uKL" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 5
- },
-/turf/open/floor/iron/corner{
- dir = 8
- },
-/area/station/engineering/lobby)
-"uKO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"uKR" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"uKT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"uKW" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"uLj" = (
-/obj/structure/railing/corner,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"uLk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"uLB" = (
-/obj/machinery/atmospherics/components/unary/outlet_injector/on{
- dir = 8;
- initialize_directions = 8;
- volume_rate = 200
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{
- dir = 8
- },
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"uLH" = (
-/obj/structure/table/wood,
-/obj/item/modular_computer/laptop/preset/civilian,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/room4)
-"uLO" = (
-/obj/structure/showcase/cyborg/old{
- dir = 4;
- pixel_x = -9;
- pixel_y = 2
- },
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"uLQ" = (
-/obj/structure/chair/pew/left{
- dir = 1
- },
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"uLR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"uMb" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/engine/o2,
-/area/station/engineering/atmos)
-"uMk" = (
-/obj/effect/spawner/random/entertainment/deck,
-/obj/structure/table,
-/obj/machinery/light/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit)
-"uMl" = (
-/obj/structure/window/spawner/directional/west,
-/obj/machinery/vending/wardrobe/engi_wardrobe,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"uMu" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor3/fore)
-"uMz" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"uMK" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"uMP" = (
-/obj/machinery/fax{
- fax_name = "Chief Engineer's Office";
- name = "Chief Engineer's Fax Machine"
- },
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/command/heads_quarters/ce)
-"uMR" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/ladder,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"uMS" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"uMU" = (
-/obj/structure/chair/sofa/bench{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"uMW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"uNb" = (
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room4)
-"uNd" = (
-/obj/structure/table,
-/obj/item/stack/arcadeticket,
-/obj/item/stack/arcadeticket,
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"uNl" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/item/reagent_containers/syringe,
-/turf/open/floor/iron/white,
-/area/station/security/medical)
-"uNm" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/machinery/status_display/ai/directional/west,
-/obj/structure/table/reinforced/titaniumglass,
-/obj/item/maneki_neko{
- pixel_y = 4
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/command/nuke_storage)
-"uNp" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/item/kirbyplants/random,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"uNq" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"uNx" = (
-/obj/effect/turf_decal/trimline/green/corner,
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"uNC" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"uNF" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"uNL" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"uNU" = (
-/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{
- dir = 8
- },
-/turf/open/misc/grass,
-/area/station/maintenance/floor1/starboard)
-"uNZ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"uOc" = (
-/obj/effect/turf_decal/tile/neutral/full,
-/obj/machinery/portable_atmospherics/pipe_scrubber,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron,
-/area/station/science/ordnance/testlab)
-"uOd" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/courtroom)
-"uOe" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/dresser,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"uOh" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"uOl" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"uOo" = (
-/obj/structure/table,
-/obj/machinery/light/small/directional/east,
-/obj/item/clipboard,
-/obj/item/folder/yellow,
-/obj/item/electronics/firealarm,
-/obj/item/stack/sheet/glass,
-/obj/effect/turf_decal/bot,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"uOs" = (
-/obj/structure/transport/linear/public,
-/obj/effect/landmark/transport/transport_id{
- specific_transport_id = "fore_vator"
- },
-/obj/effect/abstract/elevator_music_zone{
- linked_elevator_id = "fore_vator";
- range = 2
- },
-/turf/open/floor/plating/elevatorshaft,
-/area/station/hallway/floor1/fore)
-"uOx" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/checkpoint/first)
-"uOL" = (
-/obj/structure/sign/painting{
- pixel_x = 32
- },
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/security/brig)
-"uOM" = (
-/obj/machinery/computer/atmos_alert{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"uOS" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/yellow,
-/obj/item/paper_bin{
- pixel_x = -2;
- pixel_y = 3
- },
-/obj/item/pen,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"uOT" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"uOV" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"uOW" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"uOY" = (
-/obj/structure/railing{
- dir = 6
- },
-/turf/open/floor/grass,
-/area/station/science/cytology)
-"uPc" = (
-/obj/structure/bed/medical/anchored{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"uPd" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/service)
-"uPj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"uPm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/moisture_trap{
- pixel_y = 12
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"uPA" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"uPL" = (
-/obj/item/stack/sheet/iron,
-/obj/item/shard,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"uPM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"uPQ" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"uPT" = (
-/obj/machinery/firealarm/directional/east,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"uPU" = (
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"uPY" = (
-/obj/machinery/light/red/dim/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port)
-"uQe" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"uQf" = (
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"uQA" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/ai_monitored/turret_protected/aisat)
-"uQD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"uQE" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"uQI" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"uQK" = (
-/obj/structure/bed{
- dir = 4
- },
-/obj/item/bedsheet/hop{
- dir = 4
- },
-/obj/effect/landmark/start/head_of_personnel,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"uQL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"uQN" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"uQS" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"uRb" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"uRg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"uRn" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"uRy" = (
-/obj/machinery/hydroponics/soil,
-/obj/item/radio/intercom/prison/directional/west,
-/turf/open/misc/dirt/jungle,
-/area/station/security/prison/garden)
-"uRE" = (
-/obj/machinery/door/airlock/engineering{
- name = "Auxiliary Base Supplies"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/yellow/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"uRO" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"uRQ" = (
-/obj/structure/table/wood,
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/item/storage/toolbox/mechanical,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"uSm" = (
-/obj/machinery/holopad,
-/obj/effect/turf_decal/trimline/blue,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/landmark/start/cyborg,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"uSw" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"uSC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/bouldertech/refinery,
-/obj/machinery/conveyor{
- dir = 8;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"uSL" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/table/reinforced,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/machinery/cell_charger,
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/mechbay)
-"uSN" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"uSW" = (
-/obj/machinery/ticket_machine/directional/north,
-/obj/effect/landmark/navigate_destination/hop,
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/hallway/floor4/fore)
-"uTb" = (
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"uTc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"uTh" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"uTk" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"uTx" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 8
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"uTB" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/command/teleporter)
-"uTG" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/chem_master/condimaster,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"uTH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"uTI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet,
-/area/station/hallway/secondary/entry)
-"uTL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"uTP" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"uTW" = (
-/obj/machinery/light/directional/east,
-/turf/open/floor/carpet/royalblue,
-/area/station/commons/dorms/apartment2)
-"uTX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"uUg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"uUh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"uUj" = (
-/obj/structure/transit_tube/curved{
- dir = 8
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"uUw" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"uUE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/brig)
-"uUF" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor2/aft)
-"uUG" = (
-/obj/machinery/door/airlock/engineering{
- name = "Science Substation"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/maintenance/solars/starboard/fore)
-"uUU" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock{
- name = "Theater Backroom"
- },
-/obj/effect/turf_decal/siding/wideplating/corner{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/theatre,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"uUV" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"uVh" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/security/checkpoint)
-"uVj" = (
-/turf/open/floor/catwalk_floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"uVk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"uVz" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 1
- },
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"uVI" = (
-/obj/structure/closet/secure_closet/freezer/kitchen{
- req_access = list("bar")
- },
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"uVK" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"uVL" = (
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 9
- },
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"uVM" = (
-/mob/living/basic/pet/penguin/emperor{
- desc = "Spaghetti.";
- name = "Spaghetti"
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"uVN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/science/robotics/lab)
-"uVR" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/aft)
-"uVU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/fore)
-"uVV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"uVY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/tcommsat/computer)
-"uWi" = (
-/obj/machinery/chem_master{
- name = "Hydroanalysis Device"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"uWl" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/teleporter)
-"uWm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 9
- },
-/obj/structure/disposalpipe/sorting/mail/flip{
- dir = 8
- },
-/obj/effect/mapping_helpers/mail_sorting/engineering/general,
-/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office,
-/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"uWn" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/transit_tube/curved{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/ai_monitored/turret_protected/aisat)
-"uWx" = (
-/obj/item/multitool,
-/obj/effect/turf_decal/delivery,
-/obj/structure/table,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"uWy" = (
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"uWC" = (
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/maintenance/disposal)
-"uWM" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 1
- },
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"uWU" = (
-/obj/structure/falsewall,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"uXf" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"uXi" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/effect/turf_decal/stripes,
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"uXl" = (
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/robotics/lab)
-"uXo" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/ai_monitored/security/armory)
-"uXw" = (
-/obj/item/shard,
-/obj/effect/decal/cleanable/glass,
-/obj/item/stack/rods{
- amount = 3
- },
-/obj/effect/decal/cleanable/blood/drip,
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/aft)
-"uXA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"uXG" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"uXL" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 1
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"uXM" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 9
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark/corner,
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"uXR" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/effect/mapping_helpers/ianbirthday,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"uXU" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/mob/living/basic/mouse/brown/tom,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"uXX" = (
-/turf/closed/wall,
-/area/station/commons/toilet)
-"uYe" = (
-/obj/effect/turf_decal/trimline/red/corner,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/engineering/lobby)
-"uYg" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"uYl" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/emergency_shield/regenerating,
-/turf/open/floor/plating,
-/area/station/cargo/drone_bay)
-"uYB" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"uYI" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"uYM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/flip{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"uZc" = (
-/turf/closed/wall,
-/area/station/medical/abandoned)
-"uZf" = (
-/obj/structure/chair/sofa/bench{
- dir = 8
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"uZg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"uZk" = (
-/turf/closed/wall/mineral/silver{
- name = "padded wall"
- },
-/area/station/medical/psychology)
-"uZm" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"uZo" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"uZr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/red/dim/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"uZF" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor2/starboard/aft)
-"uZY" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"vae" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"vaf" = (
-/obj/machinery/telecomms/processor/preset_one,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"vag" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"val" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Fore Outpost"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"vap" = (
-/obj/structure/window/reinforced/plasma/spawner/directional/north,
-/obj/machinery/power/energy_accumulator/tesla_coil/anchored,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible/layer2,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"vau" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"vay" = (
-/obj/machinery/chem_master{
- name = "Hydroanalysis Device"
- },
-/obj/effect/turf_decal/tile/purple{
- dir = 8
- },
-/obj/structure/sign/poster/random/directional/south,
-/turf/open/floor/iron/white,
-/area/station/cargo/miningdock)
-"vaz" = (
-/obj/structure/bed/double,
-/obj/effect/spawner/random/bedsheet/double,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/landmark/start/shaft_miner,
-/turf/open/floor/carpet/green,
-/area/station/cargo/miningdock)
-"vaA" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/chair/sofa/middle/brown{
- dir = 8
- },
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"vaB" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "hosprivacy";
- name = "Privacy Shutters"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/hos)
-"vaC" = (
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"vaD" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"vaG" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"vaH" = (
-/obj/structure/table/wood,
-/obj/effect/spawner/random/entertainment/cigar,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/newscaster/directional/west,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"vaN" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "coffinbelt"
- },
-/obj/structure/closet/crate/coffin,
-/obj/machinery/light/directional/north,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"vaR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"vaW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
-/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle,
-/obj/structure/girder/reinforced,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"vbg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"vbB" = (
-/obj/effect/turf_decal/tile/green/opposingcorners{
- dir = 8
- },
-/obj/effect/turf_decal/box,
-/obj/machinery/holopad,
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"vbD" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/structure/table,
-/obj/item/dest_tagger{
- pixel_x = 7;
- pixel_y = 5
- },
-/obj/item/folder/yellow,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/office)
-"vbP" = (
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/science/genetics)
-"vbQ" = (
-/obj/machinery/door/airlock/science{
- name = "Xenocytology"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/xenobio,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"vbT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/corner,
-/obj/structure/table/reinforced,
-/obj/item/storage/box/lights/mixed{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/toolbox/electrical,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"vcd" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/airalarm/directional/west,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"vce" = (
-/obj/structure/bodycontainer/morgue/beeper_off{
- dir = 2
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"vcg" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"vcr" = (
-/turf/closed/wall,
-/area/station/maintenance/floor1/port/aft)
-"vcu" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"vcy" = (
-/obj/structure/sign/poster/contraband/random/directional/south,
-/obj/machinery/door/window/brigdoor/security/cell/left/directional/north{
- id = "cell-1";
- name = "1st Floor Prisoner Tube"
- },
-/obj/machinery/disposal/delivery_chute{
- dir = 1;
- name = "prisoner transport"
- },
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"vcM" = (
-/obj/machinery/duct,
-/obj/structure/sink/kitchen/directional/west,
-/turf/open/floor/catwalk_floor/iron_white,
-/area/station/cargo/miningdock)
-"vcT" = (
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/trimline/white/arrow_ccw{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"vcY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"vdb" = (
-/obj/effect/turf_decal/trimline/white/arrow_cw{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"vdc" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/landmark/start/hangover,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/commons/storage/primary)
-"vdd" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/obj/effect/turf_decal/trimline/red,
-/turf/open/floor/engine/n2,
-/area/station/engineering/atmos)
-"vdf" = (
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/aft)
-"vdn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"vds" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen{
- pixel_y = 2
- },
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"vdt" = (
-/obj/machinery/vending/assist,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/commons/storage/primary)
-"vdP" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"vdQ" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"vdU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"ved" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"veA" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"veB" = (
-/obj/effect/landmark/start/hangover,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"veF" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/structure/railing/corner,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"veG" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/fore)
-"veI" = (
-/obj/effect/turf_decal/siding/wood/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"veQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/service/chapel)
-"veT" = (
-/obj/machinery/power/supermatter_crystal/engine,
-/obj/effect/turf_decal/stripes/full,
-/obj/effect/turf_decal/stripes/red/full,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"vfa" = (
-/obj/structure/table/wood/fancy/red,
-/obj/item/flashlight/flare/candle,
-/obj/item/food/grown/poppy{
- pixel_x = -16;
- pixel_y = 2
- },
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"vfc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/service/chapel)
-"vfi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"vfG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/warehouse)
-"vfI" = (
-/obj/structure/chair/stool/bar/directional/north,
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/machinery/holopad,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"vfV" = (
-/obj/item/radio/intercom/directional/east,
-/obj/item/stack/sheet/iron/fifty,
-/obj/structure/rack,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"vfY" = (
-/obj/structure/table/reinforced,
-/obj/item/plate{
- pixel_x = -2;
- pixel_y = 4
- },
-/obj/item/knife/butcher,
-/obj/structure/sign/poster/official/cleanliness/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"vga" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"vgb" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"vgm" = (
-/obj/structure/reagent_dispensers/fueltank/large,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"vgo" = (
-/obj/machinery/vending/wardrobe/science_wardrobe,
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"vgx" = (
-/obj/machinery/door/airlock/external{
- name = "Atmospherics External Access"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal/incinerator)
-"vgH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/holosign/barrier/engineering,
-/turf/open/floor/iron/smooth,
-/area/station/construction)
-"vgX" = (
-/obj/effect/turf_decal/trimline/red/line,
-/obj/effect/turf_decal/trimline/white/warning,
-/obj/machinery/air_sensor/nitrous_tank,
-/turf/open/floor/engine/n2o,
-/area/station/engineering/atmos)
-"vgZ" = (
-/obj/structure/chair/sofa/bench{
- dir = 8
- },
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"vhd" = (
-/obj/machinery/smartfridge,
-/obj/machinery/door/firedoor,
-/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/service/kitchen)
-"vhj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"vhq" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"vhr" = (
-/obj/structure/bed,
-/obj/item/bedsheet/ian,
-/obj/item/binoculars,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"vhy" = (
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/engine/n2o,
-/area/station/engineering/atmos)
-"vhL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/research_director,
-/turf/open/floor/carpet/green,
-/area/station/command/heads_quarters/rd)
-"vhN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"vhP" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 8
- },
-/obj/structure/tank_holder/emergency_oxygen,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white/smooth_edge{
- dir = 8
- },
-/area/station/medical/abandoned)
-"vhS" = (
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/openspace,
-/area/station/maintenance/floor4/port)
-"vhV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/filled,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"vio" = (
-/obj/structure/chair/stool/bar/directional/north,
-/obj/effect/landmark/start/scientist,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"vip" = (
-/obj/machinery/vending/coffee,
-/turf/open/floor/iron,
-/area/station/commons/fitness)
-"viv" = (
-/obj/structure/table/reinforced,
-/obj/item/food/cake/chocolate{
- food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/drug/space_drugs = 10);
- name = "large pot brownie"
- },
-/obj/item/food/cake/chocolate{
- food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/drug/space_drugs = 10);
- name = "large pot brownie";
- pixel_y = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"viA" = (
-/obj/machinery/door/morgue{
- name = "Confession Booth"
- },
-/turf/open/floor/iron/dark/small,
-/area/station/service/chapel/office)
-"viG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/railing/corner/end/flip{
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"viL" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/siding/purple/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"viS" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/machinery/firealarm/directional/north,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"viX" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"viZ" = (
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor3/fore)
-"vjc" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/turf/open/floor/plating/reinforced{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/station/science/ordnance/bomb)
-"vjl" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"vjm" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"vjp" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"vju" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"vjv" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit)
-"vjC" = (
-/obj/machinery/chem_dispenser/drinks/beer,
-/obj/structure/table/glass,
-/obj/machinery/light/directional/north,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"vjJ" = (
-/obj/machinery/door/airlock/wood{
- name = "Bedroom"
- },
-/turf/open/floor/carpet/red,
-/area/station/commons/dorms/apartment1)
-"vjK" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"vjQ" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/siding/yellow{
- dir = 5
- },
-/obj/item/flashlight/flare/candle,
-/turf/open/floor/carpet/orange,
-/area/station/service/chapel/office)
-"vjT" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"vjX" = (
-/obj/effect/turf_decal/trimline/purple/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"vkb" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/aft)
-"vko" = (
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/office)
-"vkr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"vkz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 6
- },
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"vkO" = (
-/obj/structure/closet/firecloset,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"vkW" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"vkZ" = (
-/obj/structure/closet/secure_closet/warden,
-/obj/item/gun/energy/laser,
-/obj/item/radio/intercom/directional/east,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"vlb" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"vlf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/security/prison)
-"vlh" = (
-/obj/structure/fluff/shower_drain,
-/obj/effect/turf_decal/trimline/neutral,
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/freezer,
-/area/station/hallway/secondary/service)
-"vlm" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/shutters{
- id = "workshop-sci";
- name = "Workshop Shutters"
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"vlo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"vlq" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"vlD" = (
-/obj/machinery/light/directional/east,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/grass,
-/area/station/hallway/floor4/fore)
-"vlP" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 8
- },
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"vlQ" = (
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"vlV" = (
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 9
- },
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"vlX" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/carpet/red,
-/area/station/maintenance/floor3/port/aft)
-"vlY" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"vmc" = (
-/obj/machinery/door/airlock{
- id_tag = "nsminingdorm3";
- name = "Room 3"
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/cargo/miningdock)
-"vmr" = (
-/turf/closed/wall,
-/area/station/engineering/atmos/hfr_room)
-"vmA" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 6
- },
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"vmH" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"vmM" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"vmX" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/structure/rack,
-/obj/item/circuitboard/machine/processor{
- pixel_y = 10
- },
-/obj/item/circuitboard/machine/oven,
-/obj/item/circuitboard/machine/microwave{
- pixel_y = -10
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"vnd" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"vnp" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"vnt" = (
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"vnv" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/starboard)
-"vnz" = (
-/obj/structure/closet/firecloset,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"vnE" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"vnG" = (
-/obj/effect/turf_decal/siding/white/corner,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white/corner{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"vnI" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/storage)
-"vnK" = (
-/turf/closed/wall,
-/area/station/maintenance/floor2/starboard)
-"vnM" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 6
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"vnR" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"vnX" = (
-/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"vnY" = (
-/obj/structure/closet/secure_closet/personal/cabinet,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"vog" = (
-/obj/structure/bed/maint{
- pixel_y = 14
- },
-/obj/effect/mob_spawn/corpse/human/skeleton{
- pixel_y = 14
- },
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/cleanable/blood/innards{
- pixel_x = -3;
- pixel_y = -2
- },
-/obj/item/cigbutt/cigarbutt{
- desc = "A manky old cigar butt. This one is used as a sort of calling card among Last Edict agents, to mark their victims.";
- name = "liberation brand cigar";
- pixel_x = -17;
- pixel_y = 13
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"voj" = (
-/obj/item/kirbyplants/random,
-/obj/structure/sign/departments/evac/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"vok" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/effect/spawner/random/trash/garbage{
- spawn_scatter_radius = 1
- },
-/obj/item/pen/survival,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"vom" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"voA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"voB" = (
-/obj/item/radio/intercom/directional/north,
-/obj/structure/table/reinforced/rglass,
-/obj/item/storage/medkit/emergency{
- pixel_x = -4
- },
-/obj/item/storage/medkit/emergency,
-/obj/item/storage/medkit/emergency{
- pixel_x = 4
- },
-/obj/effect/turf_decal/siding/white,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"voG" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 1
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"voH" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 4
- },
-/area/station/maintenance/floor1/starboard/aft)
-"voO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/firecloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"voT" = (
-/turf/closed/wall,
-/area/station/maintenance/floor4/port/fore)
-"voX" = (
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/railing,
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"vpa" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"vpb" = (
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/fore)
-"vph" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"vpj" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/radio/intercom/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"vpn" = (
-/obj/machinery/biogenerator,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard)
-"vpp" = (
-/obj/structure/stairs/north,
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"vpy" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/shower/directional/west,
-/turf/open/floor/noslip,
-/area/station/science/lobby)
-"vpA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"vpD" = (
-/obj/structure/table,
-/obj/item/restraints/legcuffs/beartrap{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/restraints/legcuffs/beartrap{
- pixel_x = 4;
- pixel_y = 8
- },
-/obj/machinery/newscaster/directional/north,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"vpE" = (
-/obj/structure/table,
-/obj/item/folder/blue{
- pixel_x = -2;
- pixel_y = 3
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"vqb" = (
-/obj/structure/bed{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"vqd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"vqe" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/contraband/landmine,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"vqp" = (
-/obj/structure/closet/secure_closet/hydroponics,
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"vqv" = (
-/obj/structure/chair/plastic{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"vqx" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/railing/corner,
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"vqz" = (
-/obj/effect/turf_decal/stripes,
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/camera/directional/east{
- c_tag = "Science - Containment Lab"
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/plating,
-/area/station/science/auxlab/firing_range)
-"vqB" = (
-/obj/structure/railing,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/service/library/private)
-"vqC" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"vqF" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/components/binary/pump/on{
- name = "Airmix to Distro"
- },
-/turf/open/floor/iron/white,
-/area/station/engineering/atmos)
-"vqN" = (
-/obj/effect/spawner/random/trash/grime,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"vqQ" = (
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"vqS" = (
-/obj/effect/decal/cleanable/oil/streak,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"vrh" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/commons/storage/primary)
-"vrk" = (
-/obj/structure/table,
-/obj/machinery/newscaster/directional/east,
-/obj/machinery/camera/directional/south{
- c_tag = "Departure Lounge - Security Post"
- },
-/obj/item/book/manual/wiki/security_space_law{
- pixel_x = -4;
- pixel_y = 4
- },
-/obj/item/taperecorder{
- pixel_x = 4
- },
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"vrn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"vrs" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/turf/open/floor/iron/dark,
-/area/station/security/detectives_office/private_investigators_office)
-"vrt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/mob/living/simple_animal/bot/secbot/pingsky,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"vrw" = (
-/obj/effect/spawner/random/trash/bin,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"vrA" = (
-/turf/closed/wall,
-/area/station/medical/morgue)
-"vrJ" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/teleporter)
-"vrM" = (
-/obj/machinery/door/airlock/security{
- name = "Interrogation"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"vrN" = (
-/obj/structure/table/reinforced,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"vrU" = (
-/obj/effect/spawner/random/structure/closet_empty,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"vrX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"vse" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"vsg" = (
-/obj/structure/table/wood,
-/obj/item/folder/yellow{
- pixel_x = -6
- },
-/obj/item/stamp/head/qm{
- pixel_x = -6
- },
-/obj/structure/cable,
-/obj/item/flashlight/lamp/green{
- pixel_x = 6;
- pixel_y = 15
- },
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"vsj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction/flip{
- dir = 1
- },
-/obj/effect/landmark/navigate_destination/dockesc,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"vsk" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"vsn" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"vsv" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"vsx" = (
-/turf/closed/wall,
-/area/station/security/detectives_office/private_investigators_office)
-"vsy" = (
-/obj/machinery/camera/directional/west,
-/obj/structure/chair/sofa/corner/brown{
- dir = 1
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"vsK" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/kitchen/diner)
-"vsL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"vsM" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"vsN" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"vsO" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"vsP" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"vsU" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"vsY" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"vtj" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/item/folder/yellow,
-/obj/item/wrench,
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"vtt" = (
-/obj/machinery/door/airlock/atmos{
- name = "Atmospherics"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"vtH" = (
-/obj/effect/turf_decal/trimline/white/filled/corner{
- color = "#065C93";
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/command/bridge)
-"vtO" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"vtS" = (
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/obj/machinery/computer/atmos_control/mix_tank,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"vtW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"vud" = (
-/obj/machinery/firealarm/directional/west,
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #4";
- dir = 8;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"vuf" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/contraband/cannabis,
-/obj/effect/spawner/random/contraband/narcotics,
-/obj/effect/spawner/random/contraband/permabrig_weapon,
-/obj/effect/spawner/random/contraband/armory,
-/obj/effect/spawner/random/contraband,
-/obj/structure/closet/secure_closet{
- name = "contraband locker";
- req_access = list("armory")
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"vuk" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/extinguisher_cabinet/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"vuo" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"vuq" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/construction/mining/aux_base)
-"vuB" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"vuD" = (
-/obj/effect/turf_decal/trimline/white/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"vuG" = (
-/obj/machinery/camera/autoname/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"vuI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 4
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"vuN" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"vuU" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"vuW" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"vuZ" = (
-/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron/cafeteria,
-/area/station/engineering/atmos)
-"vva" = (
-/obj/structure/sign/poster/random/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"vvb" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"vvm" = (
-/obj/structure/closet{
- name = "janitorial supplies"
- },
-/obj/item/pushbroom,
-/obj/item/mop,
-/obj/item/reagent_containers/cup/bucket,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"vvs" = (
-/obj/machinery/duct,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/structure/closet/radiation,
-/turf/open/floor/plating,
-/area/station/science/genetics)
-"vvx" = (
-/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hydroponics/glass,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"vvC" = (
-/obj/structure/ladder,
-/obj/effect/turf_decal/stripes/white/box,
-/turf/open/floor/plating/airless,
-/area/station/solars/port/aft)
-"vvJ" = (
-/obj/effect/spawner/random/vending/snackvend,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/north,
-/turf/open/floor/wood,
-/area/station/maintenance/floor1/port/aft)
-"vvK" = (
-/obj/machinery/vending/engivend,
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 4
- },
-/area/station/engineering/lobby)
-"vvX" = (
-/obj/machinery/door_buttons/access_button{
- idDoor = "virology_airlock_exterior";
- idSelf = "virology_airlock_control";
- name = "Virology Access Button";
- pixel_y = 24;
- req_access = list("virology")
- },
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw{
- dir = 9
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"vvY" = (
-/obj/item/kirbyplants/random,
-/obj/item/radio/intercom/directional/south,
-/obj/structure/sign/departments/aisat/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor4/aft)
-"vwc" = (
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"vwd" = (
-/obj/structure/railing{
- dir = 1
- },
-/mob/living/basic/crab,
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"vwn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"vwB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"vwD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 5
- },
-/obj/effect/spawner/random/structure/grille,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"vwJ" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"vwN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/components/binary/valve/layer4{
- dir = 8;
- name = "distro access"
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard/aft)
-"vwQ" = (
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"vwW" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/office)
-"vxn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/security/eva)
-"vxq" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"vxx" = (
-/turf/open/floor/iron/dark/textured_edge{
- dir = 1
- },
-/area/station/maintenance/floor1/starboard/aft)
-"vxy" = (
-/turf/closed/wall,
-/area/station/service/lawoffice)
-"vxz" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"vxG" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port)
-"vxH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet,
-/area/station/cargo/miningdock)
-"vxK" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/science/explab)
-"vxT" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-14";
- location = "3-13"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"vxU" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"vxY" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-10";
- location = "1-9"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"vyc" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
- dir = 10
- },
-/obj/structure/window/reinforced/plasma/spawner/directional/south,
-/turf/open/floor/engine/airless,
-/area/station/science/ordnance/freezerchamber)
-"vym" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/landmark/start/medical_doctor,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/fore)
-"vyn" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"vyu" = (
-/obj/effect/mapping_helpers/airlock/access/all/command/captain,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/command{
- name = "Captain's Quarters"
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"vyz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"vyA" = (
-/obj/effect/turf_decal/trimline/green/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"vyF" = (
-/obj/item/chair,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"vyH" = (
-/obj/machinery/biogenerator,
-/obj/machinery/camera/directional/south{
- c_tag = "Genetics Lab"
- },
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"vyK" = (
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"vyL" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/teleporter)
-"vyN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"vyQ" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark/corner{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Atmos Tank #4 - CO2";
- dir = 1;
- network = list("ss13","engine")
- },
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"vyR" = (
-/turf/closed/wall/r_wall,
-/area/station/ai_monitored/turret_protected/ai)
-"vyW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"vyZ" = (
-/obj/effect/turf_decal/trimline/brown/arrow_ccw,
-/turf/open/floor/iron/dark/side,
-/area/station/cargo/lobby)
-"vzo" = (
-/obj/machinery/netpod,
-/obj/structure/railing,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/cargo/bitrunning/den)
-"vzu" = (
-/obj/effect/landmark/start/psychologist,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/structure/chair/sofa/left/brown{
- dir = 1
- },
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"vzv" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"vzw" = (
-/obj/machinery/light_switch/directional/north,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"vzx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/blood/drip,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"vzM" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"vzN" = (
-/obj/structure/chair/sofa/middle/brown{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"vzO" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"vzP" = (
-/obj/effect/turf_decal/trimline/blue/arrow_cw{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/arrow_ccw{
- dir = 8
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"vzS" = (
-/obj/structure/table/wood/poker,
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"vzY" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/bookcase/random/fiction,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"vzZ" = (
-/turf/open/misc/dirt/jungle,
-/area/station/science/cytology)
-"vAd" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 4
- },
-/obj/item/kirbyplants/photosynthetic{
- pixel_y = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"vAe" = (
-/obj/machinery/newscaster/directional/west,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 1
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"vAg" = (
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"vAp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/siding/wood,
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/structure/cable,
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"vAs" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/light_switch/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"vAy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"vAA" = (
-/obj/structure/extinguisher_cabinet/directional/west,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"vAB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance/two,
-/obj/effect/decal/cleanable/wrapping,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"vAS" = (
-/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
-/obj/machinery/door/airlock/multi_tile/public/glass{
- name = "Xenoflora"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"vAU" = (
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"vAW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 1
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"vBa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"vBd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood,
-/obj/effect/decal/cleanable/crayon{
- icon_state = "body"
- },
-/obj/effect/decal/cleanable/chem_pile,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/plating,
-/area/station/service/abandoned_gambling_den)
-"vBw" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"vBA" = (
-/obj/machinery/door/airlock/medical{
- name = "Safe Habitation B"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"vBB" = (
-/obj/machinery/light/small/red/directional/west,
-/turf/open/openspace,
-/area/station/service/library/private)
-"vBI" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green{
- pixel_x = 1;
- pixel_y = 5
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"vBN" = (
-/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/shoes/magboots,
-/obj/structure/rack,
-/obj/structure/window/spawner/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/command/storage/eva)
-"vBP" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/engineering/tool,
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/maintenance/floor2/starboard/fore)
-"vBS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit)
-"vCy" = (
-/obj/effect/spawner/random/structure/table_fancy,
-/obj/structure/sign/painting/large/library_private{
- pixel_y = -30
- },
-/obj/machinery/door/window/brigdoor/left/directional/north{
- name = "Secure Art Storage";
- req_access = list("library")
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"vCG" = (
-/obj/effect/spawner/random/maintenance/two,
-/obj/structure/grille/broken,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"vCH" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/restroom/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"vCI" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/machinery/door/window/right/directional/west,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"vCP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/duct,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/security/brig)
-"vDf" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"vDg" = (
-/obj/structure/window/plasma/spawner/directional/south,
-/obj/machinery/rnd/server,
-/turf/open/floor/circuit/telecomms,
-/area/station/science/server)
-"vDo" = (
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor3/starboard/fore)
-"vDu" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 5
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/atmos)
-"vDw" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"vDC" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"vDJ" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/machinery/vending/wardrobe/det_wardrobe,
-/turf/open/floor/iron/grimy,
-/area/station/security/detectives_office)
-"vDL" = (
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"vDN" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/vending/coffee,
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"vDV" = (
-/obj/machinery/door/window/right/directional/south{
- name = "Lights Access";
- req_access = list("bar")
- },
-/obj/structure/flora/bush/sparsegrass/style_random,
-/turf/open/floor/grass,
-/area/station/service/bar/atrium)
-"vEa" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor4/port)
-"vEg" = (
-/obj/effect/mapping_helpers/airlock/access/any/security/court,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/security{
- name = "Law Hall"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"vEr" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 10
- },
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"vEt" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/spawner/random/structure/grille,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"vEx" = (
-/turf/open/floor/iron/textured_corner{
- dir = 1
- },
-/area/station/cargo/sorting)
-"vED" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"vEN" = (
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/project)
-"vER" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"vES" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"vFw" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"vFC" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/cargo/miningdock)
-"vFE" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"vFJ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"vFS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/maintenance,
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"vFV" = (
-/obj/effect/turf_decal/trimline/blue/end,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/obj/machinery/door/airlock/command/glass{
- name = "Queue Access"
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "hopline";
- name = "Queue Shutters"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"vGi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 1
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"vGk" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"vGt" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/railing/corner/end{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"vGv" = (
-/obj/machinery/vending/boozeomat,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/bar)
-"vGy" = (
-/obj/effect/turf_decal/trimline/blue/arrow_cw{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/arrow_ccw{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"vGO" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 4
- },
-/obj/machinery/firealarm/directional/west,
-/obj/item/knife/plastic,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"vGT" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"vHa" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"vHd" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"vHi" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"vHm" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/turf_decal/siding/white,
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/iron/grimy,
-/area/station/science/xenobiology/hallway)
-"vHq" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 8
- },
-/obj/effect/spawner/random/trash/garbage,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"vHz" = (
-/obj/machinery/field/generator,
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"vHC" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal/incinerator)
-"vHI" = (
-/obj/effect/spawner/random/trash/mess,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"vHN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/broken/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit)
-"vHQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/modular_computer/preset/engineering{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow/half/contrasted,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"vHX" = (
-/obj/effect/spawner/random/decoration/glowstick,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"vIa" = (
-/obj/effect/turf_decal/trimline/purple/corner,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"vIb" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 8
- },
-/obj/item/radio/intercom/directional/south,
-/obj/effect/turf_decal/trimline/white/mid_joiner{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"vIh" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"vIn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"vIo" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/office)
-"vIp" = (
-/obj/effect/turf_decal/tile/neutral/opposingcorners{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/rd)
-"vIr" = (
-/obj/structure/cable,
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/security/detectives_office)
-"vIx" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/flowers_yw/style_random,
-/turf/open/floor/grass,
-/area/station/hallway/floor1/fore)
-"vIC" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/item/integrated_circuit/loaded/speech_relay,
-/obj/item/integrated_circuit/loaded/hello_world{
- pixel_x = -3;
- pixel_y = 15
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"vIE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"vIF" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/item/radio/off{
- pixel_x = 4;
- pixel_y = 3
- },
-/obj/item/radio/off{
- pixel_x = -6;
- pixel_y = 3
- },
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"vIO" = (
-/obj/effect/decal/cleanable/glitter,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"vIS" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"vIZ" = (
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"vJf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"vJk" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/item/cultivator/rake,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"vJs" = (
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"vJu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"vJC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"vJE" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"vJF" = (
-/obj/machinery/light/small/directional/north,
-/obj/structure/table/reinforced/rglass,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 9
- },
-/obj/machinery/computer/records/medical/laptop{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"vJH" = (
-/obj/effect/spawner/random/entertainment/arcade,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"vJS" = (
-/obj/machinery/requests_console/directional/north{
- department = "Law Office";
- name = "Lawyer Requests Console"
- },
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"vKe" = (
-/obj/structure/hedge/opaque,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"vKf" = (
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"vKp" = (
-/obj/machinery/telecomms/server/presets/service,
-/turf/open/floor/circuit/telecomms,
-/area/station/tcommsat/server)
-"vKs" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"vKv" = (
-/obj/item/stack/ducts/fifty,
-/obj/structure/rack,
-/turf/open/floor/iron/textured_large,
-/area/station/medical/chemistry)
-"vKz" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/sign/departments/psychology/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"vKA" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"vKB" = (
-/obj/structure/chair/office/light{
- dir = 4
- },
-/obj/effect/turf_decal/siding/purple/corner{
- dir = 4
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"vKY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Lower Library"
- },
-/turf/open/floor/iron,
-/area/station/service/library/lounge)
-"vLa" = (
-/obj/machinery/power/turbine/turbine_outlet{
- dir = 1
- },
-/turf/open/floor/engine,
-/area/station/maintenance/disposal/incinerator)
-"vLb" = (
-/obj/structure/table,
-/turf/open/floor/iron,
-/area/station/commons/dorms/room1)
-"vLd" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/effect/decal/cleanable/xenoblood,
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"vLv" = (
-/obj/structure/hedge,
-/turf/open/floor/iron/dark,
-/area/station/science/genetics)
-"vLx" = (
-/obj/machinery/ai_slipper{
- uses = 8
- },
-/turf/open/floor/circuit,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"vLz" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet,
-/obj/effect/spawner/random/maintenance/three,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"vLJ" = (
-/obj/effect/decal/cleanable/ash,
-/obj/machinery/light_switch/directional/south,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"vLL" = (
-/obj/structure/dresser,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"vLM" = (
-/obj/structure/rack,
-/obj/item/reagent_containers/cup/bottle/mercury{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/nitrogen{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/oxygen{
- pixel_x = 1
- },
-/turf/open/floor/iron/dark/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"vLP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"vLW" = (
-/turf/closed/wall/r_wall,
-/area/station/command/heads_quarters/captain)
-"vLX" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"vMg" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor4/aft)
-"vMh" = (
-/obj/machinery/firealarm/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 4
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"vMk" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/rack,
-/obj/item/pushbroom,
-/obj/item/mop,
-/obj/item/reagent_containers/cup/bucket,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"vMm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"vMF" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"vNa" = (
-/obj/effect/decal/cleanable/blood/drip,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/maintenance/floor4/port/fore)
-"vNj" = (
-/obj/structure/rack,
-/obj/effect/turf_decal/tile/dark/full,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/engineering/storage/tech)
-"vNo" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/landmark/start/medical_doctor,
-/obj/structure/chair/office/light,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"vNq" = (
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"vNr" = (
-/obj/effect/decal/cleanable/glitter,
-/obj/effect/turf_decal/siding/blue/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"vNM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"vNN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"vNO" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/solars/starboard/fore)
-"vNP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"vNR" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/mob/living/basic/goat/pete,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"vNS" = (
-/obj/structure/cable,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/effect/turf_decal/tile/dark_blue{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison/garden)
-"vNV" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"vNY" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"vNZ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/cargo/warehouse)
-"vOf" = (
-/obj/effect/mapping_helpers/broken_floor,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/east,
-/turf/open/floor/wood/large,
-/area/station/service/kitchen/kitchen_backroom)
-"vOn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"vOo" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"vOs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"vOt" = (
-/obj/machinery/door/airlock/hatch{
- name = "Robotics Maintenance"
- },
-/obj/effect/mapping_helpers/airlock/access/all/science/robotics,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"vOv" = (
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"vOx" = (
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 5
- },
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"vOy" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 10
- },
-/obj/structure/window/spawner/directional/east,
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"vOE" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/red/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"vOK" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"vOM" = (
-/obj/effect/turf_decal/siding/wood/corner,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"vON" = (
-/obj/effect/turf_decal/trimline/yellow/warning{
- dir = 1
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"vOW" = (
-/obj/structure/disposaloutlet{
- dir = 4
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"vOZ" = (
-/obj/machinery/iv_drip,
-/obj/structure/mirror/directional/south,
-/obj/structure/sign/poster/official/cleanliness/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"vPg" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"vPj" = (
-/obj/machinery/light_switch/directional/east,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"vPu" = (
-/obj/machinery/light/red/dim/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port)
-"vPA" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional,
-/turf/open/floor/plating,
-/area/station/service/chapel/office)
-"vPE" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/warning,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"vPH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2,
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark/textured_corner,
-/area/station/hallway/floor1/aft)
-"vPN" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/structure/table/reinforced/rglass,
-/obj/item/paper_bin,
-/obj/item/stamp/head/cmo,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"vPP" = (
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"vQb" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/theater)
-"vQd" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/machinery/computer/atmos_control/nitrous_tank,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/cafeteria,
-/area/station/engineering/atmos)
-"vQf" = (
-/obj/structure/table,
-/obj/item/ai_module/reset/purge,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/effect/spawner/random/aimodule/neutral{
- pixel_x = 15
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"vQg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 1
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"vQi" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"vQs" = (
-/obj/effect/turf_decal/siding/white/corner,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/large,
-/area/station/command/heads_quarters/rd)
-"vQt" = (
-/obj/structure/table/bronze,
-/obj/item/food/grown/poppy{
- pixel_y = 2
- },
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"vQx" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/window/spawner/directional/south,
-/obj/structure/window/spawner/directional/north,
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/hallway/secondary/exit/departure_lounge)
-"vQR" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/ai_monitored/command/nuke_storage)
-"vQY" = (
-/obj/effect/turf_decal/tile/brown/opposingcorners,
-/obj/effect/turf_decal/tile/brown/opposingcorners,
-/obj/effect/turf_decal/stripes/white/line,
-/obj/machinery/component_printer,
-/turf/open/floor/iron/dark,
-/area/station/science/circuits)
-"vQZ" = (
-/obj/machinery/door/airlock{
- id_tag = "dorms_lux_2_bolts";
- name = "Luxury Dorm 2"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment2)
-"vRa" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/light/red/dim/directional/west,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"vRj" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"vRm" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"vRn" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/iron/dark,
-/area/station/commons/vacant_room/commissary)
-"vRq" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port/fore)
-"vRv" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"vRC" = (
-/obj/structure/disposalpipe/trunk/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"vRF" = (
-/obj/vehicle/sealed/mecha/ripley/paddy/preset,
-/turf/open/floor/iron/recharge_floor,
-/area/station/security/mechbay)
-"vRO" = (
-/turf/open/openspace,
-/area/station/hallway/floor4/aft)
-"vRQ" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/station/construction)
-"vRR" = (
-/obj/machinery/newscaster/directional/east,
-/obj/structure/chair{
- dir = 8
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/vacant_room/commissary)
-"vSa" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"vSg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/navigate_destination/cargo,
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"vSA" = (
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"vSB" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/aft)
-"vSE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 4
- },
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"vSG" = (
-/obj/structure/table,
-/obj/item/stack/sheet/iron{
- amount = 10
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"vSQ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"vSW" = (
-/obj/structure/sign/poster/official/moth_hardhat/directional/east,
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/toolbox,
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"vSX" = (
-/obj/structure/toilet{
- dir = 4
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/kitchen/diner)
-"vTf" = (
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"vTj" = (
-/obj/structure/closet/secure_closet/brig/genpop,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/obj/item/card/id/advanced/prisoner/one,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/brig)
-"vTk" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/mapping_helpers/airlock/access/any/service/kitchen,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/silver/glass{
- name = "Kitchen"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/kitchen)
-"vTo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/dorms/room1)
-"vTt" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/cargo/drone_bay)
-"vTL" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/station/commons/fitness/recreation)
-"vTN" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"vTS" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"vTV" = (
-/obj/effect/turf_decal/box/corners{
- dir = 4
- },
-/obj/structure/sign/warning/gas_mask/directional/east,
-/turf/open/floor/engine/xenobio,
-/area/station/science/xenobiology)
-"vTY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"vUc" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"vUd" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"vUt" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/dark/visible{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"vUv" = (
-/obj/item/kirbyplants/random,
-/obj/item/radio/intercom/directional/west,
-/obj/structure/sign/departments/security/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"vUG" = (
-/obj/structure/easel,
-/obj/item/canvas/twentyfour_twentyfour,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor3/aft)
-"vUK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/half,
-/area/station/engineering/atmos/hfr_room)
-"vUQ" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/structure/window/spawner/directional/east,
-/obj/structure/chair/sofa/bench{
- dir = 8
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"vUS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/chair/sofa/right/brown{
- dir = 4
- },
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"vVf" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/commons/storage/primary)
-"vVo" = (
-/obj/structure/window/plasma/spawner/directional/south,
-/obj/machinery/rnd/server/master,
-/turf/open/floor/circuit/telecomms,
-/area/station/science/server)
-"vVu" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/aft)
-"vVB" = (
-/obj/structure/chair{
- dir = 4;
- name = "Prosecution"
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"vVD" = (
-/obj/effect/turf_decal/siding/blue{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"vVG" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"vVH" = (
-/obj/structure/table/reinforced,
-/obj/machinery/microwave{
- pixel_y = 6
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen/abandoned)
-"vVJ" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"vVR" = (
-/obj/structure/table/reinforced/rglass,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/airalarm/directional/north,
-/obj/item/food/pizzaslice/mothic_five_cheese,
-/obj/item/reagent_containers/cup/glass/coffee{
- pixel_y = 7;
- pixel_x = 6
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/lobby)
-"vVT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/service/chapel)
-"vVW" = (
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"vWa" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"vWg" = (
-/obj/machinery/computer/scan_consolenew{
- dir = 8
- },
-/obj/effect/turf_decal/siding/purple{
- dir = 5
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"vWj" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"vWn" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/green/half/contrasted,
-/obj/item/radio/intercom/prison/directional/north,
-/obj/item/toy/cards/deck/wizoff{
- pixel_x = -7
- },
-/obj/item/toy/cards/deck/kotahi{
- pixel_x = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"vWp" = (
-/obj/effect/turf_decal/tile/brown/opposingcorners{
- dir = 1
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"vWw" = (
-/turf/closed/wall/r_wall,
-/area/station/security/office)
-"vWz" = (
-/obj/structure/table/reinforced,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"vWD" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"vWE" = (
-/obj/effect/spawner/structure/window/reinforced/tinted,
-/turf/open/floor/plating,
-/area/station/security/interrogation)
-"vWF" = (
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/fore)
-"vWG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/entry)
-"vWP" = (
-/obj/structure/table/reinforced,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/robotics/lab)
-"vWQ" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"vWS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"vWX" = (
-/obj/structure/table/reinforced,
-/obj/item/reagent_containers/cup/mortar,
-/obj/item/pestle,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"vXc" = (
-/obj/structure/grille/broken,
-/obj/effect/turf_decal/trimline/red/line{
- dir = 5
- },
-/obj/effect/spawner/random/contraband/permabrig_weapon,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"vXh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"vXm" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/holopad,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"vXn" = (
-/obj/machinery/button/door/directional/south{
- id = "survhang";
- name = "Hangar Shutters"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 10
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"vXv" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/railing/corner,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"vXx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/obj/machinery/light/small/directional/north,
-/obj/machinery/airalarm/directional/north,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"vXH" = (
-/obj/machinery/airalarm/directional/south,
-/obj/effect/decal/cleanable/blood/drip,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"vXM" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/plumbed,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"vXP" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/item/radio/intercom/directional/west,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"vXT" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"vXY" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"vYl" = (
-/obj/effect/turf_decal/siding/wideplating,
-/obj/machinery/chem_heater/withbuffer,
-/obj/machinery/requests_console/directional/west{
- department = "Pharmacy";
- name = "Pharmacy Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/ore_update,
-/obj/effect/mapping_helpers/requests_console/supplies,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/pharmacy)
-"vYw" = (
-/obj/effect/turf_decal/trimline/neutral/warning,
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"vYD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"vYE" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"vYH" = (
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible/layer2,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"vYJ" = (
-/obj/machinery/door/airlock/highsecurity{
- name = "AI Chamber"
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id = "AI Chamber entrance shutters";
- name = "AI Chamber Entrance Shutters"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"vYV" = (
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/doppler_array{
- dir = 6
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"vYX" = (
-/obj/item/radio/intercom/directional/west{
- freerange = 1;
- listening = 0;
- name = "Common Channel";
- pixel_y = 4
- },
-/obj/item/radio/intercom/directional/north{
- freerange = 1;
- listening = 0;
- name = "Custom Channel"
- },
-/obj/item/radio/intercom/directional/east{
- freerange = 1;
- listening = 0;
- name = "Common Channel";
- pixel_y = 4
- },
-/obj/effect/landmark/start/ai,
-/turf/open/floor/circuit/red,
-/area/station/ai_monitored/turret_protected/ai)
-"vZb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/yellow/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"vZg" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen/diner)
-"vZi" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/item/storage/medkit/regular,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"vZl" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"vZn" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 4
- },
-/turf/open/water/beach{
- desc = "Refreshing!";
- name = "treated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"vZq" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"vZw" = (
-/obj/structure/closet/crate/engineering,
-/obj/effect/turf_decal/bot,
-/obj/item/storage/box/lights/mixed{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/box/lights/mixed,
-/obj/item/flashlight,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"vZC" = (
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/fore)
-"vZF" = (
-/obj/structure/closet/secure_closet/freezer/fridge,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"vZJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/sign/directions/evac/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"vZK" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"vZU" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"wat" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"wau" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"waI" = (
-/obj/effect/turf_decal/stripes,
-/obj/machinery/atmospherics/components/binary/pump/off{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"waJ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison/visit)
-"waV" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/large,
-/area/station/security/prison/safe)
-"waX" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"waY" = (
-/obj/effect/decal/cleanable/glass,
-/obj/item/reagent_containers/cup/glass/drinkingglass/filled/soda{
- pixel_x = 5;
- pixel_y = -3
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/department/engine/atmos)
-"wba" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/airalarm/directional/south,
-/obj/structure/sink/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"wbf" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"wbg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"wbk" = (
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/commons/dorms/room1)
-"wbo" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"wbp" = (
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"wbr" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"wbx" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/oil,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"wbR" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/closet/radiation,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"wbS" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lower)
-"wbT" = (
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"wci" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/machinery/restaurant_portal/bar,
-/obj/machinery/digital_clock/directional/south,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"wcm" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/landmark/start/security_officer,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"wcn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"wcs" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/machinery/light/warm/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"wcA" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/glass,
-/obj/item/paper_bin,
-/obj/item/folder/white{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/folder/white{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/folder/white{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/pen/red{
- pixel_x = 2;
- pixel_y = 2
- },
-/obj/item/pen{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/item/pen/blue{
- pixel_x = 6;
- pixel_y = 6
- },
-/obj/machinery/light/cold/directional/west,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"wcC" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"wcF" = (
-/obj/structure/closet/crate,
-/obj/item/food/breadslice/plain,
-/obj/item/food/breadslice/plain,
-/obj/item/food/breadslice/plain,
-/obj/item/food/grown/potato,
-/obj/item/food/grown/potato,
-/obj/item/food/grown/onion,
-/obj/item/food/grown/onion,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood,
-/obj/effect/turf_decal/tile/green/half/contrasted,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"wcG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"wcH" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"wcL" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"wcQ" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/dark_blue/end{
- dir = 4
- },
-/obj/structure/sign/poster/random/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"wcR" = (
-/obj/structure/closet/crate/preopen,
-/obj/effect/spawner/random/engineering/material_cheap,
-/obj/effect/spawner/random/engineering/flashlight,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"wcT" = (
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/science/robotics/lab)
-"wcW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/prison)
-"wcX" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"wdb" = (
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"wdd" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/bed/medical/anchored,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"wdj" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/virology/isolation)
-"wdq" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/disposal)
-"wdw" = (
-/obj/structure/ladder,
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"wdA" = (
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/south,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"wdC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"wdL" = (
-/turf/closed/wall/r_wall,
-/area/station/security/checkpoint/first)
-"wdP" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"wdS" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"wdX" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/effect/spawner/random/contraband/prison,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"wdZ" = (
-/obj/machinery/conveyor{
- dir = 6;
- id = "coffinbelt"
- },
-/obj/structure/closet/crate/coffin,
-/turf/open/floor/plating,
-/area/station/service/chapel/funeral)
-"weg" = (
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/effect/turf_decal/arrows,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"wet" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-18";
- location = "3-17"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"weB" = (
-/obj/effect/turf_decal/trimline/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/line{
- dir = 8
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/poddoor{
- elevator_mode = 1;
- transport_linked_id = "com_vator"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"weO" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"weQ" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/wood/parquet,
-/area/station/service/lawoffice)
-"weY" = (
-/obj/effect/turf_decal/trimline/purple/arrow_ccw,
-/obj/machinery/door/firedoor/heavy,
-/obj/effect/turf_decal/delivery,
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/extinguisher_cabinet/directional/south,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/miningdock)
-"wfb" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"wfe" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"wff" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Holodeck Door"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "holodeck"
- },
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"wfl" = (
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 1
- },
-/obj/machinery/portable_atmospherics/canister,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"wfx" = (
-/obj/machinery/door/window/brigdoor/left/directional/west,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"wfy" = (
-/obj/structure/closet,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/neck/fake_heretic_amulet,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"wfD" = (
-/obj/machinery/light/directional/east,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/command/bridge)
-"wfI" = (
-/obj/machinery/light_switch/directional/west,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"wfR" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/commons/dorms/apartment2)
-"wfT" = (
-/turf/closed/wall,
-/area/station/engineering/atmos/office)
-"wfW" = (
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/white/line,
-/obj/effect/turf_decal/trimline/white/line{
- dir = 1
- },
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"wgn" = (
-/obj/structure/cable,
-/obj/machinery/light/small/directional/north,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/iron/dark/smooth_half,
-/area/station/engineering/storage/tech)
-"wgr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"wgu" = (
-/obj/structure/cable,
-/obj/machinery/conveyor{
- dir = 9;
- id = "mining"
- },
-/turf/open/floor/iron/checker,
-/area/station/cargo/miningdock)
-"wgO" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/command/meeting_room)
-"wha" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"whb" = (
-/obj/effect/turf_decal/caution/stand_clear,
-/obj/effect/turf_decal/siding/dark_blue,
-/obj/effect/turf_decal/siding/dark_blue{
- dir = 1
- },
-/obj/machinery/door/poddoor/shutters/window{
- id = "stationawaygate";
- name = "Gateway Access Shutters"
- },
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"whf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"whj" = (
-/obj/machinery/door/window/brigdoor/left/directional/south,
-/turf/open/misc/sandy_dirt,
-/area/station/maintenance/floor1/starboard)
-"whw" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/misc/dirt/jungle,
-/area/station/science/cytology)
-"whF" = (
-/obj/machinery/shower/directional/east,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/engineering/atmos/pumproom)
-"whI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"whJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/cable/layer3,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"whL" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"whM" = (
-/obj/item/radio/intercom/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"whR" = (
-/turf/closed/wall,
-/area/station/service/bar)
-"whU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/mirror/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/sink/directional/south,
-/turf/open/floor/wood/large,
-/area/station/maintenance/floor4/starboard/aft)
-"whV" = (
-/turf/closed/wall,
-/area/station/maintenance/floor1/starboard)
-"wic" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/north,
-/obj/effect/turf_decal/trimline/neutral/filled/line{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"win" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"wir" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"wis" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"wit" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/security/prison)
-"wiu" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/service/chapel/office)
-"wiv" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair/sofa/right/brown{
- dir = 8
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"wiB" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/fore)
-"wiC" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"wiF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"wiJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/assembly/mousetrap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"wiL" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 8
- },
-/obj/machinery/newscaster/directional/south,
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"wiN" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"wiR" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/item/crowbar,
-/obj/item/crowbar{
- pixel_x = -1;
- pixel_y = 3
- },
-/obj/item/crowbar{
- pixel_x = -1;
- pixel_y = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"wiT" = (
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/warden)
-"wjj" = (
-/obj/effect/mapping_helpers/airlock/access/all/command/captain,
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/command{
- name = "Captain's Quarters"
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain/private)
-"wjm" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"wjt" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/yellow/filled/line{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/fore)
-"wjx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"wjy" = (
-/obj/structure/rack,
-/obj/item/clothing/head/helmet/old,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"wkf" = (
-/obj/structure/chair/comfy/brown,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/start/psychologist,
-/obj/machinery/holopad,
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"wkn" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"wkr" = (
-/obj/item/storage/box/lights/bulbs,
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"wkv" = (
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"wkw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"wkF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/port/fore)
-"wkH" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"wkL" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/hallway/secondary/exit/escape_pod)
-"wkP" = (
-/obj/structure/table,
-/obj/item/reagent_containers/condiment/saltshaker{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/reagent_containers/condiment/peppermill{
- desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table.";
- pixel_x = -8;
- pixel_y = 2
- },
-/obj/item/reagent_containers/condiment/enzyme{
- pixel_x = 9;
- pixel_y = 3
- },
-/obj/item/book/manual/chef_recipes,
-/turf/open/floor/iron,
-/area/station/security/prison)
-"wkX" = (
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor2/fore)
-"wll" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/science/alt/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"wlo" = (
-/obj/structure/bed/medical/anchored{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/office)
-"wlq" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"wlu" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/machinery/camera/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"wlA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"wlF" = (
-/obj/effect/spawner/random/entertainment/arcade{
- dir = 1
- },
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"wlK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/structure/sign/departments/vault/directional/south,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/command/bridge)
-"wlP" = (
-/obj/machinery/atmospherics/components/binary/pump{
- name = "Atmospherics-Supermatter Connection"
- },
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"wlX" = (
-/obj/structure/bookcase/random/religion,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"wlZ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"wmj" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/primary)
-"wmo" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"wmp" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output,
-/turf/open/floor/engine/o2,
-/area/station/engineering/atmos)
-"wmr" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "brig-entrance-aft"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/security/glass{
- id_tag = "outerbrig";
- name = "Brig Aft Entrance"
- },
-/obj/effect/mapping_helpers/airlock/access/all/security/entrance,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"wms" = (
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/fishing_portal_generator,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"wmt" = (
-/obj/machinery/status_display/ai/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"wmw" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"wmx" = (
-/obj/effect/turf_decal/caution{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"wmz" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"wmC" = (
-/obj/structure/closet/radiation,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/supermatter/room)
-"wmD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/toy/figure/syndie,
-/turf/open/floor/pod/light,
-/area/station/security/execution/education)
-"wmG" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port)
-"wmI" = (
-/obj/machinery/door/airlock/security{
- name = "Isolation"
- },
-/obj/effect/mapping_helpers/airlock/access/any/security/brig,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"wmN" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/structure/mannequin/skeleton,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"wmQ" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/fore)
-"wmS" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/turf_decal/siding/wood{
- dir = 9
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"wmU" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/girder/reinforced,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"wmW" = (
-/obj/machinery/firealarm/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"wmX" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 6
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"wnq" = (
-/obj/effect/baseturf_helper/reinforced_plating/ceiling,
-/obj/machinery/light_switch/directional/south,
-/obj/machinery/light/cold/directional/south,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"wns" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"wnI" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -4;
- pixel_y = 4
- },
-/obj/item/storage/toolbox/electrical,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"wnJ" = (
-/obj/structure/chair/sofa/bench{
- dir = 4
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/aft)
-"wnN" = (
-/obj/structure/table,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/item/storage/pill_bottle/happinesspsych{
- pixel_x = -5
- },
-/obj/item/storage/pill_bottle/psicodine{
- pixel_x = 5
- },
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"wnO" = (
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"wnP" = (
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"woa" = (
-/obj/structure/girder/reinforced,
-/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{
- dir = 4
- },
-/obj/machinery/door/poddoor/shutters/radiation/preopen{
- id = "atmoshfr"
- },
-/turf/open/floor/plating,
-/area/station/engineering/atmos/hfr_room)
-"won" = (
-/obj/machinery/light/broken/directional/north,
-/obj/effect/decal/cleanable/ash,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"woq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/department/engine/atmos)
-"wor" = (
-/obj/machinery/light/red/dim/directional/south,
-/turf/open/water/no_planet_atmos{
- desc = "Filthy.";
- name = "untreated water"
- },
-/area/station/maintenance/floor1/port/aft)
-"wot" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/machinery/atmospherics/components/binary/pump/layer2,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"woE" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/paramedic)
-"woH" = (
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"woK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/office)
-"woP" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"wpa" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"wpt" = (
-/obj/structure/railing/corner,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"wpE" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/item/radio/intercom/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"wpI" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/commons/vacant_room/commissary)
-"wpJ" = (
-/turf/open/floor/iron/half,
-/area/station/engineering/atmos/hfr_room)
-"wpP" = (
-/obj/effect/turf_decal/trimline/white/warning,
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"wpY" = (
-/obj/machinery/light/red/dim/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"wqg" = (
-/obj/effect/turf_decal/trimline/yellow/line{
- dir = 9
- },
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/turf/open/floor/iron/corner,
-/area/station/hallway/floor1/aft)
-"wqi" = (
-/obj/structure/cable,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-15";
- location = "1-14"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"wqk" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/chair/sofa/corner/brown{
- dir = 8
- },
-/turf/open/floor/carpet/green,
-/area/station/service/bar/atrium)
-"wqx" = (
-/obj/effect/turf_decal/stripes/full,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/railing{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/general,
-/obj/machinery/door/poddoor/preopen{
- id = "Xenolab";
- name = "Test Chamber Blast Door"
- },
-/turf/open/floor/engine,
-/area/station/science/cytology)
-"wqD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 1
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"wqF" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/gloves/cargo_gauntlet,
-/obj/item/clothing/gloves/cargo_gauntlet,
-/obj/item/clothing/gloves/cargo_gauntlet,
-/turf/open/floor/iron,
-/area/station/cargo/warehouse)
-"wqN" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor1/aft)
-"wqP" = (
-/obj/machinery/computer/accounting{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"wqQ" = (
-/obj/effect/turf_decal/trimline/red/filled/line,
-/obj/machinery/modular_computer/preset/civilian{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"wqW" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"wrb" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/hallway/floor2/aft)
-"wrh" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"wri" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/effect/landmark/event_spawn,
-/turf/open/floor/carpet/blue,
-/area/station/command/bridge)
-"wrj" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id = "secure-gate";
- name = "Brig Shutters"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/holding_cell)
-"wrq" = (
-/obj/structure/chair/stool/directional/west,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"wrJ" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"wrU" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"wsb" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"wsh" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"wsj" = (
-/obj/structure/table,
-/obj/item/stock_parts/scanning_module{
- pixel_x = 3;
- pixel_y = 3
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"wsl" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"wss" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"wsw" = (
-/obj/structure/railing{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"wsy" = (
-/obj/structure/closet/wardrobe/black,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"wsA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/fore)
-"wsE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small/red/directional/south,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"wsG" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/fitness)
-"wsH" = (
-/obj/effect/spawner/random/entertainment/arcade{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/maintenance/floor2/starboard)
-"wsO" = (
-/obj/structure/table/wood,
-/obj/machinery/computer/libraryconsole{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 1
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/carpet/red,
-/area/station/service/library)
-"wsS" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/passive_vent,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"wsY" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/table/wood,
-/turf/open/floor/carpet/red,
-/area/station/service/library/lounge)
-"wsZ" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard/fore)
-"wtg" = (
-/obj/machinery/light/floor,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"wth" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/small/directional/west,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"wtl" = (
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/external,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"wtm" = (
-/obj/structure/foamedmetal,
-/obj/structure/grille,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"wtp" = (
-/turf/closed/wall/r_wall,
-/area/station/security/prison/safe)
-"wtr" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"wtt" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen/fourcolor,
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"wtu" = (
-/obj/structure/chair/sofa/corp/left{
- desc = "Looks like someone threw it out. Covered in donut crumbs.";
- name = "couch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment2)
-"wtw" = (
-/obj/effect/turf_decal/siding/purple{
- dir = 9
- },
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"wtC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"wtF" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"wtL" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port)
-"wtM" = (
-/obj/machinery/door/airlock/grunge{
- name = "Courtroom"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"wtR" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"wtX" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"wuc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"wug" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard)
-"wul" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"wus" = (
-/obj/structure/closet/emcloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"wuu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"wuA" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"wuC" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"wuJ" = (
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"wuL" = (
-/turf/closed/wall,
-/area/station/commons/dorms/apartment2)
-"wuZ" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port)
-"wva" = (
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/hallway/floor2/fore)
-"wvd" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"wve" = (
-/obj/machinery/light/directional/south,
-/obj/effect/turf_decal/trimline/purple/filled/line,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"wvg" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"wvp" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"wvq" = (
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"wvv" = (
-/obj/effect/turf_decal/trimline/purple/corner,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/obj/machinery/disposal/bin/tagger,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"wvw" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"wvA" = (
-/obj/effect/turf_decal/trimline/white/filled/corner{
- color = "#065C93";
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/command/bridge)
-"wvR" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"wwe" = (
-/obj/structure/closet/crate/wooden,
-/obj/item/food/pie/cream,
-/obj/item/megaphone/clown,
-/obj/item/pneumatic_cannon/pie,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"wwi" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"wwk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"wwp" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/structure/chair/stool/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood,
-/area/station/service/abandoned_gambling_den)
-"wwu" = (
-/turf/closed/wall,
-/area/station/maintenance/floor2/starboard/fore)
-"wwz" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/hatch{
- name = "Storage Room"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"wwE" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 6
- },
-/obj/structure/window/spawner/directional/west,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/ai_monitored/command/storage/eva)
-"wwL" = (
-/turf/open/floor/engine/n2o,
-/area/station/engineering/atmos)
-"wwN" = (
-/obj/effect/turf_decal/stripes{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sink/directional/south,
-/turf/open/floor/plating,
-/area/station/cargo/sorting)
-"wwQ" = (
-/obj/machinery/space_heater,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"wwT" = (
-/obj/effect/turf_decal/trimline/blue/arrow_ccw{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/blue/arrow_cw{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/fore)
-"wwU" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/left/directional/east{
- name = "Medication Pick-up"
- },
-/obj/machinery/door/window/left/directional/west{
- name = "Medication Drop-off";
- req_access = list("psychology")
- },
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"wwW" = (
-/obj/machinery/airalarm/directional/east,
-/obj/machinery/camera/emp_proof/directional/east,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"wxb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/west,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"wxc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/security/prison/safe)
-"wxd" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port)
-"wxi" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"wxw" = (
-/obj/item/radio/intercom/directional/south,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/hallway/floor4/aft)
-"wxx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"wxE" = (
-/obj/effect/turf_decal/trimline/white/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"wxF" = (
-/obj/item/kirbyplants/organic/plant21,
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/fore)
-"wxH" = (
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit)
-"wxM" = (
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"wxQ" = (
-/obj/structure/sign/departments/chemistry,
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor1/port)
-"wxW" = (
-/obj/docking_port/stationary/mining_home/northstar{
- dir = 4
- },
-/turf/open/floor/pod,
-/area/station/cargo/miningdock)
-"wxY" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"wye" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/bananalamp,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"wyf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/west,
-/obj/effect/spawner/random/structure/closet_maintenance,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"wym" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/table/wood,
-/obj/item/radio/intercom,
-/obj/item/toy/plush/lizard_plushie/space/green{
- desc = "As long as I have you by my side, I know I'll get better!";
- name = "Cures-The-Sniffles"
- },
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"wyp" = (
-/obj/structure/chair/sofa/bench/left{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/fitness/recreation)
-"wys" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/comfy/shuttle{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"wyv" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/security/range)
-"wyE" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"wyJ" = (
-/obj/structure/chair/wood{
- dir = 8
- },
-/obj/structure/sign/poster/random/directional/south,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"wyU" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"wyY" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/machinery/computer/crew{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"wza" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/port/aft)
-"wze" = (
-/obj/structure/table,
-/obj/item/clothing/mask/gas/sechailer{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/gas/sechailer,
-/obj/item/clothing/mask/gas/sechailer{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"wzk" = (
-/obj/structure/table/wood,
-/obj/item/camera,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/item/camera_film,
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"wzm" = (
-/obj/effect/turf_decal/trimline/brown/warning,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"wzp" = (
-/obj/structure/table,
-/obj/item/toy/cards/deck/wizoff,
-/obj/effect/turf_decal/tile/red/half{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"wzt" = (
-/obj/effect/spawner/random/structure/twelve_percent_spirit_board,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel/office)
-"wzB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/red/dim/directional/south,
-/obj/structure/closet/crate/trashcart/filled,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"wzJ" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"wzO" = (
-/obj/structure/statue/silver/sec{
- desc = "Dedicated to those who died in the First Contact.";
- name = "statue of a militia member"
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"wzS" = (
-/obj/structure/table,
-/obj/machinery/door/window/left/directional/north{
- name = "Upload Boards";
- req_access = list("ai_upload")
- },
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/obj/effect/spawner/random/aimodule/harmful,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload_foyer)
-"wzY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grime,
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"wAa" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"wAb" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"wAe" = (
-/obj/structure/rack,
-/obj/item/reagent_containers/cup/bottle/acidic_buffer{
- pixel_x = 7;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/basic_buffer{
- pixel_x = -5;
- pixel_y = 3
- },
-/obj/item/reagent_containers/cup/bottle/formaldehyde{
- pixel_x = 1
- },
-/obj/structure/sign/warning/chem_diamond/directional/north,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"wAz" = (
-/obj/machinery/vending/autodrobe,
-/obj/machinery/light_switch/directional/east,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"wAH" = (
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"wAJ" = (
-/obj/item/storage/box/donkpockets{
- pixel_y = 5
- },
-/obj/structure/table,
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment2)
-"wAM" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark/corner,
-/area/station/hallway/floor3/fore)
-"wAO" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"wBg" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/robot_debris/up,
-/obj/item/assembly/prox_sensor,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/aft)
-"wBq" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"wBB" = (
-/obj/effect/spawner/random/vending/snackvend,
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"wBF" = (
-/obj/structure/closet/secure_closet/courtroom,
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"wBG" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"wBO" = (
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"wBR" = (
-/turf/closed/wall,
-/area/station/construction/mining/aux_base)
-"wBU" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"wCc" = (
-/obj/structure/stairs/north,
-/obj/structure/railing{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"wCk" = (
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"wCl" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"wCn" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/chemistry)
-"wCu" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter)
-"wCC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/aft)
-"wCG" = (
-/obj/effect/turf_decal/trimline/red/filled/corner{
- dir = 1
- },
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor2/aft)
-"wCH" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/red/line,
-/obj/machinery/door/firedoor/border_only,
-/obj/structure/railing,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"wCR" = (
-/obj/machinery/chem_master,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_edge{
- dir = 8
- },
-/area/station/medical/chemistry)
-"wCT" = (
-/obj/structure/chair/stool/directional/north,
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/maintenance/solars/starboard/fore)
-"wDa" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/obj/machinery/button/door/directional/west{
- id = "surg_b_privacy";
- name = "Surgery Privacy Shutters";
- req_access = list("medical")
- },
-/obj/machinery/light_switch/directional/west{
- pixel_x = -24;
- pixel_y = -10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"wDb" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"wDc" = (
-/obj/machinery/microwave{
- pixel_x = -1;
- pixel_y = 6
- },
-/obj/structure/table,
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment1)
-"wDf" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/structure/table/reinforced/rglass,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/break_room)
-"wDh" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"wDr" = (
-/obj/structure/closet/emcloset,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"wDy" = (
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/aft)
-"wDz" = (
-/turf/open/openspace,
-/area/station/science/xenobiology/hallway)
-"wDC" = (
-/obj/structure/table/reinforced/rglass,
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 4
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"wDE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron,
-/area/station/security/range)
-"wDF" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/item/storage/toolbox/mechanical,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"wDS" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor3/port/aft)
-"wEE" = (
-/obj/effect/decal/cleanable/ash/large,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"wEN" = (
-/obj/structure/disposalpipe/segment{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/door/airlock/mining/glass{
- name = "Mail Sorting"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/any/supply/general,
-/obj/effect/mapping_helpers/airlock/access/any/supply/mining,
-/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/storage)
-"wEQ" = (
-/obj/structure/stairs/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"wES" = (
-/obj/item/stack/arcadeticket,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"wEY" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"wFa" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible,
-/turf/closed/wall/r_wall,
-/area/station/science/ordnance/burnchamber)
-"wFb" = (
-/obj/structure/window/reinforced/plasma/plastitanium,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"wFq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor2/aft)
-"wFy" = (
-/obj/machinery/computer/cargo,
-/obj/structure/sign/poster/random/directional/north,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"wFA" = (
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"wFB" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/station/cargo/storage)
-"wFC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
-/obj/effect/turf_decal/stripes,
-/obj/machinery/door/window/right/directional/south{
- name = "containment Exterior";
- req_access = list("xenobiology")
- },
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"wFK" = (
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/wood{
- name = "Gallery"
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"wFM" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 5
- },
-/obj/structure/sign/warning{
- pixel_y = 32
- },
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/medical/virology)
-"wFT" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 5
- },
-/obj/machinery/computer/crew{
- dir = 8
- },
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"wFW" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"wFY" = (
-/turf/open/floor/wood,
-/area/station/hallway/floor3/fore)
-"wGb" = (
-/obj/machinery/light/directional/east,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor4/fore)
-"wGg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"wGl" = (
-/turf/open/openspace,
-/area/station/maintenance/floor2/starboard)
-"wGq" = (
-/obj/effect/decal/cleanable/blood/tracks,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"wGz" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/structure/railing/corner/end,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"wGA" = (
-/obj/structure/window/spawner/directional/north,
-/obj/structure/table/reinforced,
-/obj/item/shell/drone,
-/obj/item/stack/cable_coil/cut,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/floor1/aft)
-"wGK" = (
-/obj/structure/fluff/paper/stack{
- desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging."
- },
-/obj/structure/table_frame,
-/obj/item/shard,
-/turf/open/floor/iron,
-/area/station/maintenance/floor4/starboard)
-"wGL" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Changing Rooms"
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel)
-"wGN" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"wGR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/abandoned,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"wGX" = (
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"wGY" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"wHa" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/lobby)
-"wHj" = (
-/obj/structure/table,
-/obj/item/hfr_box/body/waste_output,
-/obj/item/hfr_box/body/moderator_input,
-/obj/item/hfr_box/body/fuel_input,
-/obj/item/hfr_box/body/interface,
-/obj/structure/extinguisher_cabinet/directional/east,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"wHq" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/table/reinforced/rglass,
-/obj/item/storage/medkit/surgery,
-/obj/item/storage/medkit/advanced,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"wHr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/garbage{
- spawn_loot_count = 3;
- spawn_scatter_radius = 1
- },
-/obj/structure/spider/stickyweb,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"wHs" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"wHu" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"wHw" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark/side,
-/area/station/security/prison)
-"wHP" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"wHR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor2/aft)
-"wHU" = (
-/obj/effect/landmark/start/warden,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"wHV" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/item/stack/cable_coil/cut,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/port/aft)
-"wIe" = (
-/obj/machinery/light/red/dim/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/aft)
-"wIn" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/structure/easel,
-/obj/item/canvas/twentythree_twentythree,
-/obj/item/paint_palette,
-/obj/effect/turf_decal/tile/dark_red/fourcorners,
-/turf/open/floor/iron,
-/area/station/security/brig)
-"wIp" = (
-/obj/effect/landmark/carpspawn,
-/turf/open/space/openspace,
-/area/space)
-"wIr" = (
-/obj/structure/railing/corner,
-/turf/open/floor/iron/textured_large,
-/area/station/cargo/storage)
-"wIw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/department/engine/atmos)
-"wIz" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/structure/closet/secure_closet/exile,
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"wIA" = (
-/obj/machinery/door/airlock/hatch{
- name = "MiniSat Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/any/command/minisat,
-/obj/effect/mapping_helpers/airlock/access/any/command/general,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"wIC" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"wID" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/effect/turf_decal/tile/green/full,
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"wIG" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"wIJ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/obj/machinery/door/poddoor/preopen{
- id = "rdoffice";
- name = "Research Director's Shutters"
- },
-/turf/open/floor/plating,
-/area/station/command/heads_quarters/rd)
-"wIN" = (
-/turf/open/openspace,
-/area/station/command/heads_quarters/rd)
-"wIP" = (
-/obj/effect/turf_decal/stripes{
- dir = 10
- },
-/obj/machinery/portable_atmospherics/canister/hydrogen,
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/science/cytology)
-"wIQ" = (
-/obj/structure/closet/firecloset,
-/obj/machinery/light/directional/west,
-/obj/effect/landmark/start/hangover/closet,
-/turf/open/floor/iron,
-/area/station/commons/fitness)
-"wIU" = (
-/obj/machinery/door/airlock/science/glass{
- name = "Laboratory C"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/general,
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"wIW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"wIX" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/emergency{
- pixel_y = 12
- },
-/obj/item/stack/cable_coil/cut{
- pixel_y = 7
- },
-/obj/item/stock_parts/power_store/cell/lead{
- pixel_x = 5;
- pixel_y = 4
- },
-/obj/item/wirecutters,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"wJf" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/sign/painting/library{
- pixel_x = 32
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"wJj" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"wJl" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"wJp" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/holosign/barrier/engineering,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"wJq" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"wJt" = (
-/obj/machinery/computer/security/telescreen/entertainment/directional/west,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/command/heads_quarters/captain)
-"wJy" = (
-/obj/structure/table/reinforced/rglass,
-/obj/effect/turf_decal/box/white,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"wJB" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"wJG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"wJH" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 8
- },
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"wJI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"wJR" = (
-/obj/structure/table,
-/obj/item/plate{
- pixel_y = -3
- },
-/obj/item/plate,
-/obj/item/plate{
- pixel_y = 3
- },
-/obj/item/knife/plastic{
- pixel_x = 14
- },
-/obj/item/knife/plastic{
- pixel_x = 14;
- pixel_y = -3
- },
-/obj/item/knife/plastic{
- pixel_x = 14;
- pixel_y = 3
- },
-/obj/item/kitchen/fork/plastic{
- pixel_x = -12;
- pixel_y = 3
- },
-/obj/item/kitchen/fork/plastic{
- pixel_x = -12;
- pixel_y = -3
- },
-/obj/item/kitchen/fork/plastic{
- pixel_x = -12
- },
-/turf/open/floor/iron/checker,
-/area/station/commons/dorms/apartment2)
-"wJS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/wood/large,
-/area/station/service/library)
-"wJT" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor4/fore)
-"wKa" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 4
- },
-/obj/machinery/computer/atmos_control/air_tank,
-/obj/structure/window/reinforced/spawner/directional/north,
-/turf/open/floor/iron/white,
-/area/station/engineering/atmos)
-"wKd" = (
-/obj/effect/turf_decal/trimline/green/arrow_ccw,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"wKg" = (
-/turf/open/floor/iron/dark/telecomms,
-/area/station/tcommsat/server)
-"wKi" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"wKj" = (
-/obj/structure/chair/sofa/corp/left{
- desc = "Looks like someone threw it out. Covered in donut crumbs.";
- name = "couch"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/green,
-/area/station/commons/dorms/apartment1)
-"wKk" = (
-/obj/effect/turf_decal/trimline/neutral/corner{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 10
- },
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"wKr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"wKz" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "External Airlock"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"wKE" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"wKL" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"wKT" = (
-/obj/structure/cable,
-/obj/structure/table/reinforced,
-/obj/machinery/fax{
- fax_name = "Engineering Lobby";
- name = "Engineering Lobby Fax Machine"
- },
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/lobby)
-"wLd" = (
-/obj/structure/flora/bush/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"wLg" = (
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"wLj" = (
-/obj/structure/rack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/food_or_drink/condiment,
-/obj/item/flashlight,
-/obj/machinery/light/small/red/directional/west,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"wLl" = (
-/obj/structure/ladder,
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/plating/airless,
-/area/station/solars/starboard/aft)
-"wLo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/wood,
-/obj/effect/spawner/random/entertainment/lighter,
-/obj/item/storage/crayons{
- pixel_x = 6;
- pixel_y = -3
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"wLp" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/science/auxlab)
-"wLC" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/effect/turf_decal/bot_white{
- color = "#74b2d3"
- },
-/obj/machinery/holopad,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"wLD" = (
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron/kitchen,
-/area/station/command/heads_quarters/rd)
-"wLK" = (
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/engine,
-/area/station/science/auxlab/firing_range)
-"wLP" = (
-/obj/effect/turf_decal/tile/green{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/prison)
-"wLV" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"wMf" = (
-/obj/effect/turf_decal/siding/purple{
- dir = 1
- },
-/obj/machinery/computer/scan_consolenew,
-/turf/open/floor/iron/showroomfloor{
- name = "lab floor"
- },
-/area/station/science/genetics)
-"wMr" = (
-/obj/machinery/door/airlock{
- id_tag = "dorms_3_bolts";
- name = "Standard Dorm 3"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"wMw" = (
-/obj/item/radio/intercom/directional/west,
-/obj/structure/closet/secure_closet/personal/cabinet,
-/turf/open/floor/wood,
-/area/station/cargo/miningdock)
-"wMy" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/engineering/atmos)
-"wMF" = (
-/turf/closed/wall/r_wall,
-/area/station/security/prison/garden)
-"wMH" = (
-/obj/effect/turf_decal/tile/red/half,
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2,
-/obj/machinery/recharge_station,
-/turf/open/floor/iron/edge,
-/area/station/engineering/atmos)
-"wMM" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/ai_monitored/command/storage/eva)
-"wMN" = (
-/obj/effect/turf_decal/siding/white,
-/obj/machinery/computer/crew,
-/obj/machinery/light/cold/directional/north,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/paramedic)
-"wMQ" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"wMR" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"wMU" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"wMX" = (
-/obj/structure/frame/computer{
- dir = 4
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/west,
-/obj/effect/turf_decal/siding/wood{
- dir = 10
- },
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"wNb" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"wNd" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/structure/closet/crate/bin,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"wNh" = (
-/obj/effect/turf_decal/arrows/white{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"wNt" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"wNu" = (
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/rnd/production/techfab/department/medical,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/storage)
-"wNx" = (
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/storage)
-"wNH" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"wNL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/commons/dorms/room3)
-"wNR" = (
-/obj/machinery/airalarm/directional/west,
-/obj/structure/rack,
-/obj/item/storage/box/chemimp{
- pixel_x = 4;
- pixel_y = 3
- },
-/obj/item/storage/box/trackimp,
-/obj/item/storage/lockbox/loyalty,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"wOd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/tank_holder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"wOg" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"wOm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"wOn" = (
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor1/fore)
-"wOt" = (
-/obj/machinery/door/morgue{
- name = "Confession Booth"
- },
-/turf/open/floor/iron/dark/small,
-/area/station/service/chapel)
-"wOu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"wOv" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"wOy" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/closet/toolcloset,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"wOE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/firedoor,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"wOJ" = (
-/obj/structure/grille,
-/turf/open/floor/plating/airless,
-/area/station/service/chapel/funeral)
-"wPn" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"wPs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"wPw" = (
-/obj/structure/chair/comfy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"wPF" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"wPG" = (
-/obj/structure/rack,
-/obj/structure/secure_safe/directional/east,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/armory/bulletproof_armor,
-/obj/effect/spawner/random/armory/bulletproof_helmet,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"wPK" = (
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/ore_silo,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/wood/large,
-/area/station/command/heads_quarters/qm)
-"wPP" = (
-/obj/structure/frame/computer{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/yellow/filled/warning{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"wPS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"wPW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"wPX" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"wQe" = (
-/obj/machinery/holopad,
-/turf/open/floor/iron/dark/smooth_edge{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"wQh" = (
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/structure/sign/flag/nanotrasen/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"wQo" = (
-/turf/closed/wall,
-/area/station/security/prison/garden)
-"wQu" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/turf_decal/trimline/blue,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"wQA" = (
-/obj/machinery/door/window/brigdoor/right/directional/east{
- req_access = list("maint_tunnels")
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"wQC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"wQN" = (
-/obj/structure/hedge/opaque,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/grass,
-/area/station/service/chapel/office)
-"wQR" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"wQX" = (
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"wQY" = (
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/side,
-/area/station/security/office)
-"wRc" = (
-/turf/closed/wall/r_wall,
-/area/station/medical/virology/isolation)
-"wRe" = (
-/obj/structure/reagent_dispensers/water_cooler,
-/turf/open/floor/iron/dark,
-/area/station/engineering/lobby)
-"wRn" = (
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted,
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"wRp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/science/robotics/lab)
-"wRD" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/structure/table/reinforced/rglass,
-/obj/machinery/computer/records/medical/laptop{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"wRE" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/fore)
-"wRJ" = (
-/turf/closed/wall,
-/area/station/maintenance/floor3/starboard/fore)
-"wRL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/landmark/blobstart,
-/turf/open/floor/engine/cult,
-/area/station/service/library/private)
-"wRM" = (
-/obj/structure/sign/warning/radiation/rad_area,
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor1/port/aft)
-"wRN" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/obj/structure/window/reinforced/tinted/spawner/directional/north,
-/obj/structure/closet/masks,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"wRS" = (
-/obj/effect/turf_decal/trimline/yellow/filled/warning{
- dir = 4
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port/aft)
-"wRT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard/fore)
-"wSb" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/fax{
- fax_name = "Security Office";
- name = "Security Office Fax Machine"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/office)
-"wSc" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 4
- },
-/obj/effect/landmark/navigate_destination/incinerator,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"wSm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/textured_large,
-/area/station/engineering/engine_smes)
-"wSw" = (
-/obj/structure/closet/secure_closet/brig{
- name = "Prisoner Locker"
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"wSz" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"wSG" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"wSP" = (
-/obj/machinery/door/airlock{
- name = "Escape Pod A"
- },
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"wSR" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"wSW" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/public/glass{
- name = "Bar"
- },
-/turf/open/floor/iron/dark,
-/area/station/service/bar/atrium)
-"wTg" = (
-/obj/structure/rack,
-/obj/item/clothing/under/trek/q,
-/obj/item/clothing/under/trek/command/ent,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/command/teleporter)
-"wTi" = (
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"wTj" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"wTp" = (
-/obj/structure/ladder,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"wTq" = (
-/turf/open/openspace,
-/area/station/hallway/secondary/service)
-"wTw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"wTB" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/aft)
-"wTC" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/item/compact_remote{
- pixel_x = 6
- },
-/obj/item/compact_remote{
- pixel_y = 5
- },
-/obj/item/compact_remote{
- pixel_x = -6;
- pixel_y = 12
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"wTO" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/science/genetics)
-"wTS" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"wTU" = (
-/obj/machinery/computer/slot_machine,
-/obj/structure/sign/poster/contraband/random/directional/west,
-/turf/open/floor/carpet/green,
-/area/station/service/abandoned_gambling_den)
-"wTV" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 1
- },
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"wTW" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/commons/dorms/apartment1)
-"wUu" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"wUy" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/green/half{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"wUB" = (
-/obj/item/book/manual/wiki/tcomms,
-/obj/item/radio/off{
- pixel_y = 4
- },
-/obj/structure/table,
-/obj/item/multitool,
-/obj/item/storage/toolbox/electrical,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"wUF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"wUH" = (
-/obj/effect/turf_decal/tile/red/diagonal_edge,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron/dark/textured_large,
-/area/station/security/checkpoint/escape)
-"wUK" = (
-/obj/machinery/light_switch/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"wUL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor1/aft)
-"wUS" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 10
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/machinery/camera/directional/west{
- c_tag = "Science - Server"
- },
-/obj/machinery/computer/rdservercontrol{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/server)
-"wUU" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Command - Research Director's Lab"
- },
-/turf/open/floor/engine,
-/area/station/command/heads_quarters/rd)
-"wVm" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/effect/turf_decal/tile/bar,
-/turf/open/floor/iron/dark/corner,
-/area/station/service/bar/atrium)
-"wVn" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"wVr" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/port/fore)
-"wVu" = (
-/obj/structure/cable,
-/obj/machinery/light/small/directional/north,
-/obj/structure/rack,
-/obj/item/wrench,
-/obj/item/wirecutters,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/starboard/aft)
-"wVz" = (
-/obj/machinery/newscaster/directional/east,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"wVJ" = (
-/obj/effect/turf_decal/tile/green{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/structure/frame/machine,
-/obj/item/stack/cable_coil/five,
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/port/aft)
-"wVN" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible,
-/obj/machinery/meter,
-/turf/closed/wall/r_wall,
-/area/station/engineering/atmos)
-"wVO" = (
-/obj/machinery/light/red/dim/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"wVQ" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=1-12";
- location = "1-11"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"wVS" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 6
- },
-/obj/effect/turf_decal/box,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"wVT" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/aft)
-"wVX" = (
-/obj/structure/hedge,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/grass,
-/area/station/service/chapel)
-"wVY" = (
-/turf/closed/wall,
-/area/station/medical/break_room)
-"wWf" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Hatch"
- },
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/parquet,
-/area/station/maintenance/floor2/port/aft)
-"wWk" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"wWm" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"wWo" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/station/maintenance/floor3/starboard/aft)
-"wWw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"wWE" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"wWJ" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 5
- },
-/obj/item/radio/intercom/directional/east,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"wWX" = (
-/obj/structure/table,
-/obj/item/storage/briefcase/secure,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"wWY" = (
-/obj/effect/spawner/structure/window/hollow/plasma/middle{
- dir = 4
- },
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/freezerchamber)
-"wXc" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"wXg" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor4/aft)
-"wXi" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/fore)
-"wXk" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"wXq" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-12";
- location = "3-11"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"wXs" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"wXC" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/lab)
-"wXD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/service/kitchen/abandoned)
-"wXE" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white/small,
-/area/station/medical/chemistry)
-"wXH" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"wXI" = (
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/starboard)
-"wXL" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/turf/open/floor/iron/dark/side,
-/area/station/commons/storage/primary)
-"wXU" = (
-/obj/structure/cable,
-/turf/open/floor/iron/smooth_large,
-/area/station/maintenance/disposal)
-"wYd" = (
-/obj/effect/turf_decal/tile/blue/anticorner{
- dir = 1
- },
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 9
- },
-/area/station/ai_monitored/turret_protected/ai)
-"wYj" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 9
- },
-/obj/machinery/camera/directional/west{
- c_tag = "Custodial Closet"
- },
-/obj/item/radio/intercom/directional/west,
-/mob/living/basic/lizard{
- name = "Allad Minsa"
- },
-/turf/open/floor/iron,
-/area/station/service/janitor)
-"wYp" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"wYs" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"wYB" = (
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"wYG" = (
-/obj/structure/ladder,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/aft)
-"wYH" = (
-/obj/structure/cable,
-/obj/machinery/power/solar,
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/starboard/fore)
-"wYM" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 1
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port)
-"wYR" = (
-/obj/machinery/holopad/secure,
-/obj/effect/landmark/event_spawn,
-/obj/structure/cable,
-/turf/open/floor/carpet,
-/area/station/command/heads_quarters/captain)
-"wYW" = (
-/obj/machinery/light/directional/west,
-/obj/effect/turf_decal/tile/red/half{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/security/brig)
-"wZu" = (
-/obj/machinery/computer/exoscanner_control,
-/turf/open/floor/iron/dark,
-/area/station/cargo/drone_bay)
-"wZD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron,
-/area/station/maintenance/floor1/starboard/fore)
-"wZH" = (
-/obj/effect/turf_decal/caution{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"wZS" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"wZU" = (
-/obj/effect/turf_decal/trimline/white/line{
- dir = 4
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/entry)
-"xad" = (
-/obj/machinery/door/airlock/research{
- name = "Research Director's Office"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/rd,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/rd)
-"xak" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"xap" = (
-/obj/effect/spawner/random/maintenance/two,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"xat" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"xaG" = (
-/obj/machinery/light/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment1)
-"xaN" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"xaW" = (
-/obj/machinery/hydroponics/soil,
-/obj/item/cultivator,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/misc/dirt/jungle,
-/area/station/security/prison/garden)
-"xbr" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"xbt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"xbx" = (
-/obj/structure/table/wood,
-/obj/item/storage/wallet/random,
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/wood,
-/area/station/commons/vacant_room/office)
-"xby" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"xbA" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"xbF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/marker_beacon/burgundy,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"xbK" = (
-/obj/structure/closet/emcloset/anchored,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"xbN" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"xbO" = (
-/obj/machinery/power/energy_accumulator/tesla_coil,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/port/aft)
-"xbP" = (
-/obj/structure/chair/sofa/bench/right,
-/obj/effect/landmark/start/lawyer,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"xbV" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"xbZ" = (
-/obj/structure/statue/gold/cmo{
- desc = "Dedicated to those who cured the plague of 2709."
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/carpet/royalblack,
-/area/station/service/library)
-"xcg" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/door/airlock/public/glass{
- name = "Departures"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/exit/departure_lounge)
-"xcw" = (
-/obj/machinery/shieldgen,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/aft)
-"xcA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"xcG" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"xcN" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"xcP" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"xcQ" = (
-/obj/structure/rack,
-/obj/effect/spawner/random/engineering/flashlight,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"xcT" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard/aft)
-"xcV" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/camera/autoname/directional/south,
-/obj/machinery/status_display/ai/directional/south,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/hallway/floor1/aft)
-"xcW" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2-15";
- location = "2-14"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"xcY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"xdc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"xdm" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"xdy" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"xdC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/light/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/checkpoint)
-"xdE" = (
-/obj/machinery/disposal/bin,
-/obj/effect/turf_decal/stripes/end{
- dir = 1
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"xdJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/purple/filled/corner,
-/turf/open/floor/iron/white,
-/area/station/science/lab)
-"xdK" = (
-/obj/effect/turf_decal/trimline/blue/line,
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"xdN" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"xdU" = (
-/obj/effect/turf_decal/trimline/green/line,
-/obj/effect/turf_decal/trimline/green/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"xdV" = (
-/obj/machinery/vending/coffee,
-/obj/structure/extinguisher_cabinet/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"xel" = (
-/obj/item/folder/blue,
-/obj/item/paper/monitorkey,
-/obj/effect/spawner/random/bureaucracy/pen,
-/obj/structure/table,
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"xen" = (
-/obj/structure/table/wood,
-/obj/item/folder/blue,
-/obj/item/folder/blue,
-/obj/item/folder/blue,
-/obj/item/folder/blue,
-/obj/item/stamp/law,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/carpet,
-/area/station/service/lawoffice)
-"xep" = (
-/obj/structure/holosign/barrier/engineering,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"xeu" = (
-/obj/structure/railing,
-/turf/open/floor/iron/stairs{
- dir = 8
- },
-/area/station/cargo/storage)
-"xeE" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 1
- },
-/obj/structure/sign/departments/rndserver/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"xeF" = (
-/obj/effect/turf_decal/arrows{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/holding_cell)
-"xeM" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"xeO" = (
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xeQ" = (
-/obj/machinery/mass_driver/chapelgun{
- dir = 4
- },
-/obj/item/gps,
-/turf/open/floor/mineral/silver,
-/area/station/service/chapel/funeral)
-"xeR" = (
-/obj/effect/spawner/random/structure/crate_abandoned,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xeT" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/botany/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"xeZ" = (
-/obj/structure/sign/poster/official/random/directional/north,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"xfv" = (
-/obj/machinery/atmospherics/components/binary/pump/layer2{
- dir = 1;
- name = "External Ports to Waste"
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xfD" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/reagentgrinder{
- pixel_x = -1;
- pixel_y = 8
- },
-/obj/structure/table/reinforced,
-/obj/item/radio/intercom/directional/west,
-/obj/item/clothing/glasses/science,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"xfE" = (
-/obj/structure/cable,
-/obj/machinery/power/tracker,
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/port/aft)
-"xfI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/airlock/public/glass{
- name = "Snack Stand"
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"xfT" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"xgb" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/landmark/start/assistant,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/fitness)
-"xgd" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/effect/mapping_helpers/damaged_window,
-/turf/open/floor/plating,
-/area/station/service/kitchen/abandoned)
-"xgg" = (
-/obj/effect/turf_decal/trimline/green/filled/warning{
- dir = 4
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library/lounge)
-"xgm" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/shower/directional/south,
-/obj/effect/turf_decal/trimline/blue/end,
-/turf/open/floor/noslip{
- icon_state = "textured_dark"
- },
-/area/station/medical/office)
-"xgC" = (
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/service/library/private)
-"xgD" = (
-/obj/machinery/photocopier,
-/turf/open/floor/iron/half{
- dir = 1
- },
-/area/station/engineering/lobby)
-"xgH" = (
-/turf/closed/wall,
-/area/station/maintenance/floor1/port)
-"xgN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"xgV" = (
-/obj/effect/turf_decal/trimline/green/corner{
- dir = 8
- },
-/obj/item/radio/intercom/directional/north,
-/obj/structure/closet/secure_closet/personal,
-/turf/open/floor/iron/white/small,
-/area/station/commons/fitness/recreation)
-"xgW" = (
-/turf/open/floor/engine,
-/area/station/engineering/supermatter/room)
-"xhc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/machinery/camera/autoname/directional/south,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"xhd" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/structure/chair/stool{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"xhf" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"xhg" = (
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"xhh" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"xhk" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"xhp" = (
-/obj/machinery/computer/security{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"xht" = (
-/obj/effect/turf_decal/trimline/blue/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/command/teleporter)
-"xhx" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"xhz" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/abandoned,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard/fore)
-"xhA" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"xhC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard/aft)
-"xhJ" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/machinery/duct,
-/turf/open/floor/wood/parquet,
-/area/station/command/heads_quarters/cmo)
-"xhU" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"xhX" = (
-/obj/structure/table,
-/obj/item/stack/sheet/iron/fifty,
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/hfr_room)
-"xih" = (
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{
- dir = 4
- },
-/obj/machinery/airalarm/directional/north,
-/obj/effect/mapping_helpers/airalarm/engine_access,
-/turf/open/floor/iron/dark,
-/area/station/engineering/supermatter/waste)
-"xit" = (
-/obj/structure/railing/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"xiz" = (
-/obj/effect/turf_decal/tile/blue/half{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_edge{
- dir = 4
- },
-/area/station/medical/chemistry)
-"xiA" = (
-/obj/effect/spawner/structure/window/reinforced/tinted,
-/turf/open/floor/plating,
-/area/station/service/chapel/office)
-"xiC" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 8
- },
-/obj/structure/closet/firecloset,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"xiK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/port/aft)
-"xiM" = (
-/turf/open/openspace,
-/area/station/science/xenobiology)
-"xiO" = (
-/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{
- dir = 6
- },
-/turf/open/floor/iron/dark,
-/area/station/engineering/atmos/pumproom)
-"xiS" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Permabrig Visitation"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/security/brig,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/prison/visit)
-"xiU" = (
-/obj/effect/spawner/random/structure/girder,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"xiW" = (
-/obj/effect/spawner/structure/electrified_grille,
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xjc" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/obj/effect/turf_decal/tile/red/anticorner{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/security/brig)
-"xje" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/explab)
-"xjh" = (
-/obj/structure/closet/secure_closet/hop,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"xjo" = (
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"xjr" = (
-/obj/structure/table/reinforced,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/wrench{
- pixel_x = -2;
- pixel_y = 5
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"xjs" = (
-/turf/open/floor/iron/dark/textured_half,
-/area/station/engineering/supermatter/room)
-"xjI" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/chapel{
- dir = 4
- },
-/area/station/service/chapel)
-"xjL" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/passive_vent,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"xjQ" = (
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/fore)
-"xjS" = (
-/obj/machinery/vending/wardrobe/sec_wardrobe,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"xjW" = (
-/obj/machinery/atmospherics/components/unary/portables_connector{
- dir = 8
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/poster/contraband/random/directional/east,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"xjX" = (
-/obj/structure/rack,
-/obj/item/paint/paint_remover,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"xjZ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{
- dir = 4
- },
-/turf/open/floor/engine/airless,
-/area/station/engineering/supermatter/waste)
-"xko" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"xkq" = (
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/hallway/secondary/entry)
-"xkw" = (
-/obj/machinery/door/airlock/security{
- name = "Prison Wing"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "briglockdown";
- name = "Brig Lockdown"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/opposingcorners{
- dir = 1
- },
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"xkC" = (
-/obj/effect/turf_decal/trimline/brown/filled/corner{
- dir = 8
- },
-/obj/structure/railing/corner,
-/obj/machinery/light/directional/north,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"xkN" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/item/hatchet,
-/obj/machinery/light/broken/directional/east,
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"xkR" = (
-/obj/structure/table/wood,
-/obj/item/gavelhammer,
-/turf/open/floor/iron/dark,
-/area/station/security/courtroom)
-"xkT" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"xkU" = (
-/obj/machinery/airalarm/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/station/commons/toilet)
-"xkY" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/item/radio/intercom/directional/north,
-/obj/structure/closet/secure_closet/personal/cabinet,
-/turf/open/floor/wood,
-/area/station/cargo/miningdock)
-"xlj" = (
-/obj/machinery/computer{
- desc = "You'd think someone had left it in saltwater.";
- dir = 8;
- name = "Rusting Console"
- },
-/obj/machinery/light/red/dim/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xlk" = (
-/obj/machinery/smartfridge/chemistry/preloaded,
-/obj/machinery/door/firedoor,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"xln" = (
-/obj/machinery/power/shuttle_engine/huge{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"xlu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 10
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"xlD" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"xlE" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"xlH" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/kitchen/abandoned)
-"xlK" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/light/small/directional/west,
-/turf/open/misc/grass,
-/area/station/maintenance/floor1/starboard)
-"xmh" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/hallway/floor2/aft)
-"xmi" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor3/fore)
-"xmk" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/wood/tile,
-/area/station/service/library)
-"xmM" = (
-/obj/effect/turf_decal/trimline/green/filled/end{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"xmQ" = (
-/turf/open/openspace,
-/area/station/hallway/floor2/aft)
-"xna" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"xng" = (
-/obj/effect/decal/cleanable/blood/gibs/old,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"xni" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/aft)
-"xnr" = (
-/obj/effect/turf_decal/trimline/yellow/line,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"xns" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Bulkhead"
- },
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard/fore)
-"xnC" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/mob/living/basic/sloth/paperwork,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"xnL" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/turf/open/floor/wood/tile,
-/area/station/science/xenobiology/hallway)
-"xnY" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/half,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"xob" = (
-/obj/structure/frame/computer{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"xoj" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 6
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"xot" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/hallway/floor4/aft)
-"xoF" = (
-/obj/effect/turf_decal/trimline/purple/line,
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"xoM" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/brigdoor/left/directional/west{
- name = "Pharmacy Desk";
- req_access = list("pharmacy")
- },
-/obj/machinery/door/window/left/directional/east{
- name = "Pharmacy Desk"
- },
-/obj/item/paper_bin,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 4;
- id = "chem-lock-a";
- name = "Chemistry Shutters"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"xoN" = (
-/obj/structure/closet/crate,
-/obj/item/food/cheese/wheel,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"xoX" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-"xpi" = (
-/obj/structure/table/wood,
-/obj/structure/sign/poster/official/random/directional/east,
-/obj/item/storage/fancy/donut_box,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"xpk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/status_display/ai/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"xpt" = (
-/turf/open/floor/mineral/plastitanium,
-/area/station/maintenance/floor2/starboard/aft)
-"xpv" = (
-/obj/structure/flora/bush/sparsegrass/style_random,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/obj/item/reagent_containers/cup/bucket/wooden{
- pixel_x = 6;
- pixel_y = 4
- },
-/turf/open/floor/grass,
-/area/station/service/hydroponics/garden/abandoned)
-"xpw" = (
-/turf/open/space/basic,
-/area/space/nearstation)
-"xpA" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"xpH" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner,
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"xpI" = (
-/turf/closed/wall,
-/area/station/maintenance/solars/starboard/fore)
-"xpL" = (
-/obj/machinery/door/airlock/research/glass/incinerator/ordmix_exterior{
- name = "Burn Chamber Exterior Airlock"
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/effect/mapping_helpers/airlock/access/all/science/ordnance,
-/turf/open/floor/engine/vacuum,
-/area/station/science/ordnance/burnchamber)
-"xpM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/corner,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"xpO" = (
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/seeds/apple,
-/obj/machinery/hydroponics/constructable,
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"xpQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"xpR" = (
-/obj/structure/flora/bush/flowers_pp/style_random,
-/obj/structure/closet/crate{
- name = "Box O' Bees"
- },
-/obj/item/honey_frame,
-/obj/item/honey_frame,
-/obj/item/honey_frame,
-/obj/item/clothing/suit/utility/beekeeper_suit,
-/obj/item/clothing/suit/hooded/bee_costume,
-/obj/item/clothing/head/utility/beekeeper_head,
-/obj/item/clothing/head/hooded/bee_hood,
-/obj/item/melee/flyswatter,
-/obj/item/queen_bee/bought,
-/turf/open/floor/grass,
-/area/station/service/hydroponics)
-"xqr" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"xqs" = (
-/obj/structure/closet/crate,
-/obj/item/stock_parts/subspace/ansible,
-/obj/item/stock_parts/subspace/ansible,
-/obj/item/stock_parts/subspace/ansible,
-/obj/item/stock_parts/subspace/crystal,
-/obj/item/stock_parts/subspace/amplifier,
-/obj/item/stock_parts/subspace/filter,
-/obj/item/stock_parts/subspace/filter,
-/obj/item/stock_parts/subspace/filter,
-/obj/item/stock_parts/subspace/filter,
-/obj/item/stock_parts/subspace/analyzer,
-/turf/open/floor/circuit/green/telecomms,
-/area/station/tcommsat/server)
-"xqv" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/flora/bush/sunny/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"xqB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"xqL" = (
-/obj/effect/turf_decal/loading_area/white{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"xqR" = (
-/obj/effect/spawner/structure/window/reinforced/plasma,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter/room)
-"xqV" = (
-/obj/effect/turf_decal/trimline/white/arrow_ccw,
-/obj/effect/turf_decal/trimline/red/corner,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/newscaster/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"xqY" = (
-/obj/machinery/door/airlock/public{
- name = "Showers"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"xqZ" = (
-/obj/machinery/camera/directional/north{
- c_tag = "Medbay - Treatment Center";
- name = "medbay camera";
- network = list("ss13","medbay")
- },
-/obj/machinery/shower/directional/south,
-/obj/structure/fluff/shower_drain,
-/turf/open/floor/catwalk_floor/iron_white,
-/area/station/medical/treatment_center)
-"xrh" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/structure/reagent_dispensers/water_cooler,
-/obj/machinery/status_display/ai/directional/east,
-/turf/open/floor/iron/dark/corner{
- dir = 4
- },
-/area/station/command/teleporter)
-"xrj" = (
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/solars/port/aft)
-"xrq" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/engine,
-/area/station/maintenance/floor4/starboard/aft)
-"xrB" = (
-/obj/structure/cable/multilayer/multiz,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"xrK" = (
-/obj/machinery/door/window/brigdoor/left/directional/east{
- name = "Holding Cell";
- req_access = list("armory")
- },
-/obj/machinery/door/window/brigdoor/left/directional/west{
- name = "Holding Cell";
- req_access = list("armory")
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/execution/education)
-"xrY" = (
-/obj/machinery/button/door/directional/north{
- id = "survshop";
- name = "Workshop Shutters"
- },
-/obj/effect/decal/cleanable/oil,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"xsf" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/maintenance/floor2/starboard/fore)
-"xsg" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"xsi" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/turf/open/floor/iron/white/side{
- dir = 8
- },
-/area/station/medical/pharmacy)
-"xsm" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"xst" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/aft)
-"xsA" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/tank/internals/plasma,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port)
-"xsC" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"xsG" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 5
- },
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"xsH" = (
-/obj/structure/lattice,
-/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
-/turf/open/space/basic,
-/area/space/nearstation)
-"xsL" = (
-/obj/structure/railing{
- dir = 4
- },
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/obj/effect/turf_decal/arrows{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"xsP" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/aft)
-"xsQ" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"xsR" = (
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"xsX" = (
-/obj/structure/railing/corner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"xtd" = (
-/obj/effect/turf_decal/tile/green{
- dir = 1
- },
-/obj/structure/chair/sofa/bench/left{
- dir = 4
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/hallway/secondary/entry)
-"xtp" = (
-/obj/effect/turf_decal/siding/thinplating_new,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"xtC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"xtF" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 4
- },
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/effect/spawner/random/engineering/tool,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xtG" = (
-/obj/machinery/atmospherics/components/unary/portables_connector/visible{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"xtI" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/obj/structure/sign/poster/official/random/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor3/fore)
-"xtP" = (
-/obj/machinery/door/firedoor,
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "arrivalsprivacy";
- name = "Arrivals Privacy Shutters"
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/station/hallway/secondary/entry)
-"xtR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/maintenance/floor2/starboard/aft)
-"xtX" = (
-/obj/machinery/door/airlock/medical{
- name = "Storage"
- },
-/obj/effect/mapping_helpers/airlock/access/any/medical/psychology,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"xtY" = (
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/fore)
-"xtZ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 6
- },
-/obj/structure/closet/emcloset,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"xue" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/siding/wideplating,
-/obj/effect/turf_decal/siding/wideplating{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/medbay/central)
-"xug" = (
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/structure/table/reinforced/rglass,
-/obj/item/folder/blue{
- pixel_x = 6;
- pixel_y = 6
- },
-/obj/item/folder/white,
-/obj/item/pen/fountain,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"xuh" = (
-/obj/structure/lattice,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"xui" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/aft)
-"xuv" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor2/starboard/fore)
-"xuW" = (
-/obj/effect/turf_decal/trimline/red/line,
-/obj/effect/turf_decal/trimline/white/warning,
-/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input,
-/turf/open/floor/engine/n2o,
-/area/station/engineering/atmos)
-"xuX" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/cargo/lobby)
-"xvk" = (
-/obj/structure/dresser,
-/turf/open/floor/wood,
-/area/station/command/heads_quarters/hop)
-"xvo" = (
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/fore)
-"xvr" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/command/gateway)
-"xvz" = (
-/obj/structure/grille,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"xvA" = (
-/obj/effect/turf_decal/tile/green/full,
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/red/line{
- dir = 8
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/hallway/secondary/entry)
-"xvL" = (
-/obj/machinery/atmospherics/components/trinary/mixer/flipped{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/storage)
-"xvN" = (
-/obj/structure/table,
-/obj/item/reagent_containers/cup/beaker{
- pixel_x = 5
- },
-/obj/item/reagent_containers/condiment/enzyme,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"xvO" = (
-/obj/effect/decal/cleanable/oil,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod,
-/area/station/maintenance/floor4/starboard/aft)
-"xvW" = (
-/obj/structure/cable,
-/obj/effect/turf_decal/stripes/white/corner{
- dir = 8
- },
-/turf/open/floor/iron/dark/corner{
- dir = 8
- },
-/area/station/engineering/storage/tech)
-"xwa" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/chair/office/light{
- dir = 8
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/starboard)
-"xwg" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"xwi" = (
-/obj/machinery/vending/hydronutrients,
-/obj/effect/turf_decal/tile/purple{
- dir = 1
- },
-/turf/open/floor/iron/white/side{
- dir = 6
- },
-/area/station/cargo/miningdock)
-"xwo" = (
-/obj/machinery/meter/monitored/distro_loop,
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xwx" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 5
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"xwI" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/fore)
-"xwJ" = (
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/unres,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"xwL" = (
-/obj/structure/closet/bombcloset/white,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"xwM" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/wood/parquet,
-/area/station/medical/psychology)
-"xwN" = (
-/obj/structure/kitchenspike,
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen/coldroom)
-"xwX" = (
-/obj/structure/easel,
-/turf/open/floor/bamboo/tatami/black,
-/area/station/commons/storage/art)
-"xwZ" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/bot_white{
- color = "#74b2d3"
- },
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"xxh" = (
-/obj/effect/turf_decal/siding/white{
- dir = 10
- },
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"xxw" = (
-/obj/structure/closet/emcloset,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"xxx" = (
-/obj/machinery/vending/cigarette,
-/obj/effect/turf_decal/trimline/green/arrow_cw{
- dir = 8
- },
-/obj/effect/turf_decal/tile/green,
-/turf/open/floor/iron,
-/area/station/cargo/miningdock)
-"xxy" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock{
- name = "Vacant Office"
- },
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/office)
-"xxA" = (
-/obj/machinery/holopad,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"xxC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"xxF" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"xxO" = (
-/obj/effect/turf_decal/stripes/white/line,
-/turf/open/floor/iron/dark/side,
-/area/station/engineering/storage/tech)
-"xxQ" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark,
-/area/station/cargo/drone_bay)
-"xxS" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"xyb" = (
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/engineering/supermatter)
-"xyc" = (
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"xyd" = (
-/obj/machinery/vending/wardrobe/viro_wardrobe,
-/obj/machinery/door_buttons/airlock_controller{
- idExterior = "virology_airlock_exterior";
- idInterior = "virology_airlock_interior";
- idSelf = "virology_airlock_control";
- name = "Virology Access Console";
- pixel_x = 24;
- req_access = list("virology")
- },
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"xyi" = (
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"xyw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"xyz" = (
-/obj/effect/spawner/random/engineering/atmospherics_portable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"xyA" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/computer/security{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"xyC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard)
-"xyD" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/turf/open/floor/iron/textured_corner{
- dir = 4
- },
-/area/station/medical/chemistry)
-"xyM" = (
-/obj/effect/turf_decal/trimline/green/warning{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"xyO" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/wrapping,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/fore)
-"xyU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/picket_sign,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"xza" = (
-/obj/effect/landmark/blobstart,
-/turf/open/floor/mineral/plastitanium,
-/area/station/maintenance/floor2/starboard/aft)
-"xzd" = (
-/obj/structure/table/reinforced,
-/obj/item/folder,
-/obj/structure/noticeboard/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/auxlab/firing_range)
-"xze" = (
-/obj/structure/table,
-/obj/item/storage/medkit/emergency,
-/obj/effect/decal/cleanable/blood/old,
-/obj/machinery/vending/wallmed/directional/north,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark/textured,
-/area/station/commons/fitness)
-"xzr" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/aft)
-"xzA" = (
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"xzH" = (
-/obj/effect/turf_decal/trimline/yellow/warning,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/aft)
-"xzP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/ash,
-/obj/effect/spawner/random/trash/graffiti{
- pixel_x = -32
- },
-/obj/effect/spawner/random/trash/graffiti{
- pixel_y = -32
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"xzS" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"xzT" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"xAk" = (
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/obj/structure/cable,
-/obj/effect/landmark/event_spawn,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"xAl" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"xAn" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"xAo" = (
-/obj/effect/mapping_helpers/airlock/access/any/science/ordnance,
-/obj/machinery/door/airlock/research/glass{
- name = "Ordnance Stairway"
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"xAq" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/structure/chair/sofa/middle/maroon{
- dir = 8
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"xAu" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai_upload)
-"xAH" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "arrivalsprivacy";
- name = "Arrivals Privacy Shutters"
- },
-/obj/machinery/door/airlock{
- name = "Arrivals Changing Room"
- },
-/turf/open/floor/iron/smooth_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"xAL" = (
-/obj/effect/spawner/random/trash/mess,
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"xAO" = (
-/obj/machinery/camera/autoname/directional/east,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"xBd" = (
-/obj/effect/turf_decal/trimline/neutral/filled/end,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"xBe" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/cargo/lobby)
-"xBi" = (
-/obj/item/surgery_tray/full{
- pixel_y = 13
- },
-/obj/item/reagent_containers/medigel/sterilizine{
- pixel_x = 1
- },
-/obj/item/reagent_containers/syringe{
- pixel_x = -7
- },
-/obj/item/stack/medical/bone_gel{
- pixel_x = 10
- },
-/obj/effect/turf_decal/box/white,
-/obj/structure/table/reinforced/rglass,
-/obj/effect/turf_decal/siding/white{
- dir = 9
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"xBl" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"xBt" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/effect/turf_decal/trimline/neutral/warning{
- dir = 4
- },
-/obj/effect/turf_decal/siding/thinplating/dark{
- dir = 8
- },
-/obj/structure/closet/l3closet/scientist,
-/turf/open/floor/iron/dark,
-/area/station/command/gateway)
-"xBB" = (
-/obj/machinery/door/airlock/public{
- id_tag = "theater_toilets";
- name = "Theater Toilet"
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"xBC" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/power/emitter/welded{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"xCg" = (
-/obj/structure/curtain,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment2)
-"xCl" = (
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 4
- },
-/obj/structure/sign/departments/aisat/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"xCw" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #1";
- dir = 8;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xCy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/fore)
-"xCC" = (
-/turf/open/floor/iron/dark,
-/area/station/medical/psychology)
-"xCJ" = (
-/obj/effect/turf_decal/trimline/dark_blue/line{
- dir = 5
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"xCM" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"xCR" = (
-/obj/structure/table/reinforced,
-/obj/structure/sign/poster/official/random/directional/south,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/obj/effect/spawner/random/armory/rubbershot,
-/obj/effect/spawner/random/armory/rubbershot,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"xCS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"xCU" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/flashlight/glowstick,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/science/lobby)
-"xCX" = (
-/obj/structure/closet/secure_closet/personal,
-/obj/effect/landmark/start/hangover/closet,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/fitness)
-"xDl" = (
-/obj/effect/turf_decal/trimline/blue/filled/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/office)
-"xDm" = (
-/obj/machinery/button/door/directional/south{
- id = "theater_toilets";
- name = "Door Bolt Control";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/service/theater)
-"xDw" = (
-/obj/structure/closet/crate/trashcart,
-/obj/effect/spawner/random/contraband/prison,
-/obj/effect/spawner/random/trash/garbage,
-/obj/effect/spawner/random/trash/garbage,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/security/prison)
-"xDx" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/white,
-/area/station/science/circuits)
-"xDy" = (
-/obj/machinery/nuclearbomb/selfdestruct,
-/obj/machinery/camera/motion/directional/south{
- c_tag = "Vault";
- network = list("vault")
- },
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/circuit,
-/area/station/ai_monitored/command/nuke_storage)
-"xDC" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/door/airlock/command{
- name = "Research Division Server Room"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/mapping_helpers/airlock/access/all/science/rd,
-/turf/open/floor/iron/white,
-/area/station/science/server)
-"xDG" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"xDK" = (
-/obj/structure/chair/office/light{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"xDM" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/item/crowbar,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"xDQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/turf/open/floor/plating,
-/area/station/maintenance/department/engine/atmos)
-"xDS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/service/kitchen/diner)
-"xDV" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/carpet/green,
-/area/station/cargo/miningdock)
-"xDX" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/corner,
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 4
- },
-/obj/machinery/requests_console/directional/west{
- department = "Hydroponics";
- name = "Hydroponics Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/supplies,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"xDZ" = (
-/obj/effect/turf_decal/stripes/white/line{
- dir = 4
- },
-/obj/machinery/light/directional/west,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/engineering/storage/tech)
-"xEh" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/aft)
-"xEi" = (
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 1
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"xEj" = (
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/obj/machinery/iv_drip,
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"xEl" = (
-/obj/machinery/computer/records/security,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hos)
-"xEn" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/tile/dark/half/contrasted{
- dir = 4
- },
-/obj/item/wrench,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/rack,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"xEo" = (
-/obj/effect/spawner/structure/window/hollow/end{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/starboard/fore)
-"xEp" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "mailbelt";
- name = "disposals conveyor switch";
- pixel_x = -8
- },
-/obj/effect/turf_decal/siding/thinplating_new/corner,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"xEv" = (
-/obj/machinery/keycard_auth/wall_mounted/directional/north{
- pixel_x = 9
- },
-/obj/machinery/button/door/directional/north{
- name = "CMO Privacy Shutters";
- id = "cmoshutter";
- req_access = list("cmo");
- pixel_y = 25;
- pixel_x = -5
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"xEw" = (
-/obj/machinery/computer/camera_advanced/base_construction/aux{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/construction/mining/aux_base)
-"xEB" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"xEJ" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 4
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"xEK" = (
-/obj/machinery/button/door/directional/south{
- id = "nsminingdorm2";
- normaldoorcontrol = 1;
- specialfunctions = 4
- },
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green,
-/turf/open/floor/carpet/green,
-/area/station/cargo/miningdock)
-"xEL" = (
-/obj/structure/table/wood/fancy/red,
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/turf/open/floor/carpet/royalblack,
-/area/station/service/kitchen/diner)
-"xEN" = (
-/obj/effect/turf_decal/trimline/white/filled/corner{
- dir = 8
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/station/hallway/secondary/service)
-"xEP" = (
-/turf/closed/wall/r_wall,
-/area/station/security/warden)
-"xEY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/secondary/exit)
-"xEZ" = (
-/obj/machinery/camera/directional/north{
- c_tag = "AI Chamber - Starboard";
- network = list("aicore")
- },
-/obj/machinery/button/door/directional/north{
- id = "AI Chamber entrance shutters";
- name = "AI Chamber Lockdown";
- pixel_x = 6;
- req_access = list("ai_upload")
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/ai)
-"xFf" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"xFg" = (
-/obj/structure/toilet{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment2)
-"xFl" = (
-/obj/effect/turf_decal/trimline/brown/filled/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"xFo" = (
-/obj/machinery/computer/monitor{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/structure/cable,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"xFp" = (
-/obj/machinery/flasher/directional/south{
- id = "brigflashdoor";
- pixel_x = -26
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint)
-"xFH" = (
-/obj/structure/table/wood,
-/obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar{
- pixel_x = 5;
- pixel_y = 16
- },
-/obj/item/reagent_containers/cup/bottle/syrup_bottle/liqueur{
- pixel_x = -5;
- pixel_y = 16
- },
-/obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel{
- pixel_y = 16
- },
-/obj/item/reagent_containers/cup/rag,
-/obj/item/reagent_containers/cup/glass/coffee{
- pixel_x = -3;
- pixel_y = 9
- },
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/wood,
-/area/station/hallway/secondary/entry)
-"xFJ" = (
-/obj/machinery/atmospherics/pipe/layer_manifold/yellow/visible,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xFN" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"xFR" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/machinery/suit_storage_unit/engine,
-/turf/open/floor/iron/dark/textured_corner,
-/area/station/engineering/lobby)
-"xGl" = (
-/turf/open/floor/plating/foam,
-/area/station/maintenance/floor1/port/aft)
-"xGu" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 8
- },
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"xGx" = (
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"xGI" = (
-/turf/closed/wall,
-/area/station/command/heads_quarters/ce)
-"xGO" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/arrow_ccw{
- dir = 8
- },
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"xGR" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/command{
- name = "Quartermaster's Quarters"
- },
-/obj/effect/mapping_helpers/airlock/access/all/supply/qm,
-/turf/open/floor/iron/textured,
-/area/station/command/heads_quarters/qm)
-"xGU" = (
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 4
- },
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/fore)
-"xHe" = (
-/turf/closed/wall,
-/area/station/maintenance/floor4/starboard/fore)
-"xHg" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/turf/open/floor/engine/hull/reinforced,
-/area/space/nearstation)
-"xHr" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/aft)
-"xHv" = (
-/turf/open/floor/iron/dark/side,
-/area/station/security/courtroom)
-"xHw" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/filled/arrow_ccw{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"xHA" = (
-/turf/closed/wall,
-/area/station/maintenance/disposal)
-"xHK" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"xHR" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port/aft)
-"xHT" = (
-/obj/effect/turf_decal/trimline/purple/filled/corner{
- dir = 4
- },
-/obj/item/kirbyplants/random,
-/obj/item/radio/intercom/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"xIh" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/carpet,
-/area/station/medical/psychology)
-"xIk" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"xIr" = (
-/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{
- dir = 5
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xIs" = (
-/obj/effect/spawner/random/structure/tank_holder,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard/fore)
-"xIx" = (
-/obj/structure/bed/double,
-/obj/effect/spawner/random/bedsheet/double,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/effect/landmark/start/shaft_miner,
-/turf/open/floor/carpet/blue,
-/area/station/cargo/miningdock)
-"xID" = (
-/obj/structure/closet/crate/freezer/blood,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/light/small/directional/west,
-/turf/open/floor/iron/white,
-/area/station/medical/surgery/aft)
-"xIE" = (
-/obj/structure/table_frame,
-/obj/item/stack/sheet/plastitaniumglass,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"xIF" = (
-/obj/effect/spawner/structure/window/hollow/directional{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port)
-"xIL" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"xIP" = (
-/obj/structure/table/reinforced,
-/obj/machinery/recharger,
-/obj/machinery/door/window/brigdoor/left/directional/south{
- name = "Armory Desk";
- req_access = list("armory")
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id = "armblast";
- name = "Armory Blast Door"
- },
-/turf/open/floor/plating,
-/area/station/security/brig)
-"xIR" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"xIV" = (
-/turf/open/space/openspace,
-/area/space/nearstation)
-"xJk" = (
-/obj/machinery/seed_extractor,
-/obj/effect/turf_decal/tile/green/full,
-/obj/machinery/light/directional/south,
-/turf/open/floor/iron/dark,
-/area/station/service/hydroponics)
-"xJo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"xJp" = (
-/obj/item/canvas/twentyfour_twentyfour,
-/obj/structure/table,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"xJs" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor2/fore)
-"xJv" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/item/reagent_containers/cup/bucket,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard/aft)
-"xJx" = (
-/obj/machinery/computer/atmos_control/ordnancemix{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"xJz" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/station/hallway/secondary/exit)
-"xJC" = (
-/obj/effect/turf_decal/siding/thinplating_new/dark,
-/obj/effect/turf_decal/trimline/brown/warning{
- dir = 1
- },
-/turf/open/floor/engine/hull,
-/area/space/nearstation)
-"xJH" = (
-/obj/structure/transit_tube/horizontal{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"xJL" = (
-/obj/effect/turf_decal/bot/left,
-/turf/open/floor/engine,
-/area/station/engineering/atmos/hfr_room)
-"xJM" = (
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/floor/iron/stairs{
- dir = 1
- },
-/area/station/maintenance/floor3/starboard/aft)
-"xJT" = (
-/obj/effect/turf_decal/trimline/blue/warning{
- dir = 4
- },
-/obj/effect/spawner/random/engineering/canister,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"xJW" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor3/port)
-"xJX" = (
-/obj/structure/table,
-/obj/item/cigarette/candy{
- pixel_x = 4
- },
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/hallway/floor1/aft)
-"xKa" = (
-/obj/effect/turf_decal/stripes/white/corner,
-/turf/open/floor/iron/dark/corner,
-/area/station/engineering/storage/tech)
-"xKd" = (
-/obj/effect/spawner/random/entertainment/arcade{
- dir = 1
- },
-/obj/machinery/light/blacklight/directional/south,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"xKj" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/science/cytology)
-"xKq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
-"xKs" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/security/evidence)
-"xKt" = (
-/obj/structure/railing/corner,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"xKy" = (
-/obj/machinery/modular_computer/preset/id{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/cmo)
-"xKZ" = (
-/obj/machinery/light_switch/directional/north,
-/obj/machinery/shower/directional/west,
-/turf/open/floor/plastic,
-/area/station/security/prison/shower)
-"xLb" = (
-/turf/open/floor/engine{
- name = "Holodeck Projector Floor"
- },
-/area/station/holodeck/rec_center)
-"xLc" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 8
- },
-/obj/item/kirbyplants/random,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/science/lobby)
-"xLd" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/service/theater)
-"xLe" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/sign/departments/botany/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/aft)
-"xLo" = (
-/obj/machinery/atmospherics/components/trinary/filter,
-/obj/effect/turf_decal/tile/neutral/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/science/ordnance/testlab)
-"xLs" = (
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"xLw" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/chapel{
- dir = 1
- },
-/area/station/service/chapel)
-"xLy" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/item/assembly/flash,
-/obj/item/restraints/handcuffs,
-/obj/machinery/camera/directional/east{
- name = "Checkpoint - Engineering Deck"
- },
-/obj/machinery/recharger,
-/obj/machinery/light/small/directional/east,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"xLG" = (
-/obj/machinery/door/airlock/hatch{
- name = "Elevator Shaft Access"
- },
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance,
-/turf/open/floor/plating,
-/area/station/hallway/floor3/fore)
-"xLJ" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/science/auxlab)
-"xLO" = (
-/obj/effect/decal/cleanable/blood/footprints{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/station/maintenance/floor3/starboard/aft)
-"xLU" = (
-/obj/effect/turf_decal/tile/purple/fourcorners,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor2/fore)
-"xLZ" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"xMd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/oil,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/fore)
-"xMk" = (
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"xMu" = (
-/obj/structure/table/reinforced,
-/obj/structure/window/spawner/directional/south,
-/obj/effect/turf_decal/trimline/yellow/corner{
- dir = 1
- },
-/obj/item/mod/module/plasma_stabilizer,
-/obj/item/mod/module/signlang_radio,
-/obj/item/mod/module/thermal_regulator,
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/engineering/lobby)
-"xMF" = (
-/obj/effect/turf_decal/tile/blue/opposingcorners,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"xMH" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/mapping_helpers/airlock/unres,
-/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"xMJ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/floor3/aft)
-"xMV" = (
-/obj/structure/table/reinforced,
-/obj/item/stock_parts/power_store/cell/high,
-/obj/machinery/cell_charger,
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/command/bridge)
-"xMW" = (
-/obj/structure/cable,
-/obj/structure/disposalpipe/junction{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor3/aft)
-"xMX" = (
-/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
- dir = 8
- },
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/hfr_room)
-"xMY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/structure/crate,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port/aft)
-"xNd" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/siding/blue,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
-"xNf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"xNi" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/iron/corner{
- dir = 4
- },
-/area/station/engineering/atmos/office)
-"xNx" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/cargo/storage)
-"xNy" = (
-/obj/machinery/airalarm/directional/west,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/green/opposingcorners,
-/turf/open/floor/iron/white,
-/area/station/medical/virology)
-"xNC" = (
-/obj/structure/ladder,
-/turf/open/floor/iron/smooth,
-/area/station/hallway/floor3/fore)
-"xND" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/decal/cleanable/oil,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"xNE" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xNH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue/fourcorners,
-/turf/open/floor/iron/white/textured,
-/area/station/medical/treatment_center)
-"xNK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate,
-/obj/effect/spawner/random/entertainment/money_small,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"xNL" = (
-/obj/structure/chair/stool/directional/west,
-/obj/effect/landmark/start/hangover,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/effect/landmark/start/clown,
-/turf/open/floor/wood,
-/area/station/service/theater)
-"xNT" = (
-/obj/structure/closet/secure_closet/engineering_electrical,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron/corner{
- dir = 1
- },
-/area/station/engineering/lobby)
-"xNX" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"xOe" = (
-/obj/machinery/light/cold/no_nightlight/directional/north,
-/turf/open/floor/engine,
-/area/station/science/explab)
-"xOr" = (
-/obj/structure/closet/secure_closet/security,
-/obj/machinery/newscaster/directional/north,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"xOs" = (
-/obj/structure/railing{
- dir = 8
- },
-/obj/effect/spawner/random/structure/grille,
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"xOC" = (
-/obj/structure/table/reinforced,
-/obj/item/modular_computer/laptop,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xOF" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/dark,
-/area/station/security/prison)
-"xOI" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/duct,
-/obj/machinery/door/poddoor/shutters{
- id = "secmechbay";
- name = "Security Mech Bay Shutters"
- },
-/obj/effect/turf_decal/caution/stand_clear,
-/obj/effect/turf_decal/box,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark,
-/area/station/security/mechbay)
-"xOY" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/security/armory)
-"xPr" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"xPs" = (
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/smooth,
-/area/station/cargo/sorting)
-"xPu" = (
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"xPv" = (
-/obj/structure/filingcabinet/chestdrawer,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"xPw" = (
-/obj/machinery/light_switch/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark,
-/area/station/security/warden)
-"xPB" = (
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/piratepad/civilian,
-/obj/effect/turf_decal/bot_white,
-/obj/effect/turf_decal/siding/thinplating_new{
- dir = 10
- },
-/turf/open/floor/iron/smooth_large,
-/area/station/cargo/lobby)
-"xPE" = (
-/obj/item/bikehorn/rubberducky,
-/obj/machinery/light/directional/north,
-/obj/machinery/duct,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"xPI" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/obj/machinery/duct,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"xPL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/contraband/random/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"xPW" = (
-/obj/structure/railing,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/starboard/aft)
-"xPX" = (
-/obj/machinery/light/red/dim/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/oil/streak,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/aft)
-"xPZ" = (
-/obj/structure/disposalpipe/trunk/multiz{
- dir = 4
- },
-/turf/open/openspace,
-/area/station/maintenance/floor3/port)
-"xQg" = (
-/obj/machinery/portable_atmospherics/canister/plasma,
-/obj/effect/turf_decal/bot,
-/obj/machinery/status_display/evac/directional/south,
-/turf/open/floor/iron/dark/textured,
-/area/station/science/ordnance/storage)
-"xQk" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/iron/dark/corner{
- dir = 1
- },
-/area/station/commons/storage/primary)
-"xQo" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood/parquet,
-/area/station/medical/break_room)
-"xQp" = (
-/obj/item/kirbyplants/random,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"xQq" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"xQv" = (
-/obj/structure/table,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/item/storage/bag/tray,
-/turf/open/floor/iron/kitchen,
-/area/station/service/kitchen)
-"xQC" = (
-/obj/structure/ladder,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/port/aft)
-"xQG" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"xQL" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/plating,
-/area/station/engineering/atmos/project)
-"xRf" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/camera/autoname/directional/east,
-/turf/open/floor/wood/tile,
-/area/station/service/chapel/office)
-"xRk" = (
-/obj/structure/frame/computer{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"xRo" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/grille_or_waste,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/maintenance/floor2/port/aft)
-"xRs" = (
-/obj/structure/rack,
-/obj/item/reagent_containers/spray/cleaner{
- pixel_y = -5
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/port/aft)
-"xRB" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/railing{
- dir = 10
- },
-/obj/structure/marker_beacon/burgundy,
-/turf/open/space/openspace,
-/area/space/nearstation)
-"xRH" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/turf/open/floor/iron/checker{
- dir = 1
- },
-/area/station/science/genetics)
-"xRJ" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/item/screwdriver,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xRM" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor3/starboard)
-"xRQ" = (
-/obj/machinery/camera/motion/directional/east{
- c_tag = "MiniSat Foyer";
- network = list("minisat")
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/radio/intercom/directional/north,
-/obj/machinery/computer/teleporter{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat)
-"xRR" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor4/aft)
-"xRU" = (
-/obj/machinery/firealarm/directional/east,
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/structure/chair/sofa/bench/left,
-/obj/machinery/digital_clock/directional/north,
-/turf/open/floor/iron,
-/area/station/cargo/lobby)
-"xSb" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/service)
-"xSi" = (
-/obj/effect/turf_decal/tile/dark/half/contrasted,
-/obj/effect/turf_decal/tile/dark/half/contrasted,
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology/hallway)
-"xSl" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"xSn" = (
-/obj/structure/table/reinforced,
-/obj/item/restraints/handcuffs/cable/zipties/used,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xSr" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/port/fore)
-"xSB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"xSK" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood/end{
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood,
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/glass/reinforced,
-/area/station/service/library)
-"xSM" = (
-/obj/structure/chair/sofa/corp/left{
- dir = 8
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/wood,
-/area/station/command/meeting_room)
-"xSQ" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/wood,
-/area/station/security/detectives_office)
-"xSW" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/box/monkeycubes{
- pixel_x = -5
- },
-/obj/item/storage/box/monkeycubes,
-/obj/item/storage/box/monkeycubes{
- pixel_x = 5
- },
-/obj/structure/sign/poster/official/random/directional/west,
-/turf/open/floor/circuit,
-/area/station/science/xenobiology)
-"xTa" = (
-/obj/machinery/door/poddoor/shutters/preopen{
- id = "aband_armour";
- name = "Armoury Shutters"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/aft)
-"xTw" = (
-/obj/machinery/door/airlock/security{
- name = "Monitoring"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/interrogation)
-"xTG" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/white,
-/area/station/science/ordnance/testlab)
-"xTH" = (
-/obj/structure/table/wood,
-/obj/item/instrument/violin,
-/obj/machinery/light/directional/west,
-/turf/open/floor/wood/tile,
-/area/station/commons/fitness/recreation)
-"xTI" = (
-/obj/structure/transit_tube/curved/flipped,
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/ai_monitored/turret_protected/aisat)
-"xTW" = (
-/obj/machinery/light_switch/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/station/maintenance/floor3/starboard/aft)
-"xUc" = (
-/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{
- dir = 9
- },
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/maintenance/disposal/incinerator)
-"xUk" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
-"xUB" = (
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/fore)
-"xUI" = (
-/obj/structure/cable,
-/obj/structure/chair/sofa/bench/left,
-/obj/effect/turf_decal/tile/green/half/contrasted,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/security/prison)
-"xUQ" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/turf/open/floor/iron/dark/side{
- dir = 5
- },
-/area/station/hallway/floor4/fore)
-"xUS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/chair/plastic{
- dir = 8
- },
-/obj/item/toy/plush/lizard_plushie/space/green{
- name = "Warns-The-Fool";
- pixel_x = -3;
- pixel_y = 2
- },
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"xUT" = (
-/obj/machinery/computer/security,
-/obj/machinery/light/small/directional/north,
-/obj/effect/turf_decal/tile/red/fourcorners,
-/turf/open/floor/iron/dark/textured,
-/area/station/security/checkpoint/second)
-"xUU" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable,
-/obj/effect/spawner/random/vending/snackvend,
-/turf/open/floor/iron/dark,
-/area/station/science/breakroom)
-"xVa" = (
-/obj/machinery/light/directional/north,
-/obj/machinery/camera{
- c_tag = "Atmospherics Cam #3";
- dir = 4;
- network = list("ss13","engine")
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xVn" = (
-/obj/effect/decal/cleanable/garbage,
-/obj/effect/decal/cleanable/vomit/old,
-/obj/effect/turf_decal/trimline/purple/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"xVo" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/obj/structure/girder,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port)
-"xVp" = (
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
-/obj/structure/barricade/wooden/crude,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"xVt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"xVC" = (
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"xVF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white/textured_large,
-/area/station/service/chapel)
-"xVR" = (
-/obj/effect/turf_decal/tile/yellow/opposingcorners,
-/obj/structure/cable,
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/white,
-/area/station/medical/pharmacy)
-"xVS" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 4
- },
-/area/station/maintenance/floor1/starboard/aft)
-"xVV" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/light/red/dim/directional/north,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor4/starboard)
-"xVX" = (
-/obj/effect/turf_decal/trimline/white/arrow_ccw,
-/obj/effect/turf_decal/trimline/red/warning,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/entry)
-"xWe" = (
-/turf/closed/wall/r_wall,
-/area/station/science/auxlab)
-"xWf" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard/fore)
-"xWl" = (
-/obj/machinery/computer/telecomms/server{
- dir = 4;
- network = "tcommsat"
- },
-/turf/open/floor/iron/smooth,
-/area/station/tcommsat/computer)
-"xWm" = (
-/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"xWn" = (
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"xWq" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/shower/directional/west,
-/turf/open/floor/iron/showroomfloor{
- name = "bathroom tiles"
- },
-/area/station/security/lockers)
-"xWr" = (
-/obj/effect/turf_decal/trimline/green/filled/arrow_cw,
-/obj/machinery/light/small/directional/north,
-/obj/effect/turf_decal/trimline/green/filled/mid_joiner,
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"xWv" = (
-/obj/effect/decal/cleanable/blood,
-/obj/item/knife/shiv,
-/turf/open/floor/plating,
-/area/station/maintenance/floor1/port/aft)
-"xWx" = (
-/obj/structure/chair/sofa/bench/left,
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"xWy" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/iron/dark,
-/area/station/medical/morgue)
-"xWF" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/aft)
-"xWM" = (
-/turf/open/floor/iron/dark,
-/area/station/security/eva)
-"xWO" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/bluespace_vendor/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor1/fore)
-"xWV" = (
-/obj/effect/turf_decal/tile/green/half,
-/obj/effect/landmark/navigate_destination/dockescpod,
-/obj/effect/spawner/random/engineering/tracking_beacon,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/secondary/exit/escape_pod)
-"xXd" = (
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/iron/dark/side{
- dir = 6
- },
-/area/station/security/prison)
-"xXe" = (
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 9
- },
-/obj/machinery/camera/autoname/directional/north,
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"xXg" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 4
- },
-/obj/structure/rack,
-/obj/item/storage/box/pinpointer_pairs,
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor1/port)
-"xXi" = (
-/obj/machinery/door/airlock/medical{
- name = "Safe Habitation A"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/wood,
-/area/station/medical/psychology)
-"xXm" = (
-/obj/machinery/space_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard)
-"xXo" = (
-/obj/docking_port/stationary{
- dheight = 1;
- dir = 8;
- dwidth = 12;
- height = 17;
- name = "northwest of station";
- shuttle_id = "syndicate_nw";
- width = 23
- },
-/turf/open/space/openspace,
-/area/space)
-"xXp" = (
-/obj/machinery/griddle,
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar)
-"xXq" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/iron/dark/side,
-/area/station/service/library/private)
-"xXv" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/light/colour_cycle/dancefloor_b,
-/area/station/maintenance/floor2/port/fore)
-"xXB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/carpet,
-/area/station/commons/vacant_room/office)
-"xXF" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/starboard)
-"xXK" = (
-/obj/machinery/airalarm/directional/north,
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"xXU" = (
-/obj/machinery/firealarm/directional/east,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"xYb" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port/fore)
-"xYd" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"xYg" = (
-/turf/open/floor/iron/dark,
-/area/station/maintenance/floor2/starboard/fore)
-"xYo" = (
-/turf/closed/wall,
-/area/station/hallway/secondary/exit/departure_lounge)
-"xYr" = (
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"xYB" = (
-/obj/effect/spawner/random/engineering/tank,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/port)
-"xYC" = (
-/obj/effect/turf_decal/siding/blue{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/carpet/neon/simple/pink/nodots,
-/area/station/maintenance/floor2/port/fore)
-"xYE" = (
-/obj/effect/turf_decal/siding/white{
- dir = 1
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/white/small{
- name = "padded floor"
- },
-/area/station/medical/psychology)
-"xYK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port/fore)
-"xYL" = (
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"xYM" = (
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"xYN" = (
-/obj/machinery/light/directional/south,
-/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/hallway/floor1/aft)
-"xYQ" = (
-/obj/structure/railing/corner{
- dir = 1
- },
-/obj/effect/landmark/blobstart,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/starboard)
-"xYS" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/blue/line{
- dir = 1
- },
-/turf/open/floor/carpet/blue,
-/area/station/command/meeting_room)
-"xYU" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"xZb" = (
-/obj/structure/chair/comfy{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/command/teleporter)
-"xZg" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/turf/open/floor/iron/dark/side{
- dir = 8
- },
-/area/station/hallway/secondary/exit/departure_lounge)
-"xZl" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/warning,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/starboard)
-"xZu" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor4/starboard)
-"xZv" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/carpet/green,
-/area/station/cargo/miningdock)
-"xZB" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/medical/break_room)
-"xZL" = (
-/turf/closed/wall,
-/area/station/security/brig)
-"xZM" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat_interior)
-"xZX" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/obj/structure/rack,
-/obj/item/soap/nanotrasen,
-/turf/open/floor/iron,
-/area/station/science/cytology)
-"yae" = (
-/obj/effect/spawner/random/trash/grime,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/landmark/generic_maintenance_landmark,
-/turf/open/floor/plating,
-/area/station/medical/abandoned)
-"yag" = (
-/obj/effect/turf_decal/tile/green/half{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/entry)
-"yal" = (
-/obj/structure/window/reinforced/spawner/directional/east,
-/obj/structure/curtain/cloth,
-/obj/structure/closet/secure_closet/personal/patient,
-/obj/item/radio/intercom/directional/south,
-/turf/open/floor/wood/parquet,
-/area/station/medical/patients_rooms)
-"yaq" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 10
- },
-/obj/effect/turf_decal/siding/white/corner{
- dir = 4
- },
-/obj/machinery/light/cold/no_nightlight/directional/west,
-/turf/open/floor/iron/white,
-/area/station/science/cytology)
-"yaK" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/hallway/secondary/exit/escape_pod)
-"yaR" = (
-/obj/structure/sign/poster/official/random/directional/south,
-/turf/open/floor/wood/large,
-/area/station/service/library/lounge)
-"yaW" = (
-/obj/structure/sign/poster/official/random/directional/west,
-/obj/effect/turf_decal/trimline/green/filled/end{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/station/commons/vacant_room/commissary)
-"yaX" = (
-/obj/item/toy/beach_ball,
-/obj/structure/railing{
- dir = 10
- },
-/turf/open/misc/beach/sand,
-/area/station/hallway/floor2/fore)
-"yba" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron/white,
-/area/station/medical/treatment_center)
-"ybe" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/white,
-/area/station/command/heads_quarters/cmo)
-"ybi" = (
-/obj/structure/chair/sofa/bench/right{
- dir = 8
- },
-/turf/open/floor/grass,
-/area/station/service/library/garden)
-"ybm" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor2/aft)
-"ybn" = (
-/obj/machinery/pdapainter,
-/turf/open/floor/iron/dark,
-/area/station/command/heads_quarters/hop)
-"ybp" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron/textured_half{
- dir = 1
- },
-/area/station/cargo/sorting)
-"ybB" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 6
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/structure/sign/poster/official/random/directional/east,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/second)
-"ybE" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"ybF" = (
-/obj/structure/railing{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"ybG" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"ybH" = (
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/execution/transfer)
-"ybK" = (
-/obj/structure/curtain,
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment1)
-"ybL" = (
-/turf/open/floor/plating/airless,
-/area/station/maintenance/disposal)
-"ybQ" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor/heavy,
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor3/fore)
-"ybY" = (
-/obj/structure/chair/comfy/brown,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"ycg" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden,
-/turf/open/floor/circuit/telecomms,
-/area/station/science/server)
-"ych" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/moisture_trap,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/aft)
-"ycq" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/chapel{
- dir = 8
- },
-/area/station/service/chapel)
-"ycu" = (
-/obj/machinery/vending/snack/green,
-/obj/effect/turf_decal/siding/wood{
- dir = 1
- },
-/turf/open/floor/iron/cafeteria,
-/area/station/service/theater)
-"ycx" = (
-/obj/structure/table,
-/obj/item/gun/energy/laser/practice{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/gun/energy/laser/carbine/practice,
-/obj/machinery/light/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/security/range)
-"ycy" = (
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"ycM" = (
-/turf/closed/wall/r_wall,
-/area/station/maintenance/floor4/port/aft)
-"ycW" = (
-/obj/structure/table/reinforced,
-/turf/open/floor/iron/kitchen/herringbone,
-/area/station/service/kitchen)
-"ydi" = (
-/obj/machinery/firealarm/directional/south,
-/obj/effect/landmark/navigate_destination/chapel,
-/turf/open/floor/iron/chapel,
-/area/station/service/chapel)
-"ydm" = (
-/turf/open/floor/plating,
-/area/station/construction/mining/aux_base)
-"ydn" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/effect/turf_decal/siding/white,
-/obj/structure/cable,
-/obj/structure/table/reinforced/rglass,
-/obj/item/reagent_containers/cup/beaker/cryoxadone{
- pixel_x = 6;
- pixel_y = 6
- },
-/obj/item/storage/pill_bottle/mannitol,
-/obj/item/reagent_containers/cup/beaker/cryoxadone{
- pixel_x = -6;
- pixel_y = 10
- },
-/obj/item/wrench/medical,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/cryo)
-"ydt" = (
-/turf/closed/wall/r_wall,
-/area/station/cargo/miningoffice)
-"ydG" = (
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/bodycontainer/morgue/beeper_off{
- dir = 1
- },
-/obj/machinery/light/cold/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/morgue)
-"ydL" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/hatch{
- name = "Maintenance Access"
- },
-/obj/machinery/duct,
-/turf/open/floor/plating,
-/area/station/maintenance/floor4/starboard/aft)
-"ydS" = (
-/obj/machinery/light/small/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor2/port)
-"ydX" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/flora/bush/lavendergrass/style_random,
-/turf/open/floor/grass,
-/area/station/security/courtroom)
-"yee" = (
-/obj/structure/chair/office,
-/obj/effect/turf_decal/tile/red/half/contrasted,
-/obj/machinery/light/floor,
-/turf/open/floor/iron/dark,
-/area/station/hallway/secondary/entry)
-"yef" = (
-/obj/structure/railing,
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/plating/elevatorshaft,
-/area/station/cargo/drone_bay)
-"yek" = (
-/obj/effect/turf_decal/trimline/red/filled/line{
- dir = 9
- },
-/obj/effect/turf_decal/trimline/red/corner,
-/turf/open/floor/mineral/plastitanium{
- desc = "cushioned to protect from rough landings";
- name = "boxing ring"
- },
-/area/station/commons/fitness)
-"yeq" = (
-/obj/machinery/status_display/ai/directional/north,
-/turf/open/floor/iron/dark/side{
- dir = 1
- },
-/area/station/hallway/floor4/fore)
-"yew" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/machinery/door/airlock/external,
-/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/starboard)
-"yex" = (
-/obj/structure/closet/firecloset/full,
-/obj/effect/turf_decal/trimline/purple/filled/line{
- dir = 10
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor2/fore)
-"yey" = (
-/obj/structure/window/fulltile,
-/turf/open/floor/plating,
-/area/station/service/hydroponics/garden/abandoned)
-"yeB" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 1
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor2/port)
-"yeR" = (
-/obj/structure/chair/sofa/bench/left,
-/obj/effect/landmark/start/janitor,
-/obj/effect/turf_decal/tile/bar/opposingcorners,
-/turf/open/floor/iron/checker,
-/area/station/service/bar/atrium)
-"yeU" = (
-/obj/structure/grille,
-/turf/open/floor/plating,
-/area/station/security/prison/garden)
-"yfh" = (
-/obj/structure/frame/machine,
-/obj/item/stack/cable_coil/cut,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor3/starboard)
-"yfi" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor1/starboard)
-"yfm" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"yfn" = (
-/obj/structure/table/wood,
-/obj/item/pen,
-/obj/item/paper_bin/carbon,
-/obj/item/pen,
-/obj/item/toy/figure/detective,
-/turf/open/floor/carpet,
-/area/station/security/detectives_office)
-"yfq" = (
-/obj/effect/turf_decal/tile/red/half/contrasted{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/dark,
-/area/station/security/brig)
-"yfr" = (
-/obj/effect/turf_decal/weather/dirt{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 10
- },
-/area/station/security/prison/garden)
-"yft" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/siding/thinplating_new/dark{
- dir = 8
- },
-/obj/item/wrench,
-/turf/open/floor/iron/dark/textured_corner,
-/area/station/engineering/supermatter)
-"yfx" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/iron,
-/area/station/security/courtroom)
-"yfA" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/directional{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/station/security/prison)
-"yfN" = (
-/obj/item/stack/arcadeticket,
-/obj/effect/decal/cleanable/confetti,
-/turf/open/floor/eighties,
-/area/station/commons/fitness/recreation/entertainment)
-"yfT" = (
-/obj/effect/turf_decal/siding/wood,
-/obj/machinery/button/curtain{
- id = "theater";
- pixel_x = -26
- },
-/turf/open/floor/wood,
-/area/station/service/theater)
-"yfU" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/brigdoor/right/directional/north{
- name = "Security Desk";
- req_access = list("security")
- },
-/obj/machinery/door/firedoor,
-/turf/open/floor/plating,
-/area/station/security/checkpoint/second)
-"yfY" = (
-/obj/structure/ladder,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/white/line{
- dir = 1
- },
-/turf/open/floor/pod,
-/area/station/maintenance/floor3/starboard)
-"ygc" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/starboard/fore)
-"ygd" = (
-/obj/effect/spawner/random/structure/crate,
-/obj/effect/turf_decal/bot,
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/engine,
-/area/station/maintenance/floor1/starboard/fore)
-"ygn" = (
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/structure/reagent_dispensers/plumbed{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"ygq" = (
-/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
- dir = 9
- },
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/west,
-/turf/open/floor/iron,
-/area/station/engineering/atmos)
-"ygw" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/first)
-"ygH" = (
-/obj/machinery/door/firedoor/heavy,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/floor,
-/turf/open/floor/iron,
-/area/station/engineering/lobby)
-"ygI" = (
-/obj/machinery/firealarm/directional/west,
-/turf/open/floor/iron/dark,
-/area/station/security/lockers)
-"ygT" = (
-/turf/open/floor/wood,
-/area/station/service/bar/atrium)
-"ygU" = (
-/obj/effect/turf_decal/siding/white{
- dir = 4
- },
-/obj/effect/turf_decal/tile/purple/opposingcorners,
-/obj/effect/turf_decal/siding/white{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/chair/office/light{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/station/science/xenobiology)
-"yhr" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/station/hallway/floor1/aft)
-"yhv" = (
-/obj/effect/turf_decal/siding/wood{
- dir = 8
- },
-/obj/structure/chair/comfy/brown,
-/turf/open/floor/wood/large,
-/area/station/medical/virology/isolation)
-"yhz" = (
-/obj/effect/turf_decal/trimline/green/filled/corner{
- dir = 1
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/green/filled/line,
-/obj/item/radio/intercom/directional/east,
-/turf/open/floor/iron,
-/area/station/service/hydroponics)
-"yhM" = (
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/hallway)
-"yhO" = (
-/obj/machinery/suit_storage_unit/engine,
-/obj/structure/window/spawner/directional/east,
-/obj/machinery/incident_display/delam/directional/south,
-/turf/open/floor/iron/dark/textured_corner{
- dir = 1
- },
-/area/station/engineering/lobby)
-"yhP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/hobo_squat,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor2/port/fore)
-"yhT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle,
-/turf/open/floor/plating,
-/area/station/science/xenobiology)
-"yhX" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark/textured_half{
- dir = 1
- },
-/area/station/hallway/secondary/exit/escape_pod)
-"yhZ" = (
-/turf/open/floor/iron/dark/smooth_large,
-/area/station/service/library/printer)
-"yil" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/portable_atmospherics/scrubber,
-/turf/open/floor/iron,
-/area/station/engineering/atmos/project)
-"yim" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/catwalk_floor/iron,
-/area/station/cargo/miningdock)
-"yiw" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/station/cargo/miningdock)
-"yix" = (
-/obj/effect/turf_decal/trimline/green/filled/line{
- dir = 8
- },
-/turf/open/floor/iron/dark/textured,
-/area/station/hallway/floor2/aft)
-"yiB" = (
-/obj/machinery/status_display/ai/directional/south,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/fore)
-"yiI" = (
-/obj/item/canvas/twentyfour_twentyfour,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"yiK" = (
-/obj/effect/spawner/random/structure/table_fancy,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/sign/painting/library_secure{
- pixel_y = -32
- },
-/turf/open/floor/wood/large,
-/area/station/service/library/artgallery)
-"yiZ" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/smooth,
-/area/station/cargo/warehouse)
-"yjJ" = (
-/obj/effect/turf_decal/siding/wideplating_new/dark/corner,
-/turf/open/floor/engine/co2,
-/area/station/engineering/atmos)
-"yjN" = (
-/obj/structure/closet/crate/trashcart/filled,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/starboard/fore)
-"yjR" = (
-/obj/effect/turf_decal/siding/wideplating_new{
- dir = 8
- },
-/obj/structure/railing/corner{
- dir = 8
- },
-/obj/structure/railing/corner{
- dir = 1
- },
-/turf/open/floor/iron/white/smooth_corner{
- dir = 4
- },
-/area/station/commons/fitness/recreation)
-"yjU" = (
-/turf/open/floor/grass,
-/area/station/maintenance/floor3/starboard)
-"yjX" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/station/maintenance/floor1/port/aft)
-"yka" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/sign/departments/medbay/alt/directional/south,
-/obj/effect/turf_decal/trimline/blue/filled/line,
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor2/aft)
-"ykb" = (
-/turf/open/floor/wood,
-/area/station/commons/dorms/apartment1)
-"yke" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random/trash/graffiti,
-/turf/open/floor/pod/light,
-/area/station/maintenance/floor4/port/fore)
-"ykn" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 1
- },
-/obj/machinery/light/cold/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/psychology)
-"yko" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/spawner/random/maintenance,
-/turf/open/floor/catwalk_floor,
-/area/station/maintenance/floor1/port)
-"ykr" = (
-/obj/effect/spawner/random/structure/table_or_rack,
-/obj/item/reagent_containers/pill/maintenance,
-/turf/open/floor/iron/white,
-/area/station/medical/abandoned)
-"ykt" = (
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/turf/open/floor/iron/dark/side{
- dir = 4
- },
-/area/station/hallway/floor3/aft)
-"ykw" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Public Airlock"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/dark/side,
-/area/station/hallway/floor4/fore)
-"ykC" = (
-/obj/structure/closet/crate/internals,
-/obj/effect/turf_decal/trimline/dark_blue/end{
- dir = 8
- },
-/obj/machinery/light/small/directional/north,
-/turf/open/floor/iron/dark,
-/area/station/commons/storage/tools)
-"ykL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/iron/dark/textured_large,
-/area/station/hallway/secondary/exit/escape_pod)
-"ykP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/station/engineering/atmos/pumproom)
-"ykS" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 1
- },
-/obj/effect/landmark/start/medical_doctor,
-/turf/open/floor/iron/dark/textured,
-/area/station/medical/surgery/aft)
-"ykU" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/station/engineering/lobby)
-"ykV" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/dark,
-/area/station/ai_monitored/turret_protected/aisat/service)
-"ykZ" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/showroomfloor,
-/area/station/commons/dorms/apartment1)
-"ylb" = (
-/turf/open/floor/iron/dark,
-/area/station/hallway/floor1/aft)
-"ylf" = (
-/obj/structure/mirror/directional/north,
-/obj/structure/closet{
- name = "Robe Closet"
- },
-/obj/item/clothing/suit/chaplainsuit/whiterobe,
-/obj/item/clothing/suit/chaplainsuit/whiterobe,
-/obj/item/clothing/suit/chaplainsuit/whiterobe,
-/obj/item/clothing/suit/chaplainsuit/whiterobe,
-/obj/item/clothing/suit/chaplainsuit/whiterobe,
-/obj/item/clothing/suit/chaplainsuit/whiterobe,
-/turf/open/floor/iron,
-/area/station/service/chapel)
-"ylg" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/weather/dirt,
-/turf/open/floor/iron,
-/area/station/service/hydroponics/garden/abandoned)
-"yli" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
-"ylj" = (
-/obj/structure/disposalpipe/trunk/multiz/down{
- dir = 8
- },
-/turf/open/openspace,
-/area/station/maintenance/floor2/port/aft)
-"yll" = (
-/obj/effect/turf_decal/trimline/brown/filled/line,
-/obj/effect/turf_decal/trimline/brown/filled/mid_joiner,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/turf/open/floor/carpet/red,
-/area/station/service/theater)
-"yls" = (
-/obj/effect/turf_decal/trimline/blue/filled/line{
- dir = 4
- },
-/turf/open/floor/iron/white,
-/area/station/medical/storage)
-"ylD" = (
-/obj/effect/spawner/structure/window/hollow/middle{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/floor3/port/aft)
-"ylE" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/iron/textured_large,
-/area/station/hallway/secondary/exit/departure_lounge)
-"ylG" = (
-/obj/machinery/modular_computer/preset/cargochat/engineering,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/siding/thinplating_new,
-/obj/machinery/light/small/directional/east,
-/turf/open/floor/iron/dark/textured,
-/area/station/engineering/lobby)
-"ylK" = (
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=3-4";
- location = "3-3"
- },
-/turf/open/floor/iron,
-/area/station/hallway/floor3/fore)
-"ylR" = (
-/turf/closed/wall,
-/area/station/medical/cryo)
-"ylV" = (
-/obj/effect/turf_decal/siding/wood/corner{
- dir = 8
- },
-/obj/machinery/holopad,
-/turf/open/floor/iron/white/herringbone,
-/area/station/medical/patients_rooms)
-
-(1,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(2,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(3,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(4,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(5,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(6,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(7,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(8,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(9,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(10,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(11,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(12,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(13,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(14,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(15,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(16,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(17,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(18,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(19,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(20,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(21,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(22,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(23,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(24,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(25,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(26,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(27,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(28,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(29,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(30,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(31,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(32,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(33,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(34,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(35,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(36,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(37,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(38,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(39,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(40,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(41,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(42,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(43,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(44,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(45,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(46,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(47,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(48,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(49,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(50,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(51,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-dmx
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(52,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-dcG
-dMr
-dcG
-dMr
-dcG
-owI
-owI
-owI
-dcG
-dMr
-dcG
-dMr
-dcG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(53,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-dcG
-qbt
-dcG
-qbt
-dcG
-owI
-owI
-owI
-dcG
-qbt
-dcG
-qbt
-dcG
-owI
-pRk
-dbc
-pRk
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(54,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-hpI
-imY
-hpI
-imY
-hpI
-imY
-hpI
-xYo
-dcG
-eSx
-dcG
-dRY
-dcG
-dcG
-xYo
-dcG
-dcG
-dRY
-dcG
-eSx
-dcG
-hhx
-pRk
-vjv
-pRk
-hhx
-hhx
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(55,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-imY
-hpI
-imY
-hpI
-imY
-hpI
-xYo
-bUq
-ref
-wZH
-ref
-sAa
-fsv
-hYo
-fsv
-qUo
-ref
-wZH
-ref
-swK
-hhx
-pRk
-aEH
-pRk
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(56,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-xTH
-nqj
-oQy
-qSf
-sGB
-nqj
-nmB
-xYo
-oQO
-xZg
-xZg
-xZg
-mFE
-oMP
-oMP
-oMP
-myT
-oMP
-oMP
-xPr
-eZu
-hhx
-mxx
-stj
-jZk
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-aux
-iST
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(57,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-hpI
-pLY
-mFp
-fGP
-mSM
-nhf
-nqj
-oWe
-rpr
-tCS
-nqj
-taW
-xYo
-bIG
-ycy
-vQx
-siu
-ncu
-epv
-bkz
-cqu
-aYa
-pvw
-eSX
-ylE
-qiy
-hhx
-rKc
-bfX
-tqx
-svs
-lJn
-wxH
-hpn
-len
-hhx
-kop
-kop
-kop
-kop
-kop
-kop
-aux
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(58,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-imY
-imY
-lBR
-hpI
-jZE
-jSj
-mdB
-qmg
-mGq
-mMr
-mUe
-nhs
-nun
-oWM
-nqj
-nqj
-nun
-taW
-xYo
-oGQ
-oVB
-cSY
-nlw
-ncu
-qVl
-gXG
-mmR
-tlr
-hII
-gls
-dgb
-qCx
-mmv
-qPQ
-uLR
-nDg
-xJz
-lQm
-lQm
-aRS
-hFa
-pRk
-kop
-kop
-kop
-kop
-kop
-kop
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(59,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-aaV
-hpI
-ceL
-uuO
-mhQ
-sMk
-mGP
-mhQ
-naz
-nhE
-nwa
-nhE
-nhE
-nhE
-yjR
-gJI
-xYo
-bTq
-ycy
-byi
-nlw
-cCu
-lUu
-ltR
-lUu
-vhj
-hII
-byi
-ycy
-faw
-hhx
-glp
-vHN
-kWd
-uMk
-apk
-mly
-bje
-fiO
-pRk
-pRk
-kop
-kop
-kop
-kop
-kop
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(60,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-arE
-aVk
-kws
-kDK
-mzB
-mme
-mme
-mme
-mme
-nhL
-nhL
-nhL
-nhL
-nhL
-ciK
-tzF
-xYo
-psK
-ycy
-oAd
-nlw
-wwk
-gsN
-uZf
-qDt
-npR
-hII
-gls
-ycy
-nBW
-hhx
-hhx
-hhx
-hhx
-hhx
-hhx
-vBS
-onw
-rzK
-eQG
-uCl
-ujv
-kop
-kop
-kop
-kop
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(61,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-jwS
-hpI
-kUB
-lRb
-mdB
-mdB
-nrx
-bag
-mdB
-mMr
-mdB
-pgo
-rqM
-wyp
-lgj
-mdB
-xYo
-viS
-vnE
-sxw
-xWx
-mit
-epv
-bkz
-cqu
-npR
-nph
-ocn
-ycy
-nBW
-wBR
-xEw
-jzc
-ePV
-xCS
-uRE
-mFP
-isq
-rzK
-pRk
-pRk
-kop
-kop
-kop
-kop
-kop
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(62,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-imY
-imY
-aSI
-hpI
-vTL
-vTL
-vTL
-wff
-vTL
-vTL
-wff
-vTL
-vTL
-vTL
-hpI
-hpI
-mFD
-hpI
-xYo
-ciq
-xFf
-red
-pqz
-mnm
-uuG
-omj
-omj
-wtr
-rgR
-omj
-omj
-fbC
-wBR
-euS
-jvY
-jvY
-rqx
-wBR
-xEY
-xlD
-rzK
-pRk
-kop
-kop
-kop
-kop
-kop
-kop
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(63,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hpI
-hpI
-hpI
-hpI
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-hpI
-uCb
-aKc
-aLz
-xYo
-xYo
-aDl
-nYP
-daf
-lDs
-sHP
-sHP
-mDZ
-xYo
-inq
-mha
-cIo
-ehR
-wBR
-dbe
-gbU
-gLK
-ciH
-wBR
-dzs
-ast
-isK
-hhx
-kop
-kop
-kop
-kop
-kop
-kop
-aux
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(64,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-aUT
-oic
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-imY
-ubu
-fRA
-aXN
-xYo
-dyQ
-cbG
-pPJ
-wIC
-vsj
-tAz
-nQT
-lPR
-iUP
-inq
-qsF
-wUH
-hyN
-wBR
-pTR
-oZd
-wBR
-wBR
-wBR
-amK
-amK
-kWr
-wBR
-wBR
-wBR
-wBR
-wBR
-hJy
-aux
-iST
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(65,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-twL
-oic
-xLb
-xLb
-mZM
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-imY
-wKd
-fRA
-jry
-xYo
-qWR
-cVD
-nzk
-cVD
-nHT
-fRo
-gdr
-jLI
-keF
-inq
-cFF
-pqP
-oRw
-wBR
-luG
-qZF
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-wBR
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(66,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-nnV
-oic
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-imY
-wKd
-fRA
-oJl
-xYo
-bor
-dby
-bJo
-wbg
-mxT
-feR
-dby
-dby
-eYa
-inq
-tJj
-reI
-vrk
-wBR
-bdN
-wRn
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-vuq
-sPJ
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(67,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-nnV
-oic
-jXX
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-ppQ
-imY
-wKd
-fRA
-twp
-xYo
-xYo
-xYo
-xcg
-elI
-qNx
-lme
-qOF
-xYo
-xYo
-inq
-inq
-inq
-inq
-wBR
-wBR
-wBR
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-wBR
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(68,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-oic
-qFv
-oic
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-imY
-snI
-hDy
-lEy
-hpI
-voj
-axe
-qxz
-fvr
-sZI
-nVw
-vZC
-tKe
-voj
-sPJ
-xtY
-oWA
-xtY
-xtY
-qxr
-sWM
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-wBR
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(69,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-oic
-wPP
-pzU
-oic
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-mZM
-xLb
-xLb
-imY
-ssY
-fRA
-pQH
-hpI
-fGX
-bXv
-vLP
-grg
-lnG
-grg
-grg
-qaj
-gVw
-sPJ
-xtY
-xtY
-iDP
-boY
-eGQ
-hOV
-wBR
-ydm
-ydm
-ydm
-ydm
-icq
-ydm
-ydm
-ydm
-cUt
-wBR
-hJy
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(70,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-oic
-oic
-wrq
-cus
-oic
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-hpI
-xgV
-rwM
-hbs
-hpI
-dRs
-ohO
-nQZ
-vWa
-fRJ
-mPY
-nJV
-aEj
-ejE
-hJy
-hJy
-sPJ
-hJy
-hJy
-hJy
-hOV
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-wBR
-bgH
-hJy
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(71,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-oic
-tPO
-oic
-ebO
-vDf
-oic
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-xLb
-oic
-kyR
-mFD
-kyR
-kyR
-gVw
-rpj
-nWO
-fXD
-iyK
-iIp
-aYd
-nBn
-rUH
-rUH
-uGS
-rNO
-tSK
-hJy
-hOV
-hOV
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-wBR
-hJy
-hJy
-hJy
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(72,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-oic
-wWE
-uaJ
-oic
-oic
-mZj
-oic
-oic
-oic
-oic
-aDk
-oic
-oic
-mvK
-oic
-oic
-oic
-oic
-xyO
-ayv
-oiF
-umg
-uFh
-qwA
-aQR
-nFK
-nFK
-nFK
-tJi
-mMt
-vZC
-sZI
-vZC
-oNP
-cYZ
-hJy
-ofp
-hJy
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-wBR
-gnL
-oNI
-ebm
-kAY
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(73,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-dSI
-dSI
-dSI
-oic
-nnV
-ygc
-oic
-oPH
-xob
-wnP
-nnV
-oic
-rVo
-ala
-ala
-ala
-gCH
-dtU
-pRl
-pJO
-fnT
-oQL
-vsP
-iVL
-oKP
-eWV
-arG
-vpb
-udq
-pBJ
-grg
-lnG
-obQ
-xVC
-mIi
-hJy
-hOV
-fTb
-wBR
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-ydm
-wBR
-giC
-ciW
-hJy
-kAY
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(74,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-qTp
-qTp
-qTp
-oic
-iTk
-vga
-eFe
-rXL
-nDK
-dwG
-jek
-oic
-nkp
-qRF
-tNS
-wRT
-jxa
-oic
-rLs
-aUJ
-vWF
-pxu
-tTy
-grg
-mrU
-cim
-vpb
-fGc
-pPe
-uPT
-tTy
-hyD
-vWF
-crO
-rLs
-hJy
-aLP
-hJy
-wBR
-wBR
-wBR
-wBR
-wBR
-wBR
-wBR
-wBR
-dbH
-wBR
-wBR
-bqu
-xEn
-hJy
-kAY
-sPJ
-sPJ
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(75,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-rRf
-rRf
-rRf
-lfG
-rRf
-vga
-oic
-uKE
-njm
-iQY
-xGU
-oic
-nkp
-ikg
-tNS
-kGL
-jxa
-oic
-kyR
-kyR
-qRi
-bMo
-kyR
-kyR
-kyR
-kyR
-kyR
-kyR
-kyR
-kyR
-kyR
-lKy
-qRi
-kyR
-hJy
-hJy
-sui
-sui
-olt
-hJy
-dEa
-qez
-hJy
-qez
-qez
-qez
-cgi
-qez
-hJy
-hJy
-hJy
-hJy
-kAY
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(76,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-ppo
-kKd
-vga
-oic
-tVq
-osq
-oic
-twL
-uzN
-aaC
-twL
-oic
-djX
-cWX
-tNS
-ybF
-hxN
-rRf
-kyR
-lWA
-vZC
-lVW
-ieI
-kyR
-uKt
-mXx
-qCp
-mXx
-ssm
-kyR
-mMD
-sZI
-vAy
-inR
-hJy
-ciW
-xtY
-xtY
-xYb
-hJy
-hJy
-qez
-hJy
-stV
-hJy
-mNi
-cgi
-cgi
-omF
-qSW
-omF
-omF
-kAY
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(77,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-tAL
-kBa
-vga
-rtD
-jhF
-hYm
-oic
-ygd
-skW
-kXW
-eey
-oic
-oic
-dFZ
-tNS
-uNL
-iKz
-rhZ
-kyR
-blK
-hoF
-aJT
-eai
-eee
-bFD
-mXx
-uOs
-mXx
-tNK
-ogh
-ebY
-lnG
-bBx
-eoQ
-hJy
-tns
-ciW
-oeu
-uID
-eiM
-srO
-eiM
-hJy
-wiJ
-xoN
-hJy
-hJy
-ijs
-kAY
-hJy
-hJy
-uIm
-hJy
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(78,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-vga
-hNf
-pYS
-pnF
-lpV
-vHI
-oic
-drp
-laS
-btP
-bxf
-oic
-rVo
-wsw
-tNS
-thq
-mVp
-vga
-kyR
-sVQ
-vWF
-pxu
-fhr
-kyR
-hPA
-mXx
-mXx
-mXx
-iHk
-kyR
-wjt
-hyD
-rbx
-uyK
-hJy
-vLX
-tmW
-xtY
-lPb
-hJy
-hJy
-eiM
-hJy
-aJk
-rBW
-gxW
-hJy
-hJy
-xPL
-hJy
-aGJ
-dRb
-tWn
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(79,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-vga
-oic
-oic
-oic
-mID
-exL
-oic
-oic
-oic
-oic
-oic
-oic
-nkp
-rTk
-tNS
-jrZ
-aWe
-oic
-kyR
-kyR
-qRi
-bMo
-kyR
-kyR
-kyR
-cDj
-eZA
-iEP
-kyR
-kyR
-kyR
-lKy
-qRi
-kyR
-hJy
-hJy
-vZl
-pxY
-agt
-hJy
-jMI
-eiM
-hJy
-hJy
-hJy
-hJy
-hJy
-dXr
-izz
-hJy
-qZP
-hJq
-jxN
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(80,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-vga
-vga
-aHA
-vga
-rRf
-rRf
-rRf
-rRf
-rRf
-lfG
-rRf
-rRf
-nkp
-ikg
-wZD
-ikg
-aWe
-oic
-cdq
-bjI
-btV
-pxX
-fNy
-lfj
-kyR
-sIB
-sIB
-sIB
-kyR
-lNQ
-oKK
-sZI
-pSE
-kLH
-vIx
-hJy
-wwz
-hJy
-hJy
-hJy
-hJy
-iGt
-dYj
-izz
-izz
-izz
-izz
-izz
-izz
-hJy
-wnI
-mkk
-gHp
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(81,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-eea
-hdj
-nir
-loc
-hIk
-oic
-oic
-oic
-oic
-oic
-sBT
-qLI
-djX
-lIe
-lIe
-joP
-tQJ
-oic
-buP
-gVw
-ohO
-aJT
-grg
-grg
-fey
-eZA
-eZA
-eZA
-vON
-grg
-grg
-lnG
-uYI
-kLH
-cmj
-hJy
-cay
-cWw
-qez
-mIh
-hJy
-iGt
-sPJ
-cgi
-hJy
-sPJ
-hJy
-cgi
-hJy
-hJy
-hJy
-mRI
-hJy
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(82,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-nBw
-knf
-aua
-nBw
-iYE
-oic
-dLj
-rwY
-oic
-nMK
-sBT
-oic
-hpj
-gOf
-iQa
-mRo
-iQa
-oic
-dSe
-gVw
-rEm
-aJT
-iyS
-iyS
-riy
-fna
-poR
-vxY
-rlf
-lnG
-lnG
-lnG
-sXE
-kLH
-vIx
-hJy
-rXp
-oZW
-xMd
-ifx
-hJy
-htg
-hJy
-cgi
-hvF
-cgi
-cgi
-cgi
-hJy
-xtY
-fDq
-foK
-jAO
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(83,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-gwl
-beG
-kBs
-gTF
-cEu
-oic
-uNF
-uaJ
-oic
-sBT
-sBT
-oic
-oic
-oic
-fHM
-dIz
-nJY
-oic
-rLs
-gVw
-rpj
-vLP
-grg
-grg
-qaS
-jXY
-gqU
-iIV
-fzL
-qww
-jax
-hqv
-ejS
-kLH
-cmj
-hJy
-iSs
-kDQ
-sDT
-vZw
-hJy
-dIO
-hJy
-hJy
-hJy
-hJy
-mAZ
-bvU
-hJy
-upS
-plI
-mcu
-iuP
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(84,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-oic
-oic
-oic
-oic
-oic
-oic
-hhw
-oic
-rJR
-sBT
-oic
-oic
-fJz
-oic
-oic
-hmn
-oic
-oic
-kyR
-iDZ
-geY
-lkh
-dQg
-hgE
-gKG
-btV
-kyv
-jpM
-hJy
-hJy
-dxu
-hJy
-hJy
-hJy
-hJy
-hJy
-dXh
-ppr
-oIr
-luk
-hJy
-eaI
-xtY
-oWA
-xtY
-hJy
-hJy
-hJy
-hJy
-xtY
-jJB
-svR
-gxb
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(85,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-nUj
-uNF
-vnp
-jdc
-jdc
-jdc
-jdc
-jdc
-jdc
-sBT
-oic
-gdt
-uNF
-uaJ
-oic
-jrx
-ncc
-ncc
-rze
-rze
-rhx
-rhx
-xBe
-rze
-gVw
-rpj
-gqU
-uOT
-hJy
-fTb
-jWi
-dnx
-nRP
-sIv
-plC
-hJy
-qXc
-sSK
-hJy
-hrB
-hJy
-eaI
-xtY
-xtY
-xtY
-ePp
-eiM
-eiM
-usj
-dac
-fQm
-fQm
-qez
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(86,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-wIX
-laR
-oic
-jdc
-oic
-oic
-oic
-oic
-oic
-sBT
-vnp
-tag
-uaJ
-rdy
-oic
-jrx
-ncc
-xPB
-ncX
-xuX
-ami
-hem
-ubZ
-xBe
-gVw
-rpj
-gqU
-xWO
-hJy
-fZZ
-qAK
-wTi
-qAK
-hJy
-qAK
-hJy
-hJy
-hJy
-hJy
-iXn
-hJy
-eaI
-xtY
-xtY
-xtY
-xLZ
-lcg
-glI
-hJy
-hJy
-jJV
-rTz
-fmE
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(87,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-oic
-oic
-eUT
-osC
-stZ
-fpW
-oic
-ekj
-ekj
-ekj
-oic
-sBT
-oic
-ccA
-bCW
-oic
-oic
-jrx
-ncc
-pbF
-iir
-pxk
-iir
-fbO
-vyZ
-rhx
-gVw
-rpj
-gqU
-asF
-hJy
-hwt
-fqx
-qIM
-ffD
-hJy
-lMG
-qIM
-qIM
-qIM
-qIM
-mAr
-hJy
-eaI
-xtY
-xtY
-xtY
-xLZ
-mAD
-ajB
-jJV
-hJy
-hJy
-hJy
-hJy
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(88,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-tXe
-tXe
-bCR
-tXe
-tXe
-rxS
-nXs
-oic
-oic
-oic
-oic
-bff
-oic
-oic
-oic
-oic
-vOW
-jrx
-ncc
-mdJ
-iir
-mJH
-jmB
-vSg
-gmW
-jVS
-rUH
-hVB
-gqU
-kAG
-hJy
-huk
-hJy
-hJy
-hJy
-hJy
-hJy
-hJy
-hJy
-hJy
-eqK
-iGt
-udE
-fAU
-fqg
-fqg
-fqg
-nzm
-iGt
-iGt
-iGt
-gRj
-iGt
-hTJ
-rBB
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(89,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-tXe
-tXe
-dPx
-pUY
-tXe
-tXe
-nfI
-tXe
-gUS
-nOj
-dzo
-bUC
-yiZ
-unC
-wMQ
-ncc
-nYh
-jrx
-ncc
-xRU
-iir
-nqJ
-oOc
-bCz
-prw
-rze
-rLs
-rpj
-gqU
-vsv
-hJy
-hwt
-hwt
-hwt
-hJy
-icp
-xFH
-inM
-pIH
-eTr
-hJy
-vwB
-hJy
-mAZ
-fZZ
-hJy
-sYU
-dmG
-hJy
-ato
-gOz
-hJy
-hut
-hJy
-gBK
-hJy
-hJy
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(90,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-tXe
-tXe
-iCP
-nnu
-hnb
-jdQ
-qxN
-tXe
-eps
-yiZ
-yiZ
-bUC
-mwZ
-rCK
-lUY
-ncc
-itC
-jrx
-ncc
-rze
-xBe
-lvJ
-xBe
-rze
-nsp
-rze
-kyR
-jZA
-gqU
-gjy
-hJy
-hFW
-nej
-hwt
-hJy
-gQU
-cnj
-pka
-cnj
-vzN
-hJy
-hJy
-hJy
-sPJ
-sPJ
-hJy
-sPJ
-sPJ
-hJy
-sPJ
-sPJ
-hJy
-hJy
-hJy
-hJy
-hJy
-hJy
-aux
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(91,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-tXe
-tXe
-cOT
-sxb
-luo
-hTP
-lNW
-qZU
-dQo
-qWJ
-qWJ
-imO
-vfG
-vNZ
-eYY
-ncc
-nYh
-jrx
-cpz
-rPi
-mQi
-lvY
-hNg
-dny
-txP
-nqX
-rPi
-rpj
-gqU
-lXX
-hJy
-bvU
-hwt
-hwt
-hJy
-aLA
-cpe
-uTI
-cnj
-fjD
-brj
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-qlt
-lCo
-tWX
-cHX
-iST
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(92,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-tXe
-tXe
-pjw
-scn
-vzo
-dqM
-bED
-qZU
-rYA
-eEB
-lUY
-bUC
-rYA
-yiZ
-mMH
-ncc
-utu
-jrx
-pjD
-rPi
-tpz
-lwl
-oqq
-mMd
-nsB
-nRx
-fgN
-ohO
-gqU
-kRg
-hJy
-hJy
-suR
-hJy
-hJy
-cUu
-gUp
-apy
-eqa
-flk
-brj
-qsh
-qsh
-qsh
-qsh
-qsh
-qsh
-qsh
-qsh
-qsh
-qsh
-qsh
-ePY
-qsh
-qsh
-lCo
-tWX
-owI
-cHX
-aux
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(93,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-tXe
-tXe
-tXe
-tXe
-tXe
-mps
-qZU
-tXe
-srf
-fve
-aSL
-iCn
-ooP
-jUP
-jUP
-ncc
-ncc
-oIN
-ncc
-rPi
-rPi
-nUM
-nAT
-mMd
-kFP
-vbD
-rPi
-rpj
-gqU
-imJ
-iWK
-brj
-fJT
-uPU
-bDm
-pPh
-hse
-pMu
-xtd
-nIr
-bsu
-jxG
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-ejb
-lCo
-tWX
-owI
-owI
-aux
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(94,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-uYl
-pFb
-gHw
-yef
-oyb
-kHQ
-hIj
-aQK
-vtj
-tLt
-iHZ
-lSJ
-wqF
-jUP
-gVm
-kYR
-rIy
-jzP
-sAI
-bXB
-npD
-nUM
-kFP
-mMd
-dVQ
-jPv
-fgN
-rpj
-gqU
-imJ
-kHs
-brj
-juE
-bun
-mzb
-gMZ
-jNL
-cTk
-myr
-dmU
-bsu
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-sdQ
-lCo
-tWX
-owI
-owI
-aux
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(95,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-uYl
-pFb
-lyB
-yef
-wZu
-vTt
-hai
-aQK
-uhw
-rhs
-eaW
-lSJ
-mxC
-jUP
-etb
-myW
-kga
-uTH
-bRM
-bRM
-krk
-lxU
-nsB
-mMd
-kFP
-ehg
-rPi
-wOn
-gqU
-imJ
-gVw
-brj
-cCd
-lIm
-vcT
-aiF
-dvF
-rwn
-pkR
-xhA
-brj
-tEI
-tEI
-tEI
-tEI
-tEI
-tEI
-tEI
-tEI
-tEI
-tEI
-tEI
-rWV
-tEI
-tEI
-lCo
-tWX
-owI
-cHX
-aux
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(96,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-uYl
-pFb
-gHw
-hDa
-fyg
-xxQ
-sbB
-aQK
-jUP
-prt
-jUP
-bkx
-gcj
-jUP
-gWv
-new
-jbl
-nzL
-xnC
-oUH
-npD
-lyw
-rNG
-dny
-gPr
-lju
-fgN
-rpj
-gqU
-fhZ
-jQS
-brj
-btN
-bvG
-brj
-bWH
-mor
-rcT
-jAB
-fYi
-brj
-uzn
-uzn
-xkq
-xhg
-xhg
-xhg
-xhg
-qAk
-uzn
-uzn
-uzn
-uzn
-uzn
-uzn
-lCo
-tWX
-cHX
-iST
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(97,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-aQK
-aQK
-aQK
-gfn
-aQK
-fuJ
-aQK
-aQK
-cfO
-uwm
-hMr
-mnk
-mnR
-aHb
-myW
-mnR
-jyC
-jzd
-cUL
-cUL
-cUL
-rPi
-rPi
-bmx
-nvE
-nXl
-rPi
-rpj
-gqU
-imJ
-gVw
-brj
-hFi
-aln
-brj
-brj
-brj
-lss
-bsu
-gmF
-brj
-brj
-brj
-fnO
-jlx
-jDL
-oGc
-jlx
-rXC
-brj
-xgH
-xgH
-xgH
-xgH
-bUP
-xgH
-xgH
-aux
-cHX
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(98,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-cUL
-cUL
-oKT
-xsL
-vDw
-dty
-kcT
-eOz
-eOz
-onX
-jlI
-myW
-myW
-myW
-myW
-dkf
-bvf
-pxh
-cUL
-ovG
-rMx
-oqW
-rPi
-rPi
-fgN
-rPi
-rPi
-kEZ
-gqU
-imJ
-qvy
-brj
-qGk
-srC
-fpD
-oar
-uJE
-oYv
-oYA
-xsC
-oTo
-bsu
-qPM
-ixQ
-ixQ
-xvA
-eGr
-ixQ
-ixQ
-fMY
-xgH
-eUW
-hAT
-fRH
-iqx
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(99,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-uEL
-qnq
-ozs
-qnq
-qnq
-qnq
-ozs
-kOQ
-vzv
-xNx
-ugU
-xNx
-bwx
-mnR
-bvf
-pxh
-cUL
-pVe
-xEp
-nrt
-sNr
-sNr
-sNr
-sUC
-ncc
-jZA
-gqU
-imJ
-gVw
-bsu
-qGk
-srC
-cez
-clb
-maS
-jbu
-usB
-rtV
-jcN
-erR
-edS
-edS
-edS
-edS
-edS
-jGI
-aPM
-gdA
-xgH
-wVn
-wVn
-igd
-igd
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(100,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-fgr
-cJt
-jfa
-lqD
-cMA
-mnR
-bvf
-pxh
-jzH
-kAu
-asl
-iNK
-aqP
-ybp
-tSs
-epb
-apC
-rpj
-gqU
-imJ
-gVw
-bsu
-qGk
-lMj
-brj
-brj
-brj
-brj
-hWD
-rtV
-eAr
-dMA
-dWi
-dUW
-dUW
-mrM
-uDD
-uDD
-uDD
-gsP
-xgH
-qmj
-xgH
-xgH
-wcR
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(101,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-fgr
-wNx
-cUL
-cUL
-cMA
-mnR
-bvf
-pxh
-tAN
-kxf
-xtp
-aKQ
-pWF
-qvM
-aKQ
-aaP
-qEi
-rpj
-gqU
-imJ
-gVw
-bsu
-qGk
-xqV
-brj
-fqJ
-dDz
-bsu
-sgL
-vWG
-rMD
-bsu
-dAB
-dXY
-emg
-eqN
-eHW
-fVq
-emg
-eSc
-xgH
-wVn
-vkO
-xgH
-xgH
-xgH
-xgH
-aux
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(102,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-qkr
-cJt
-kdy
-gXl
-cMA
-mnR
-acv
-hNz
-wEN
-nlu
-aAZ
-iRK
-mhl
-mhq
-aKQ
-aaP
-lTV
-oqa
-gqU
-imJ
-jFZ
-brj
-oXp
-xVX
-tML
-wQe
-yee
-sqy
-jKO
-sNN
-acj
-brj
-brj
-xtP
-xtP
-brj
-brj
-brj
-brj
-brj
-xgH
-wVn
-eVk
-ofn
-kdj
-hqh
-cVG
-iST
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(103,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-sWf
-non
-anU
-non
-hNB
-myW
-bRM
-pxh
-rve
-cow
-xtp
-lAc
-qaE
-mRm
-vEx
-xPs
-dxz
-rpj
-gqU
-wxE
-nTC
-brj
-wZU
-gyu
-brj
-vTN
-ciQ
-bsu
-qvw
-rtV
-rMD
-duu
-dDs
-edm
-emU
-euA
-xgH
-nGx
-wVn
-wVn
-wVn
-wVn
-xgH
-xgH
-xgH
-xgH
-xgH
-aux
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(104,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-gjR
-izq
-iJG
-izq
-abU
-hQg
-wOg
-jFN
-wFB
-hWN
-egG
-sjD
-mir
-lCZ
-kmQ
-mTU
-apC
-rpj
-gqU
-cBk
-rUH
-eHX
-qGk
-oPg
-brj
-brj
-brj
-brj
-gSk
-rtV
-nrB
-jAF
-nVm
-vdb
-cMi
-vIb
-xgH
-apX
-rLU
-xgH
-xcA
-xcA
-fmb
-fmb
-fmb
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(105,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-bZr
-uIh
-tHL
-nAm
-hLP
-nAm
-tHL
-tHL
-cUL
-ggO
-ulv
-ncc
-jhV
-pAb
-wCl
-din
-ncc
-kzU
-gqU
-wpP
-iXA
-ras
-wLg
-rnd
-llC
-clb
-cuS
-hnX
-jbu
-yag
-mOt
-xAH
-pNK
-kpc
-cxx
-bTW
-xgH
-cfC
-ksu
-xgH
-fmb
-uZk
-uZk
-uZk
-uZk
-uZk
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(106,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-sfg
-oCK
-wcX
-hBw
-bcZ
-hBw
-hLP
-hBw
-tHL
-kOS
-hDf
-wha
-tHL
-ncc
-jPI
-ncc
-wwN
-vMk
-ncc
-rpj
-gqU
-tqE
-tfo
-brj
-hVZ
-rxq
-srl
-owS
-tCq
-bKp
-xiC
-rbs
-jiE
-duu
-dFj
-ehQ
-sZf
-ezw
-xgH
-oJO
-dJO
-xgH
-fmb
-uZk
-ebN
-gQI
-xxh
-uZk
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(107,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-bZr
-nAm
-nTZ
-iyU
-aat
-nPa
-ssa
-uxR
-htW
-htW
-tHL
-xHA
-kWJ
-xHA
-wdq
-xHA
-xHA
-uKC
-gqU
-pBQ
-wdL
-wdL
-wdL
-wdL
-wdL
-wdL
-wdL
-wdL
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-apX
-uFQ
-xgH
-fmb
-uZk
-xYE
-haj
-gyI
-uZk
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(108,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-bZr
-hBw
-tHL
-aJE
-hLP
-hBw
-tHL
-oIq
-mxi
-vgZ
-rmz
-xHA
-lrR
-tNO
-gNi
-pye
-xHA
-bzw
-gqU
-imJ
-cQm
-nCi
-svW
-luJ
-faA
-pBg
-lem
-wdL
-nik
-nik
-nik
-fBJ
-xgH
-hnz
-dyS
-oMV
-wVn
-wVn
-wVn
-xgH
-fmb
-uZk
-kXo
-dNA
-kxK
-uZk
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(109,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-mjQ
-rbT
-ijL
-rbT
-hLP
-ydt
-mVL
-kbM
-ydt
-ydt
-scv
-xHA
-uWC
-oMX
-mYB
-pdU
-xHA
-jZA
-gqU
-kro
-qvl
-kbp
-tpD
-nMu
-qot
-pwY
-bnN
-wdL
-xfT
-xfT
-xfT
-xSl
-dyS
-dyS
-dyS
-xgH
-wVn
-xgH
-xgH
-xgH
-xgH
-uZk
-uZk
-pEA
-uZk
-uZk
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(110,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-gHs
-dOs
-dOs
-dOs
-dOs
-dOs
-dOs
-oCK
-bZr
-hBw
-tHL
-hBw
-jwC
-ydt
-oYn
-kVu
-oLv
-uBG
-scv
-tZq
-gdZ
-oMX
-cqT
-jNb
-xHA
-tOo
-gqU
-imJ
-bwS
-uOx
-rPG
-jxf
-qIH
-pwY
-xjS
-wdL
-ema
-ema
-ema
-asU
-xgH
-pLe
-dyS
-xgH
-wVn
-xgH
-fJA
-apw
-jjC
-nAV
-icE
-oAH
-mty
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(111,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rbQ
-uvv
-jHH
-qgr
-gCE
-qgr
-qgr
-qgr
-gCE
-gcE
-fXm
-mqt
-uKO
-mqt
-aat
-ydt
-oYn
-oZV
-aOD
-mUh
-scv
-eqs
-wXU
-hUN
-mYB
-tFR
-xHA
-rpj
-gqU
-imJ
-wdL
-wdL
-mTK
-mJr
-ygw
-cGn
-wBG
-wdL
-dyS
-wDr
-hjs
-vwn
-xgH
-hjs
-uJo
-xgH
-wVn
-xgH
-fJA
-iwJ
-neW
-flf
-aYv
-eGp
-oIE
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(112,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hKN
-hKN
-hKN
-hKN
-hKN
-xbV
-xbV
-xbV
-xbV
-xbV
-iEl
-kwK
-tHL
-aJE
-hLP
-ydt
-oYn
-ktd
-oSj
-scv
-scv
-xHA
-hbX
-nxy
-mYB
-jNb
-xHA
-rpj
-gqU
-uOT
-wdL
-jam
-uyH
-bSU
-xLy
-epz
-vcy
-wdL
-dyS
-xgH
-xgH
-xgH
-xgH
-dyS
-dyS
-xgH
-wVn
-xgH
-cmG
-xtX
-cmG
-cmG
-wwU
-bgg
-cmG
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(113,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-hKN
-lWH
-oLL
-oqc
-hKN
-hKN
-mar
-mar
-mar
-hKN
-hKN
-rbT
-tHL
-rbT
-hLP
-ydt
-iBB
-dUQ
-oBB
-sxA
-esz
-eTR
-ghv
-xHA
-bhW
-xHA
-xHA
-lKz
-vkr
-irK
-wdL
-wdL
-wdL
-tbb
-wdL
-wdL
-wdL
-wdL
-dyS
-dyS
-dyS
-dyS
-dyS
-dyS
-xgH
-xgH
-wVn
-xVo
-krf
-vUd
-cmG
-frV
-huh
-auc
-lbT
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(114,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hKN
-lWH
-sIN
-lWH
-lWH
-wFy
-bFd
-tJG
-irS
-wPK
-hKN
-wIr
-ugp
-hLP
-hLP
-ydt
-ydt
-jEc
-ydt
-scv
-ybL
-xHA
-gCv
-hiD
-qtW
-xHA
-vOK
-vOK
-dtY
-pRG
-vOK
-xgH
-mNr
-qsW
-jwD
-jwD
-jwD
-jwD
-jwD
-uyg
-ljx
-dxS
-xgH
-xgH
-xgH
-sYP
-wVn
-xgH
-ykn
-fae
-cmG
-jHW
-jLr
-ipa
-iOL
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(115,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hKN
-lWH
-qlb
-qyP
-lWH
-gNU
-pZU
-vsg
-cmT
-sMS
-mar
-xeu
-ann
-dpH
-dpH
-dpH
-ehG
-jEn
-lgZ
-scv
-scv
-xHA
-ucY
-clv
-xHA
-xHA
-kyR
-oOK
-dJV
-gpZ
-kyR
-kyR
-kyR
-kyR
-kyR
-kyR
-kyR
-xgH
-xgH
-onC
-vIn
-nEb
-dyS
-dyS
-dyS
-wVn
-xgH
-xgH
-ctT
-wnN
-cmG
-kkQ
-hST
-niD
-vyn
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(116,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-uCo
-khl
-nqL
-mEP
-izl
-umw
-umw
-aGz
-jdT
-tGE
-mar
-jmm
-mCp
-dpH
-has
-kLn
-ehG
-llR
-pEv
-iKb
-dpH
-sHN
-fhX
-nIO
-kyR
-vOK
-mgl
-grg
-jnp
-vLP
-oNK
-iQC
-rpj
-mXx
-mXx
-mXx
-kyR
-rTt
-xgH
-xgH
-vIn
-xgH
-xgH
-xgH
-xgH
-nrh
-yko
-xgH
-cmG
-cmG
-cmG
-cmG
-mQW
-nze
-jGn
-ssr
-tbw
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(117,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hKN
-lWH
-aaI
-fFI
-lWH
-tud
-kHP
-skM
-jdT
-mfR
-xGR
-tuM
-ujC
-dpH
-anf
-hXa
-vmc
-qly
-pEv
-hWF
-dpH
-nRF
-mnQ
-nIO
-obV
-pyL
-qIz
-jYY
-ptd
-cbT
-qgU
-okN
-qgU
-mXx
-nRe
-mXx
-kyR
-eVk
-twx
-twx
-vIn
-xgH
-vfY
-qRz
-xgH
-xgH
-wVn
-xgH
-kbO
-nWu
-avt
-hjK
-hST
-nze
-soI
-ssr
-tbw
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(118,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-xIx
-eAY
-ehG
-sYa
-pGW
-dts
-dpH
-ihQ
-fhX
-rMq
-kyR
-bSE
-hVG
-bBx
-jnp
-vLP
-tmH
-iQC
-rpj
-mXx
-iZD
-mXx
-kyR
-tCB
-twx
-twx
-vIn
-xgH
-bvi
-eVk
-bGV
-xgH
-wVn
-xgH
-uXf
-ofy
-gPt
-xXi
-lMC
-ipa
-oPC
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(119,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-akk
-aug
-brN
-mdd
-uPM
-sJt
-nsi
-oQa
-uPM
-tIK
-nsi
-uPM
-fqP
-sLF
-ehG
-ehG
-ehG
-ehG
-eXR
-hUk
-weY
-dpH
-dpH
-dpH
-dpH
-dpH
-dpH
-kyR
-iHw
-dJV
-nwi
-kyR
-kyR
-trF
-kyR
-kyR
-kyR
-kyR
-eVk
-twx
-twx
-vIn
-uls
-twx
-eky
-xgH
-xgH
-wVn
-xgH
-ttF
-qmN
-lJN
-cmG
-sWt
-eGp
-wNd
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(120,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-dpH
-ehG
-vxU
-tKU
-tKU
-lBD
-tKU
-tKU
-tKU
-lBD
-tKU
-tKU
-tXJ
-ehG
-wMw
-kLn
-ehG
-llR
-pGW
-oqO
-yiw
-lIU
-iYb
-flN
-eNN
-dpH
-vOK
-vOK
-dtY
-pRG
-vOK
-byc
-sFJ
-mdi
-sFJ
-cHb
-kyR
-kOx
-xgH
-xgH
-vIn
-xgH
-pxb
-cuf
-enB
-xgH
-wVn
-xgH
-xgH
-xgH
-xgH
-cmG
-cmG
-vBA
-hjK
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(121,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-gHk
-lhZ
-lhZ
-lhZ
-lhZ
-lhZ
-lhZ
-lhZ
-ghg
-vkW
-ehG
-xDV
-xZv
-cwG
-qly
-pEv
-pnr
-vAS
-tQf
-qzm
-gtX
-gUO
-dpH
-rjD
-gRf
-lLy
-jau
-rjD
-kzE
-pZV
-kzE
-xgH
-xgH
-xgH
-xgH
-xgH
-qOp
-vIn
-xgH
-xgH
-xgH
-xgH
-xgH
-wVn
-wVn
-wVn
-wdA
-xgH
-kbO
-nWu
-gPt
-eUX
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(122,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-hee
-rJy
-rJy
-rJy
-wxW
-rJy
-rJy
-rJy
-aWr
-vkW
-ehG
-vaz
-xEK
-ehG
-mMn
-pEv
-dsl
-bgO
-lJq
-fdx
-hah
-vay
-dpH
-jYS
-cax
-cKC
-mhr
-xgH
-dgU
-wVn
-wVn
-yko
-wVn
-wVn
-wVn
-wVn
-wVn
-wgr
-aHW
-aHW
-aHW
-aHW
-aHW
-aHW
-vuW
-fkW
-lYE
-xgH
-uXf
-ofy
-gPt
-ktu
-ssr
-tbw
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(123,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-hee
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-aWr
-sWF
-ehG
-ehG
-ehG
-ehG
-nUS
-pGW
-jfd
-yiw
-xwi
-qkx
-vcM
-kHN
-dpH
-pCG
-cax
-cKC
-kSN
-xgH
-wVn
-xgH
-xgH
-vmM
-xgH
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-lUo
-nRL
-xgH
-qGp
-qmN
-lVR
-eQm
-cmG
-cmG
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(124,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-hee
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-aWr
-dgp
-lmv
-ggQ
-kFi
-tnz
-khh
-pEv
-htc
-ehG
-ehG
-ehG
-ehG
-dpH
-dpH
-rjD
-dVB
-cKC
-hGW
-xgH
-wVn
-xgH
-uPm
-eVk
-jxy
-kzE
-clP
-lkX
-mew
-vAA
-kOR
-eXp
-kOR
-kOR
-kOR
-kOR
-kzE
-dQi
-nRL
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(125,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-hee
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-aWr
-wdP
-pwf
-mRt
-hpi
-pwf
-mRt
-bAL
-vOx
-yiw
-jqV
-pLI
-qUW
-vWp
-cIt
-rjD
-cax
-cKC
-kSN
-xgH
-wVn
-xgH
-vog
-tYc
-jnG
-kzE
-nQx
-qyJ
-xiz
-ipV
-lUH
-lUH
-lUH
-lUH
-cUb
-xyD
-kzE
-tCB
-nRL
-xsX
-hIQ
-hIQ
-hIQ
-pME
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(126,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-hee
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-aWr
-bDg
-ehG
-ehG
-ehG
-ehG
-bLt
-qeW
-rim
-njk
-viG
-cGM
-wgu
-tPy
-jXW
-jwr
-sAK
-cKC
-bfC
-xgH
-wVn
-xgH
-xgH
-kzE
-kzE
-wxQ
-mIK
-oCW
-kLc
-hLX
-hLX
-hLX
-hLX
-hLX
-hLX
-lkE
-kzE
-lJk
-rHr
-pdK
-haM
-gsh
-wsb
-njQ
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(127,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-hee
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-rJy
-aWr
-wdP
-ehG
-xkY
-kLn
-ehG
-apM
-quB
-myd
-ehG
-sQH
-vHa
-uSC
-vHa
-nVs
-rjD
-fFT
-cKC
-mkO
-xgH
-wVn
-bMz
-eXi
-kzE
-cgT
-pUH
-lUH
-ucf
-kLc
-hLX
-hLX
-hLX
-iSS
-qDH
-qpt
-lkE
-kzE
-bMz
-eOY
-mEa
-xfT
-xrB
-jEa
-njQ
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(128,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-eFc
-fWE
-uaC
-glo
-vFC
-vFC
-vFC
-vFC
-vFC
-vFC
-vFC
-jTj
-bvO
-ehG
-cms
-vxH
-khe
-oCf
-quB
-mRt
-dAc
-sBK
-tbt
-tkZ
-nKc
-qas
-jwr
-cax
-cKC
-kSN
-xgH
-wVn
-awf
-xiU
-kzE
-fCc
-lsT
-jJq
-hLX
-oXQ
-dTm
-vAU
-iTy
-uRn
-uRn
-ola
-kET
-kzE
-jXz
-eVk
-mEa
-xfT
-xfT
-xfT
-njQ
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(129,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-dpH
-ehG
-vau
-gAT
-gAT
-mmy
-gAT
-gAT
-gAT
-mmy
-gAT
-gAT
-csT
-ehG
-eSP
-cui
-ehG
-bBV
-wBB
-xxx
-yiw
-eCD
-sUp
-mBF
-qYA
-mUw
-rjD
-dMO
-cqY
-lxr
-cuc
-wVn
-aDM
-kGq
-kzE
-fCc
-fji
-hLX
-hLX
-wXE
-dcO
-joV
-dTm
-uRn
-qhP
-ola
-hGj
-kzE
-uhl
-twx
-asf
-uhg
-uhg
-uhg
-sat
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(130,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-dpH
-ehG
-tFc
-yim
-bgw
-cCC
-tTv
-bdo
-vyN
-qJe
-xUS
-qcW
-tIn
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-cax
-cKC
-kSN
-xgH
-wVn
-cAu
-mgf
-kzE
-okL
-byk
-lfL
-bOB
-kLc
-hLX
-hLX
-hLX
-uEO
-jsP
-fQQ
-lkE
-kzE
-kzE
-kzE
-kzE
-rSc
-tCB
-twx
-gXM
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(131,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-bMD
-trb
-bMD
-xlK
-axS
-whV
-nJm
-whV
-clp
-clp
-bel
-gRh
-tRj
-osQ
-pPZ
-whV
-mie
-cKC
-kSN
-xgH
-wVn
-xgH
-xgH
-kzE
-kzE
-wxQ
-odK
-fPf
-kLc
-eVV
-hLX
-hLX
-hLX
-hLX
-hLX
-lkE
-wCn
-opB
-wCR
-kzE
-kzE
-ulh
-eVk
-wVn
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(132,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-plf
-cNA
-lXT
-dui
-usI
-agU
-whV
-jJm
-jft
-whV
-uNU
-kBn
-whj
-axS
-qzX
-gNN
-qJT
-erU
-erU
-erU
-erU
-erU
-erU
-erU
-dGE
-jrV
-cKC
-mhr
-xgH
-wVn
-xgH
-hpV
-hnU
-dNH
-kzE
-kaw
-qvE
-rBr
-kbE
-kbE
-kbE
-kbE
-kbE
-hjd
-lHw
-jQb
-hzV
-vLM
-lBB
-kzE
-pLe
-lJk
-wVn
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(133,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-cdU
-cnI
-bdC
-ddv
-mST
-dui
-gSn
-cXI
-xVp
-uxQ
-wsE
-whV
-lYR
-tPk
-nDp
-axS
-whV
-xbK
-whV
-erU
-xAl
-fmN
-fOw
-unf
-unf
-dPT
-whV
-dRn
-cKC
-kSN
-xgH
-wVn
-xgH
-fkE
-oHy
-aHM
-kzE
-qWe
-jom
-eRe
-vKv
-vKv
-vfV
-mrW
-kOR
-kOR
-kOR
-wCn
-fKC
-ssi
-tkz
-kzE
-dxS
-twx
-wVn
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(134,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-plf
-mST
-lXT
-dui
-rxJ
-jVW
-whV
-uxQ
-jFT
-whV
-whV
-whV
-whV
-whV
-whV
-whV
-whV
-erU
-whV
-whV
-whV
-whV
-whV
-whV
-whV
-uGc
-cKC
-hUE
-xgH
-wVn
-xgH
-bCX
-twx
-nwx
-kzE
-kzE
-kzE
-iun
-xgH
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-wAe
-mYo
-kzr
-kzE
-wVn
-wVn
-wVn
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(135,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-whV
-whV
-whV
-whV
-whV
-whV
-whV
-uxQ
-yfi
-wJB
-eFY
-cmk
-fbd
-erU
-erU
-erU
-erU
-erU
-whV
-xKa
-xDZ
-alj
-wpE
-gYt
-mdp
-lHv
-cKC
-kSN
-xgH
-wVn
-xgH
-sWQ
-sWQ
-sWQ
-xgH
-sgH
-eyB
-wVn
-rTt
-xgH
-aki
-kbk
-xgH
-ljE
-jCU
-xMH
-trP
-dpC
-qHH
-kzE
-oBQ
-xgH
-xgH
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(136,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-fuq
-hys
-whV
-mWJ
-qKt
-whV
-mOx
-jQG
-eFY
-qfr
-cmk
-whV
-cvW
-whV
-bMD
-bMD
-bMD
-bMD
-jGe
-gni
-dQU
-hSd
-uqz
-mdp
-irf
-cKC
-kSN
-xgH
-wVn
-xiU
-pIq
-wmx
-neB
-xgH
-wVn
-wVn
-wVn
-wVn
-tod
-dJO
-dJO
-tIG
-vag
-vag
-kzE
-kzE
-kzE
-kzE
-kzE
-dJO
-nJI
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(137,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-eUM
-hAc
-nho
-qKt
-aqd
-whV
-uxQ
-yfi
-vqN
-eFY
-cmk
-whV
-tRj
-pjB
-bMD
-jGN
-rSk
-dOI
-xxO
-oTu
-spl
-hSd
-lKD
-mdp
-cax
-cKC
-kSN
-xgH
-lnN
-wVn
-wVn
-wVn
-wVn
-wVn
-wVn
-iXe
-trD
-jdp
-xgH
-hqh
-wmG
-xgH
-trD
-lWQ
-xgH
-ljE
-mdl
-trD
-xgH
-cXo
-qHi
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(138,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-eWb
-whV
-whV
-whV
-whV
-whV
-uxQ
-bCT
-nSv
-vWS
-xyC
-crj
-nLk
-efr
-bMD
-wgn
-hLs
-fXV
-xvW
-fkG
-fkG
-ldl
-oKr
-mdp
-cax
-cKC
-lYu
-xgH
-xgH
-xgH
-xgH
-xgH
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-eKk
-lWQ
-xgH
-rsd
-mdl
-trD
-xgH
-dJO
-grI
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(139,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-foI
-iGz
-nnN
-whV
-spa
-bcK
-bcK
-kSp
-kSp
-kSp
-kSp
-whV
-cUY
-rZl
-bMD
-gfQ
-fIv
-dOI
-tKJ
-uWx
-vDC
-gSw
-vNj
-mdp
-cax
-cKC
-kSN
-xgH
-fmb
-fmb
-fmb
-fmb
-kzE
-xqs
-pCb
-ess
-ess
-cWO
-ess
-tFK
-nvj
-kzE
-jXz
-lWQ
-xgH
-ljE
-mdl
-utE
-xgH
-euW
-xgH
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(140,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-whV
-whV
-fBX
-kjb
-foI
-pyE
-uSN
-eFY
-wJB
-bMD
-bMD
-bMD
-wuu
-bMD
-bMD
-bMD
-bMD
-dOI
-dOI
-dOI
-mdp
-mdp
-bza
-piT
-pfg
-mdp
-bsQ
-cKC
-rUW
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-soQ
-snO
-tim
-ils
-wKg
-jsV
-snO
-nSn
-kzE
-tCB
-lWQ
-xgH
-xYB
-mdl
-oTc
-xgH
-lWQ
-trD
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(141,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-aux
-whV
-whV
-whV
-mbT
-whV
-whV
-wHs
-oOb
-wXI
-bMD
-nBr
-oPe
-vgH
-fcC
-bNu
-rCe
-stl
-pRY
-nhu
-lYV
-aPg
-mdp
-mdp
-ppN
-mdp
-mdp
-cax
-cKC
-mhr
-jKt
-bMI
-xWl
-nPN
-nzb
-mNh
-ngH
-snO
-vaf
-gGe
-wKg
-tcA
-snO
-kSa
-kzE
-jXz
-hdA
-xgH
-xgH
-vmM
-xgH
-xgH
-hdA
-eKk
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(142,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-aux
-nXh
-gNN
-cjX
-jJm
-nQw
-jJm
-kSp
-waX
-vwJ
-bMD
-aut
-aYS
-pPP
-kOo
-eqQ
-kOo
-kOo
-pRY
-nhu
-eyY
-qDv
-xQk
-bcR
-ezi
-vdt
-bbo
-sAK
-cKC
-jRx
-jKt
-xel
-uVY
-nfn
-dRE
-mNh
-wKg
-snO
-wKg
-wKg
-wKg
-aQZ
-snO
-kzE
-kzE
-kzE
-eVh
-hdA
-hdA
-hdA
-hdA
-vhN
-hdA
-xYB
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(143,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-aux
-rIS
-rIS
-rIS
-rIS
-rIS
-rIS
-rIS
-rIS
-rIS
-asL
-srP
-kOo
-vRQ
-qzg
-evR
-qzg
-afe
-pRY
-nhu
-jcV
-nAu
-kPk
-kQb
-kyx
-raW
-bbo
-cax
-cKC
-kSN
-jKt
-llt
-uVY
-dqB
-wUB
-mNh
-ejZ
-snO
-qoJ
-szz
-wKg
-dTX
-snO
-cYx
-uiT
-kzE
-kzE
-kzE
-kzE
-kzE
-ngi
-kzE
-hdA
-hdA
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(144,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-uCm
-vLa
-aRP
-dhE
-bKv
-nXO
-raP
-gTW
-rIS
-kVB
-kOo
-kOo
-aHn
-cpr
-sVb
-cpr
-pzE
-pRY
-qvA
-bqx
-glr
-ajt
-vVf
-unb
-bbo
-bbo
-cax
-cKC
-kbw
-mgM
-ryA
-bmT
-oYY
-uxT
-qkL
-qkL
-snO
-wKg
-wKg
-wKg
-vKp
-wfW
-jHc
-aQA
-kzE
-tDw
-xXg
-kzE
-mWU
-cWu
-kzE
-kzE
-hdA
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(145,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-rIS
-aSg
-rIS
-fRS
-bXD
-eCj
-qpx
-oVj
-goy
-kOo
-kOo
-aHn
-cpr
-qMu
-rCS
-lDF
-sJE
-chs
-qoF
-hCT
-hma
-vVf
-pvF
-bbo
-ylb
-cax
-cKC
-kSN
-jKt
-mZV
-gzT
-jIG
-nMI
-evB
-oFF
-snO
-pNb
-cXP
-wKg
-kph
-snO
-rZX
-iHG
-kzE
-uDr
-mtH
-pan
-tqj
-sXV
-xzT
-kzE
-eVh
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(146,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-khr
-lyP
-rIS
-crW
-crW
-ckX
-cRY
-aKi
-rIS
-qZR
-kOo
-aHn
-cpr
-cpr
-cpr
-pzE
-cjx
-nhu
-azI
-hCs
-oLn
-bPv
-qRn
-wmj
-oRX
-gSj
-cKC
-jxi
-jKt
-gwH
-gzT
-mVC
-qyB
-iqt
-ibu
-snO
-wKg
-wKg
-wKg
-asw
-snO
-kzE
-kzE
-kzE
-nNE
-wuZ
-kzE
-uHQ
-eSw
-fho
-kzE
-hdA
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(147,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-khr
-udU
-rIS
-mEQ
-tQT
-gRw
-dbU
-tlf
-rIS
-cEP
-kOo
-rgT
-bij
-bij
-bij
-mYC
-qcD
-nhu
-btL
-jRt
-jRt
-nwh
-wXL
-qXm
-bJg
-hke
-bAk
-qRW
-jKt
-nor
-rcc
-sHG
-uxT
-jkD
-qkL
-snO
-jRp
-fax
-wKg
-wKg
-snO
-kzE
-ukC
-kzE
-kzE
-kzE
-kzE
-con
-con
-kzE
-kzE
-hdA
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(148,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-fXy
-ihH
-gok
-fFt
-kxq
-nJK
-nBx
-wSc
-rIS
-cEP
-kqP
-kOo
-jby
-mJt
-bxG
-dMm
-cjx
-nhu
-ica
-vdc
-sZL
-vrh
-qsy
-nhu
-fkf
-cax
-cKC
-kSN
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-snO
-eKn
-fKU
-wKg
-tIR
-snO
-kzE
-ukC
-xgH
-trD
-hdA
-hdA
-hdA
-hdA
-hdA
-hdA
-hdA
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(149,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-aRF
-gtt
-lyP
-lyP
-cdS
-siA
-xUc
-sMm
-rIS
-hkq
-hkq
-hkq
-hkq
-hkq
-hkq
-gFk
-xDQ
-nhu
-atT
-aKq
-nhu
-aKq
-atT
-nhu
-lfq
-cax
-vQg
-hmJ
-xgH
-aIV
-aIV
-aIV
-aIV
-aIV
-kzE
-gzO
-ess
-ess
-dsB
-ess
-trf
-kzE
-ukC
-xgH
-eKk
-hdA
-uLj
-bQV
-bQV
-gaH
-qvn
-rfz
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(150,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-kDh
-lyP
-eAm
-khr
-vgx
-khr
-ukf
-aWy
-bpu
-uXL
-vDu
-mxD
-mxD
-mxD
-hkq
-hic
-iqa
-qSl
-aBd
-aBd
-rjD
-aBd
-aBd
-rjD
-rjD
-iWG
-cKC
-xcV
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-kzE
-xgH
-xgH
-dxr
-hdA
-tIj
-lBv
-upP
-upP
-xfT
-vEt
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(151,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-ezH
-hhz
-aBh
-khr
-vHC
-khr
-khr
-gpg
-khr
-sVW
-noM
-fGi
-fGi
-fGi
-hkq
-tDa
-iqa
-qSl
-xQp
-uQe
-wnJ
-nvh
-nvh
-hJc
-xzH
-bJg
-bAk
-iII
-hbk
-ibE
-ibE
-qTF
-woP
-aBd
-tvX
-xgH
-hdA
-hdA
-hYN
-hdA
-hdA
-hdA
-hdA
-hdA
-hdA
-hdA
-tIj
-upP
-ltn
-vnt
-uHx
-vEt
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(152,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rIS
-rIS
-sfz
-sfz
-rIS
-dLT
-rIS
-ukR
-ttl
-xCw
-cDv
-noM
-iAU
-iAU
-iAU
-hkq
-kaT
-iqa
-qSl
-fkf
-ylb
-bsC
-kfF
-kfF
-cNl
-pZc
-esG
-uIq
-pyR
-bIx
-eeQ
-yhr
-yhr
-wVQ
-aBd
-cMB
-xgH
-eVh
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-eVh
-pJg
-bsG
-sph
-vyF
-uHx
-vEt
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(153,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-iuT
-aux
-cHX
-aux
-xjL
-lkV
-hkq
-kGg
-jpy
-xeO
-cTB
-noM
-pno
-pno
-pno
-hkq
-hiF
-iqa
-qSl
-inS
-ylb
-siY
-kfF
-rxn
-rxn
-fBf
-ybE
-ybE
-ybE
-oYE
-rxn
-avm
-yhr
-cLX
-aBd
-mgY
-xgH
-hdA
-xgH
-lyS
-vsN
-oQv
-pAH
-lmF
-cJB
-xgH
-hdA
-lzZ
-oxO
-xfT
-xfT
-uHx
-vEt
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(154,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-wsS
-hXQ
-qYZ
-bFI
-wbf
-sAv
-eQZ
-fnS
-jai
-cPR
-hkq
-ilq
-iqa
-qSl
-iWB
-agi
-dUr
-mUl
-olM
-qZc
-rjD
-jpC
-jpC
-jpC
-rjD
-lxc
-qNh
-wUL
-rcV
-aBd
-cMB
-xgH
-hdA
-xgH
-lGX
-vJk
-lwW
-mRq
-enX
-tyo
-xgH
-hdA
-dOQ
-ncL
-goJ
-xOs
-xOs
-vdP
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(155,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-oaE
-oaE
-qkO
-wVN
-ayB
-peC
-oIJ
-aPA
-bKa
-phL
-tti
-lKb
-dBh
-uBR
-hkq
-hkq
-iqa
-qSl
-qSl
-rjD
-jCi
-qTS
-rjD
-rjD
-rjD
-fjN
-ybE
-jIe
-rjD
-rjD
-rjD
-jIT
-jCi
-rjD
-rjD
-xgH
-vNY
-xgH
-jZZ
-lwW
-xpv
-wlq
-szd
-mRq
-xgH
-hdA
-hdA
-hdA
-oyJ
-hdA
-hdA
-bpE
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(156,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-mzf
-vdd
-swm
-uAf
-aux
-ugD
-xeO
-fjG
-bKa
-aQJ
-tti
-vUt
-dBh
-xeO
-rHy
-hkq
-iqa
-uFU
-qSl
-tCF
-bSs
-mUK
-rAv
-rjD
-tuv
-meh
-meh
-meh
-vdf
-rjD
-cXs
-uRg
-phU
-wqN
-rDh
-usS
-tkE
-rjD
-mRq
-mRq
-lwW
-lwW
-rsa
-pHe
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-eVh
-vwn
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(157,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-kEN
-oaE
-ewM
-klD
-beB
-wMy
-xFJ
-ams
-fbt
-uVM
-lBo
-pyS
-gdg
-udC
-xIr
-hkq
-woq
-wIw
-rRd
-imj
-nTO
-kfF
-ePT
-iNE
-gWA
-meh
-cca
-meh
-xYN
-cpx
-cyx
-mCo
-cse
-osu
-iNV
-fWr
-ddW
-jRJ
-oTg
-wNt
-szd
-rsa
-jfH
-lwW
-yey
-bPx
-pPC
-xgH
-hdA
-hdA
-hdA
-eVN
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(158,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hkq
-rLx
-cYR
-qXk
-gsV
-uIi
-tti
-txU
-dWh
-pYC
-rgi
-qos
-waY
-qSl
-eeP
-fGn
-mUl
-lTl
-rjD
-wYG
-meh
-cVy
-meh
-eTd
-rjD
-lJy
-jvX
-rcV
-gvX
-pKp
-fGn
-dmS
-rjD
-qac
-ylg
-mRq
-lwW
-lwW
-lwW
-yey
-lwW
-gwN
-xgH
-hdA
-olu
-eVk
-fPo
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(159,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-dxd
-dxd
-cLg
-wVN
-ayB
-peC
-oIJ
-hRR
-qXk
-hHB
-iQR
-gmw
-hOy
-lHR
-mQm
-hkq
-gNc
-gFk
-qSl
-rjD
-wJl
-qTS
-rjD
-rjD
-rjD
-rjD
-rjD
-rjD
-rjD
-rjD
-rjD
-qgE
-jCi
-rjD
-rjD
-xgH
-maL
-xgH
-qcP
-fVf
-mRq
-lAH
-lwW
-pgi
-pri
-lwW
-qLg
-xgH
-hdA
-xgH
-xgH
-xgH
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(160,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-uMb
-pht
-dZQ
-uAf
-aux
-ugD
-xeO
-bRd
-qXk
-bKa
-bKa
-gmw
-rdx
-aAB
-cuk
-hkq
-gFk
-gFk
-kUw
-aOI
-fyQ
-kfF
-eIr
-oyH
-xnr
-fvO
-xJX
-oaa
-uYB
-tLa
-pbX
-qdD
-cLX
-wGA
-gIh
-xgH
-wxx
-xgH
-xgH
-xgH
-xgH
-tzD
-xkN
-nzK
-yey
-pgi
-imq
-xgH
-hdA
-iCH
-jZj
-lJk
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(161,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hvD
-dxd
-wmp
-klD
-beB
-wMy
-xFJ
-cPg
-aDC
-dtO
-dtO
-umT
-ezX
-xfv
-wMH
-mbS
-qef
-fps
-vPH
-njB
-fyQ
-rxn
-rxn
-yhr
-qJD
-aOV
-wvp
-oBK
-uYB
-eTa
-rxn
-cLX
-cLX
-wqg
-kfb
-xgH
-mrB
-uPj
-uPj
-bSH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-xgH
-eVh
-xgH
-iKB
-lTY
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(162,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hkq
-xeO
-cYR
-qXk
-eyO
-eyO
-gmw
-isd
-oGk
-anq
-vaW
-tgc
-qMv
-rwj
-tOr
-qWc
-rxn
-kAF
-soq
-eEp
-pcR
-pcR
-tvZ
-sWZ
-bRR
-fNh
-mdQ
-gLA
-dED
-cOI
-xgH
-xgH
-xgH
-xgH
-nst
-uPj
-uPj
-bSH
-hdA
-hdA
-hdA
-hdA
-hdA
-hdA
-iCH
-jZj
-pLe
-xgH
-xgH
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(163,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-gUs
-gUs
-cOE
-rRS
-nfx
-leu
-hct
-rqr
-kZg
-cDv
-xeO
-gmw
-sws
-wfT
-wfT
-kbu
-kbu
-kbu
-cNb
-qqf
-eyo
-avm
-aUb
-yhr
-eEp
-pcR
-pcR
-tvZ
-ndF
-bnz
-kYH
-ibE
-kkN
-dHf
-dHf
-xgH
-fmb
-fmb
-xgH
-trD
-atX
-uWy
-wxx
-eVk
-rFW
-xgH
-xdN
-gBu
-aKt
-dEc
-dEc
-dEc
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(164,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-nyh
-kPX
-msg
-uAf
-aux
-ugD
-xeO
-wKa
-bVG
-dHg
-ksn
-gmw
-gmC
-wfT
-sON
-mYh
-pEZ
-kbu
-kbu
-kbu
-kbu
-kbu
-kbu
-yhr
-rjp
-nHw
-nbn
-nbn
-ufL
-vtW
-sQD
-sQD
-sQD
-lRP
-sQD
-kzE
-kzE
-kzE
-kzE
-kzE
-xgH
-xgH
-afE
-lUo
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-xbO
-ocl
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(165,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-emv
-gUs
-eHK
-rRS
-nfx
-leu
-uET
-vqF
-dkk
-xwo
-gaY
-rSC
-aik
-wfT
-tev
-fHz
-xNi
-wfT
-bxd
-bJU
-pYs
-uyu
-kbu
-ozM
-eeQ
-mdR
-gpf
-igQ
-fJy
-fOq
-sQD
-ibL
-juI
-mfC
-sQD
-lOI
-sjs
-oFr
-iHL
-kzE
-fmb
-xgH
-wxx
-xdN
-dEc
-hhk
-ano
-nJt
-owK
-bwZ
-dNL
-dNL
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(166,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hkq
-xVa
-cYR
-bVG
-xeO
-bSq
-soN
-urO
-jpK
-uVV
-tvH
-uVV
-srz
-uVV
-uVV
-ukd
-fXF
-fXM
-hzJ
-rxn
-iJz
-dHf
-nfm
-tmu
-wqi
-utm
-iAS
-nPb
-rCO
-cjc
-aRI
-slC
-bgs
-hZt
-kzE
-fmb
-xgH
-bMd
-vcr
-dEc
-nJt
-ciZ
-qpb
-iXB
-ioL
-bYu
-dNL
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(167,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-iuT
-aux
-cHX
-aux
-iuT
-oyh
-hkq
-jdW
-tBh
-uws
-rCa
-cjE
-tWH
-jdW
-wfT
-qwI
-vwW
-tDK
-wfT
-rHq
-awD
-twQ
-nIw
-iAY
-gTd
-rxn
-qdD
-lQv
-pIT
-rxn
-lfZ
-sQD
-pqy
-nPb
-wSm
-kSF
-cpE
-lTo
-qIf
-xGI
-kzE
-kzE
-kzE
-yjX
-dtx
-dEc
-nJt
-kQW
-ogT
-hhk
-bwZ
-vcr
-vcr
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(168,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hkq
-vud
-cYR
-bVG
-bSq
-xWm
-tdf
-hCD
-wfT
-tbG
-esx
-ktl
-wfT
-pAL
-uVV
-rym
-wfT
-kbu
-rBP
-rBP
-dNx
-vED
-sdL
-rBP
-nag
-rBP
-oSt
-sYH
-tNC
-sQD
-uMP
-tQk
-qFa
-ndR
-nvk
-uIn
-dEc
-xpQ
-xsR
-dEc
-kpU
-kAW
-hhk
-mMA
-kuW
-vFE
-cxQ
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(169,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-yjJ
-qrt
-qek
-wVN
-ayB
-peC
-oIJ
-jzC
-bVG
-ktC
-dqV
-tdf
-wrU
-kbu
-kbu
-kbu
-kbu
-kbu
-kbu
-vtt
-wfT
-wfT
-wRe
-wmU
-jlr
-nDw
-bhp
-jPh
-wmU
-emj
-afg
-oSt
-oSt
-fzB
-rBP
-rBP
-oFl
-xGI
-xGI
-coI
-lwu
-dEc
-kGZ
-buB
-dEc
-nJt
-nJt
-ioL
-vFE
-bwZ
-xGl
-ixD
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(170,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-gzt
-jEt
-dWF
-uAf
-aux
-ugD
-xeO
-sxg
-bVG
-bbv
-xeO
-izY
-vgm
-rBP
-tNf
-bWd
-izm
-gkI
-rBP
-dnT
-jUo
-dFT
-hur
-wmU
-ylG
-nDw
-obA
-jPh
-wmU
-pVZ
-uKL
-rGe
-nDQ
-wWw
-xFR
-gPc
-oFl
-lqI
-pUa
-mEA
-eBT
-dEc
-bMd
-vcr
-dEc
-nJt
-nJt
-nJt
-xGl
-ttE
-wCk
-rQa
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(171,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-vyQ
-cJu
-dQM
-pAN
-pxQ
-awb
-xFJ
-mqI
-kIe
-fxo
-uvD
-ocv
-kfg
-rBP
-iTu
-iko
-vHz
-qoG
-rBP
-cJh
-xND
-uYe
-suZ
-rBP
-rBP
-qDN
-vED
-sdL
-rBP
-gBX
-pUp
-tof
-xMu
-wWw
-eEA
-nDf
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-ulU
-ggX
-dEc
-nJt
-nJt
-nJt
-bJW
-mrs
-riT
-iWF
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(172,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hkq
-rLx
-cYR
-blI
-gkx
-xeO
-vsL
-nJb
-rBP
-fxd
-haK
-gHV
-haK
-art
-jUR
-qXq
-fFA
-rcd
-dWn
-oYi
-hKU
-wiN
-qIT
-ygH
-mLZ
-rcd
-pgE
-tNA
-rcd
-cQB
-yhO
-dEc
-fGt
-hca
-hca
-hca
-hca
-koJ
-dEc
-dEc
-vcr
-vcr
-wtm
-qpH
-vcr
-gvc
-oxz
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(173,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-sYf
-sYf
-pWH
-wVN
-ayB
-peC
-oIJ
-cmi
-blI
-pJG
-kDg
-vsL
-kDg
-rBP
-kZr
-ykU
-mMO
-tCC
-art
-hKq
-psJ
-nln
-hAn
-loN
-dej
-rpA
-dDv
-mLI
-dej
-oII
-hAn
-ejF
-loN
-bXe
-saA
-vvK
-dEc
-ulU
-vcr
-uhx
-msL
-vcr
-xep
-dEc
-ags
-nJt
-vcr
-owK
-xGl
-dou
-klo
-cll
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(174,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-oAZ
-afs
-ndg
-uAf
-aux
-ugD
-xeO
-aKZ
-bVG
-rCN
-kDg
-vsL
-kDg
-rBP
-kjF
-dcp
-wHa
-dcp
-rBP
-kIG
-uxX
-rBP
-kNN
-cFc
-rBP
-fXd
-pLJ
-eLQ
-rBP
-xgD
-wKT
-rBP
-uMl
-oOd
-otD
-gnY
-dEc
-gqO
-vcr
-pzY
-ssx
-vcr
-xep
-ldD
-qFX
-jJW
-lZp
-jJP
-cll
-jJP
-rQa
-ndr
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(175,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-bos
-sYf
-fmq
-pAN
-pxQ
-awb
-xFJ
-wot
-vnX
-pJG
-bZg
-vsL
-kDg
-rBP
-dFR
-mHk
-mZZ
-tDE
-rBP
-wYB
-xNT
-rBP
-hjz
-hjz
-rBP
-rBP
-rBP
-rBP
-rBP
-hjz
-hjz
-rBP
-sZb
-xYU
-fYg
-kHS
-dEc
-bhb
-vcr
-eCr
-cWZ
-vcr
-kUe
-wRM
-nJt
-nJt
-mgA
-aMA
-nNy
-xRk
-nec
-owK
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(176,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hkq
-xeO
-cYR
-bVG
-uJM
-xeO
-qoV
-xeO
-rBP
-rBP
-rBP
-rBP
-rBP
-rBP
-jcr
-rBP
-rBP
-xgW
-xgW
-xgW
-xgW
-dpR
-xgW
-xgW
-xgW
-mVF
-rBP
-rBP
-jcU
-rBP
-rBP
-dEc
-sTQ
-pRN
-ccK
-mWg
-vFE
-khQ
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(177,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-wwL
-wwL
-xuW
-wVN
-ayB
-peC
-oIJ
-vuZ
-bVG
-gZQ
-qAS
-bkO
-dAI
-aCz
-dSS
-tEo
-bvT
-dSS
-rRh
-nLY
-jMW
-oqA
-wlP
-klY
-klY
-jlK
-nHv
-cAf
-klY
-klY
-klY
-bUO
-gqp
-wOm
-hZm
-lrN
-dEc
-tKc
-pvs
-dfi
-gDO
-ixD
-khQ
-uov
-uov
-uov
-uov
-uov
-uov
-uov
-uov
-ecN
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(178,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-vhy
-bQA
-vgX
-uAf
-aux
-ugD
-xeO
-vQd
-bVG
-avp
-xeO
-lYt
-wwW
-uED
-oIy
-oIy
-bIW
-oIy
-oIy
-tjV
-xgW
-mVF
-hLk
-eCQ
-uyD
-uyD
-uDN
-uyD
-uyD
-yft
-iXt
-mVF
-wOm
-xgW
-rav
-pLK
-aOJ
-tKc
-mWg
-ixD
-sup
-ixD
-khQ
-deF
-vcr
-vcr
-vcr
-vcr
-vcr
-vcr
-vcr
-uov
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(179,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-fcS
-wwL
-lzX
-pAN
-pxQ
-awb
-xFJ
-las
-vYH
-cQL
-xeO
-oIy
-oIy
-oIy
-oIy
-gtQ
-bRZ
-whF
-oIy
-aDf
-xgW
-mVF
-wmC
-sly
-uyD
-aFJ
-mMq
-gSd
-uyD
-sHL
-ddT
-mVF
-wOm
-wOm
-hZm
-fWc
-dEc
-tKc
-dAU
-dAU
-ixD
-vFE
-khQ
-wss
-vcr
-bGf
-rpF
-cgx
-aSj
-nhU
-vcr
-uov
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(180,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hkq
-rLx
-cYR
-jAX
-oIy
-oIy
-oIy
-irk
-nDr
-kBz
-gTZ
-bwl
-wlA
-kGK
-hAI
-uwQ
-fnq
-uyD
-uyD
-uyD
-uyD
-bXw
-uyD
-uyD
-uyD
-uyD
-fws
-wOm
-unW
-dEc
-dEc
-dEc
-vbg
-rpN
-ixD
-vFE
-xWv
-khQ
-qwj
-vcr
-aHX
-rpF
-grD
-aSj
-wor
-vcr
-uov
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(181,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-luI
-luI
-jNa
-wVN
-ayB
-peC
-loA
-ygq
-avg
-oIy
-aof
-tZD
-iMe
-xIL
-sAH
-sAH
-fWf
-sAH
-sAH
-uDZ
-jSD
-iyT
-tYl
-qLb
-fJE
-iGJ
-ueu
-hds
-esV
-qLb
-mVf
-mVF
-wOm
-bAx
-dEc
-mSe
-uov
-wWm
-bwL
-bwL
-bwL
-bwL
-xzr
-wzB
-vcr
-vZn
-bkG
-kzn
-cPQ
-lnX
-vcr
-uov
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(182,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-saW
-buJ
-pUl
-uAf
-aux
-ugD
-xeO
-vtS
-cIL
-tTI
-itP
-gnx
-nnb
-bZE
-sAH
-nIJ
-uLB
-rAm
-sAH
-jWI
-jSD
-fcp
-iCk
-xyb
-aIB
-gTp
-veT
-mrd
-iNW
-xyb
-aVM
-pEq
-wOm
-hOP
-dEc
-wus
-uov
-vcr
-vcr
-vcr
-vcr
-vcr
-uov
-qju
-vcr
-txv
-wRS
-pJC
-pJC
-txv
-vcr
-uov
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(183,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-geZ
-luI
-iFo
-oxh
-xsH
-wtR
-rag
-qBf
-kIe
-oIy
-rkf
-tZD
-jHQ
-kTc
-sAH
-qEw
-qEw
-qEw
-sAH
-rKV
-kfo
-iZP
-kcB
-ppO
-fJE
-jxc
-lET
-wCu
-vap
-kBK
-juf
-wOm
-kfo
-wfl
-dEc
-lhl
-uov
-vcr
-ovL
-oMZ
-mfI
-vcr
-uov
-afa
-vcr
-vcr
-iJc
-lzI
-lIP
-xjr
-vcr
-iZy
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(184,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-hkq
-hkq
-hkq
-hkq
-hkq
-mMu
-hQy
-hQy
-hQy
-oPM
-hQy
-vmr
-vmr
-skj
-ouy
-sAH
-hhb
-gGt
-qEw
-sAH
-gJl
-jSD
-ppd
-uyD
-uyD
-uyD
-uyD
-gBG
-uyD
-uyD
-uyD
-uyD
-upc
-kfo
-mvg
-dEc
-lEI
-uov
-vcr
-brA
-khc
-viv
-vcr
-uov
-uov
-iZy
-vcr
-hoy
-lCT
-lIP
-uWi
-vcr
-uov
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(185,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-iuT
-aux
-cHX
-aux
-iuT
-oyh
-hQy
-eIt
-hQy
-woa
-hQy
-eIt
-vmr
-jsZ
-fLn
-sAH
-hep
-xjZ
-uEu
-sAH
-bQz
-uCe
-iZP
-xgW
-pIZ
-qbo
-jBx
-eGb
-eeB
-qbo
-lYg
-jER
-wOm
-rpD
-tyQ
-dEc
-dEc
-rJO
-vcr
-eAl
-khc
-oMm
-vcr
-vcr
-vcr
-uov
-vcr
-vcr
-vcr
-cKf
-vcr
-vcr
-uov
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(186,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-css
-abA
-hQy
-hQy
-hQy
-hQy
-hqG
-ogY
-csY
-cQS
-eQe
-vmr
-wul
-fKH
-sAH
-jWv
-rBK
-eLF
-sAH
-oIy
-hsG
-hOR
-jER
-pIZ
-cir
-jWm
-xjs
-lPX
-ajg
-irm
-xgW
-pEq
-wiF
-qnS
-wth
-fjS
-sJp
-vcr
-wVJ
-tYF
-kAI
-vcr
-uov
-uov
-uov
-uov
-uov
-uov
-uov
-uov
-uov
-ecN
-vcr
-vcr
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(187,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-css
-xQL
-qzy
-fYz
-lTb
-kZh
-aDx
-ekI
-ekI
-ekI
-aDx
-xMX
-vmr
-ykP
-npP
-tZD
-xih
-iLF
-xiO
-fKL
-oIy
-tyQ
-mVU
-tyQ
-tyQ
-tyQ
-xqR
-xqR
-xqR
-tyQ
-tyQ
-tyQ
-fJl
-tyQ
-tyQ
-lhh
-dEc
-fAy
-vcr
-kdQ
-khc
-anO
-aGW
-uov
-vcr
-vNN
-vcr
-vcr
-vcr
-vcr
-vcr
-vcr
-tPu
-vcr
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(188,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-lwc
-dQI
-vmr
-vmr
-aDx
-eWI
-omL
-wNh
-omL
-lLB
-xFN
-vmr
-obH
-npP
-fJw
-rsT
-qyN
-mPE
-cYF
-oIy
-mVy
-bSa
-tyQ
-kVp
-oyh
-oyh
-oyh
-oyh
-oyh
-kVp
-tyQ
-nuV
-mVy
-dEc
-dEc
-dEc
-uov
-vcr
-vWX
-qHf
-cxO
-vcr
-uov
-eAP
-uov
-vcr
-pJu
-ekk
-izI
-vcr
-wkr
-aHt
-pGr
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(189,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-css
-lwc
-sim
-tGq
-vmr
-gKu
-wpJ
-gIs
-cNR
-pLO
-xJL
-arI
-abs
-fSv
-jdD
-cau
-vxz
-csf
-buQ
-nPZ
-uhC
-oIy
-tyQ
-iPN
-tyQ
-oyh
-oyh
-ecI
-wqD
-nYL
-oyh
-oyh
-tyQ
-pRq
-tyQ
-dEc
-jnA
-aHt
-uov
-vcr
-vcr
-vcr
-vcr
-vcr
-vcr
-vcr
-uov
-hXB
-lJE
-aXO
-oFX
-vcr
-pcg
-oSz
-pGr
-vcr
-dEc
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(190,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-liu
-vEN
-tGq
-vmr
-bVZ
-wpJ
-fHf
-aos
-lFW
-hpc
-arI
-vUK
-vmr
-qwS
-xIL
-eNk
-qNf
-jaK
-aLh
-ujl
-oIy
-yli
-jCD
-iFu
-aux
-aux
-caC
-teQ
-mdr
-tPB
-tPB
-kVK
-qZT
-yli
-dEc
-aUG
-aHt
-klO
-klO
-uov
-kmV
-qdB
-uov
-uov
-uov
-uov
-vcr
-izI
-fGK
-ekk
-vcr
-wkr
-jRB
-pGr
-vcr
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(191,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-vEN
-vEN
-tGq
-vmr
-fWZ
-wpJ
-gIs
-xJL
-eKg
-cNR
-arI
-bWu
-vmr
-pHD
-nZm
-tZD
-tZD
-tZD
-mjv
-tZD
-oIy
-owI
-bOk
-owI
-cHX
-owI
-caC
-bNL
-biH
-owI
-cHX
-owI
-bOk
-owI
-dEc
-xMY
-aHt
-rfo
-ueA
-vcr
-vcr
-vcr
-vcr
-gKy
-vcr
-uov
-vcr
-vcr
-vcr
-dEc
-dEc
-dEc
-dEc
-dEc
-vcr
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(192,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-css
-lwc
-pnV
-xtG
-ndY
-vmr
-vKf
-aDx
-wfb
-vqC
-cdo
-vqC
-cxl
-jQX
-vmr
-ykP
-qYi
-vHQ
-hQp
-toC
-dlp
-kRo
-fmg
-cHX
-res
-jIP
-jIP
-hjE
-qct
-ayW
-qct
-hjE
-jIP
-jIP
-qgT
-cHX
-dEc
-dEc
-dEc
-wfy
-aHt
-vcr
-vvJ
-eyk
-fTE
-fTE
-vcr
-uov
-qwj
-lEI
-aVc
-dEc
-dFq
-fbl
-oHx
-dEc
-vYD
-vYD
-dEc
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(193,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-rDK
-hio
-mNg
-fYR
-nqE
-cNx
-gTA
-sTD
-hyL
-hyL
-hyL
-sTD
-nxH
-vmr
-neZ
-uUh
-uOM
-iEs
-spE
-oPJ
-gxT
-fmg
-owI
-jkM
-bOk
-jkM
-owI
-caC
-wqD
-mdr
-owI
-jkM
-bOk
-jkM
-owI
-oyh
-kVp
-dEc
-eBu
-aHt
-vcr
-ido
-odS
-hAO
-mGN
-vcr
-fAy
-uov
-uov
-wQC
-qjj
-fqe
-ifS
-iWE
-dEc
-dEc
-vYD
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(194,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-ehL
-wVS
-bQU
-wTV
-vmr
-ggH
-ngm
-oni
-myR
-wbR
-cXG
-xhX
-wHj
-vmr
-jxM
-uUh
-qnx
-teq
-teq
-teq
-teq
-teq
-owI
-jkM
-bOk
-jkM
-owI
-caC
-wqD
-mdr
-owI
-jkM
-bOk
-jkM
-owI
-oyh
-kVp
-dEc
-jVM
-oSz
-vcr
-duw
-odS
-aXk
-pCv
-vcr
-deF
-mKY
-mGp
-aHt
-dEc
-fyT
-fHy
-fSS
-fIK
-dEc
-vYD
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(195,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-css
-lwc
-sQl
-ekY
-ckn
-qCo
-teq
-teq
-muh
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-uwr
-teq
-teq
-tjA
-dBu
-byl
-gIz
-cHX
-oAO
-oAO
-oAO
-cHX
-bgA
-geH
-mdr
-cHX
-oAO
-oAO
-oAO
-cHX
-oyh
-oyh
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-nlv
-dEc
-frL
-fFY
-bHw
-fFY
-dEc
-vYD
-vcr
-dEc
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(196,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-css
-lwc
-iMR
-iMR
-iMR
-iMR
-teq
-guQ
-guQ
-guQ
-sKt
-dSH
-dil
-dSH
-dSH
-dSH
-dSH
-jmS
-hhf
-sKt
-iiR
-mbf
-vYw
-gIz
-cHX
-oAO
-oAO
-oAO
-cHX
-bgQ
-wqD
-mdr
-cHX
-oAO
-oAO
-oAO
-cHX
-oyh
-kVp
-kVp
-kVp
-kVp
-oyh
-kVp
-kVp
-oyh
-kVp
-kVp
-kVp
-kVp
-dEc
-fBu
-dEc
-fCG
-fHb
-fXU
-gyz
-dEc
-vYD
-vYD
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(197,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-yil
-rFC
-wJp
-rFC
-wJp
-sKt
-mYA
-sKt
-sKt
-sKt
-dSH
-sKt
-kJG
-dSH
-wbp
-dla
-xqr
-hhf
-sKt
-sKt
-sPZ
-sKt
-teq
-owI
-jkM
-bOk
-jkM
-owI
-caC
-wqD
-mdr
-owI
-jkM
-bOk
-jkM
-owI
-oyh
-kVp
-kVp
-kVp
-kVp
-oyh
-kVp
-kVp
-oyh
-kVp
-kVp
-kVp
-kVp
-dgs
-fBu
-dEc
-rHX
-cIT
-bKP
-ogc
-dEc
-vYD
-vYD
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(198,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-iEJ
-mEf
-tOS
-qzy
-gHJ
-pui
-opn
-sKt
-xJv
-ajp
-xqr
-dSH
-dSH
-sKt
-sKt
-ppe
-sKt
-sKt
-vDL
-hhf
-ugV
-ugV
-ugV
-xqr
-gIz
-owI
-jkM
-bOk
-jkM
-owI
-caC
-wqD
-mdr
-owI
-jkM
-bOk
-jkM
-owI
-oyh
-kVp
-kVp
-kVp
-kVp
-eYj
-fPW
-eYj
-eYj
-kVp
-kVp
-kVp
-kVp
-dgs
-fBu
-dEc
-rpV
-fKi
-sdo
-kdu
-dEc
-vYD
-vYD
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(199,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-iEJ
-mEf
-pui
-pui
-qzy
-tOS
-aoq
-sKt
-iHN
-xqr
-dSH
-dSH
-sKt
-sKt
-ieM
-jLi
-ieM
-sKt
-xqr
-ugV
-xqr
-qGC
-iay
-xqr
-gIz
-cHX
-lhT
-rCp
-rCp
-hjE
-qct
-ayW
-qct
-hjE
-rCp
-rCp
-aho
-cHX
-oyh
-kVp
-kVp
-kVp
-fPW
-eYj
-kVp
-kVp
-fPW
-eYj
-eYj
-kVp
-kVp
-dEc
-fBu
-dEc
-pzd
-ksN
-fDT
-gKg
-dEc
-vYD
-vYD
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(200,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-pui
-dYl
-opn
-ctX
-hvv
-tmM
-dSH
-dSH
-dSH
-sKt
-sKt
-bgr
-rjh
-bxT
-voH
-sKt
-sKt
-sPZ
-sKt
-sKt
-xqr
-kbf
-teq
-owI
-owI
-owI
-owI
-owI
-caC
-wqD
-mdr
-owI
-owI
-owI
-owI
-owI
-oyh
-kVp
-kVp
-eYj
-eYj
-kVp
-kVp
-kVp
-kVp
-kVp
-fPW
-eYj
-kVp
-dEc
-bOq
-dEc
-lXu
-fNK
-gdM
-gdM
-dEc
-vYD
-vYD
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(201,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-css
-lwc
-lwc
-lwc
-lwc
-lwc
-lwc
-sKt
-sPZ
-sKt
-sKt
-sKt
-pHI
-rpR
-keP
-rcy
-vxx
-sKt
-cbM
-hfm
-udn
-sKt
-sKt
-sKt
-teq
-cHX
-oyh
-oyh
-oyh
-oyh
-eLt
-bNL
-xBC
-oyh
-oyh
-oyh
-oyh
-cHX
-oyh
-kVp
-kVp
-fPW
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-eYj
-tqK
-dEc
-ixD
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-vcr
-vcr
-vcr
-dEc
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(202,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-teq
-sKt
-ugV
-ugV
-ugV
-ugV
-ugV
-ugV
-ugV
-ugV
-ugV
-htF
-dXp
-ouR
-xVS
-mVN
-vxx
-ofx
-fkJ
-xqr
-dla
-rzT
-sKt
-leo
-teq
-oyh
-oyh
-kVp
-kVp
-kVp
-rqc
-wqD
-iFu
-kVp
-kVp
-kVp
-oyh
-oyh
-oyh
-oyh
-oyh
-eYj
-oyh
-oyh
-kVp
-kVp
-kVp
-kVp
-kVp
-eYj
-iRf
-jgY
-ixD
-taD
-fBu
-mpF
-fBu
-fBu
-gyS
-fBu
-fBu
-gDW
-gKV
-hbl
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(203,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-teq
-sKt
-jZa
-grE
-bUa
-jMp
-grE
-xcQ
-qfk
-grE
-jFh
-sKt
-xPW
-jQw
-ufm
-atK
-llv
-sKt
-hfm
-xqr
-xqr
-hfm
-glH
-jHv
-fmO
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-kVp
-fPW
-bml
-fPW
-oyh
-oyh
-kVp
-kVp
-kVp
-kVp
-oyh
-clF
-dEc
-cjC
-mXq
-ueS
-npE
-mXq
-mXC
-kox
-mXq
-bME
-vcr
-dEc
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(204,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-teq
-sKt
-sKt
-iAH
-sKt
-sKt
-iAH
-sKt
-sKt
-iAH
-sKt
-sKt
-sKt
-cxN
-sZj
-cxX
-rLE
-sKt
-siK
-sKt
-sKt
-sKt
-sKt
-sKt
-sKt
-iTg
-tBy
-iTg
-iTg
-iTg
-tBy
-iTg
-tBy
-iTg
-iTg
-iTg
-tBy
-iTg
-iTg
-iTg
-iTg
-iTg
-vwD
-kVp
-oyh
-oyh
-kVp
-kVp
-kVp
-oyh
-kVp
-dEc
-vcr
-dqn
-vcr
-vcr
-dqn
-vcr
-vcr
-dqn
-vcr
-vcr
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(205,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-sKt
-sKt
-sKt
-sKt
-sKt
-sKt
-sKt
-teq
-teq
-teq
-teq
-teq
-teq
-iSU
-uQD
-iSU
-iSU
-iSU
-uQD
-iSU
-uQD
-iSU
-iSU
-iSU
-uQD
-iSU
-iSU
-iSU
-iSU
-iSU
-lVi
-iTg
-iTg
-iTg
-iTg
-iTg
-iTg
-iTg
-iTg
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-dEc
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(206,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-aTO
-rcO
-pNV
-aTO
-rcO
-rcO
-xln
-aTO
-rcO
-rcO
-xln
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-teq
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-iSU
-iSU
-iSU
-iSU
-iSU
-iSU
-iSU
-iSU
-rcO
-rcO
-xln
-aTO
-rcO
-rcO
-xln
-aTO
-rcO
-pNV
-aTO
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(207,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rcO
-rcO
-owI
-rcO
-rcO
-rcO
-owI
-rcO
-rcO
-rcO
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-rcO
-rcO
-rcO
-owI
-rcO
-rcO
-rcO
-owI
-rcO
-rcO
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(208,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-xpw
-xpw
-xpw
-owI
-xpw
-xpw
-xpw
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-xpw
-xpw
-xpw
-owI
-xpw
-xpw
-xpw
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(209,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(210,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(211,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(212,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(213,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(214,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(215,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(216,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(217,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(218,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(219,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-fxS
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(220,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(221,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(222,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(223,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(224,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(225,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(226,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(227,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(228,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(229,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(230,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(231,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(232,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(233,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(234,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(235,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(236,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(237,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(238,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(239,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(240,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(241,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(242,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(243,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(244,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(245,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(246,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(247,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(248,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(249,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(250,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(251,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(252,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(253,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(254,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-(255,1,1) = {"
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-owI
-"}
-
-(1,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(2,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(3,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(4,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(5,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(6,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(7,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(8,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(9,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(10,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(11,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(12,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(13,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(14,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(15,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(16,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(17,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(18,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(19,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(20,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(21,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(22,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(23,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(24,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(25,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(26,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(27,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(28,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(29,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(30,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(31,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(32,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(33,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(34,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(35,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(36,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(37,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(38,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(39,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(40,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(41,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(42,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(43,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(44,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(45,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(46,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(47,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(48,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(49,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(50,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(51,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(52,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(53,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(54,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(55,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(56,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(57,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(58,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xIV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(59,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xIV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(60,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xIV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(61,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xIV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(62,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xIV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(63,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xIV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(64,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(65,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(66,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xpI
-xpI
-xpI
-xpI
-wwu
-wwu
-wwu
-wwu
-wwu
-wwu
-fNT
-lwU
-fNT
-lwU
-fNT
-lwU
-fNT
-lwU
-fNT
-fNT
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(67,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-fZV
-fZV
-fZV
-fZV
-oyh
-oyh
-oyh
-xpI
-vNO
-vNO
-vNO
-vNO
-wwu
-wwu
-wwu
-wwu
-wwu
-wwu
-fNT
-lwU
-fNT
-lwU
-fNT
-lwU
-fNT
-lwU
-fNT
-fNT
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(68,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-fZV
-fZV
-oyh
-oyh
-oyh
-oyh
-oyh
-xpI
-vNO
-vNO
-tjN
-tjN
-vNO
-rbh
-wcn
-lJZ
-sTq
-fPH
-wwu
-rtm
-kwl
-fLv
-skU
-ksJ
-skU
-tEW
-ugs
-qHv
-fNT
-lQI
-lQI
-lQI
-lQI
-bsS
-tlt
-tlt
-uzq
-hLz
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(69,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iBI
-nPw
-jLT
-fOg
-fOg
-fOg
-nPw
-fOg
-vNO
-vNO
-vNO
-uDP
-wCT
-cCO
-vNO
-rbh
-bDr
-bDr
-sTq
-adL
-wwu
-okK
-cvC
-atU
-atU
-atU
-atU
-atU
-nTI
-okK
-fNT
-lQI
-lQI
-wXi
-cHr
-jWn
-lcJ
-jEO
-lft
-lft
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(70,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iBI
-riE
-qdV
-qdV
-qdV
-qdV
-qdV
-mCt
-mCt
-knP
-cpW
-qtf
-bQv
-oqD
-rYw
-uUG
-wpa
-wwu
-wwu
-wwu
-wwu
-wwu
-bom
-lXq
-pMW
-jzt
-jzt
-jzt
-ate
-eRu
-ncD
-fNT
-hLz
-hLz
-hLz
-hLz
-oVP
-gOU
-kWT
-lft
-omg
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(71,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-wGN
-qdV
-nkh
-mCt
-mCt
-bII
-bII
-bII
-oBj
-vNO
-vNO
-vNO
-otQ
-dAo
-amg
-vNO
-kEI
-wwu
-sbI
-jtJ
-qdF
-hat
-qfv
-lXq
-oCg
-pre
-ntM
-tvW
-rns
-eRu
-qfv
-qfv
-lLW
-kMQ
-skz
-hLz
-uXA
-uXA
-czm
-lft
-uuF
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(72,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-fZV
-ikV
-qdV
-qdV
-qdV
-qdV
-qdV
-qdV
-mCt
-poD
-oyh
-xpI
-vNO
-vNO
-vNO
-vNO
-vNO
-ocU
-wwu
-daz
-eNM
-skU
-aiR
-aiR
-gxP
-oAc
-dyW
-dyW
-jUu
-rns
-ieC
-aiR
-aiR
-skU
-ugs
-uMU
-hLz
-mwN
-uXA
-tbF
-pMo
-pMo
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(73,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-fZV
-xJC
-wYH
-wYH
-wYH
-mCt
-bII
-bII
-bII
-ebA
-lXs
-gqP
-gqP
-nRn
-lGh
-lGh
-lGh
-lMx
-wwu
-mdC
-tTB
-trE
-atU
-shi
-cdN
-oCg
-feX
-feX
-feX
-rns
-enp
-shi
-atU
-hLv
-xLs
-voG
-hLz
-vmA
-uXA
-uXA
-wpY
-uXA
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(74,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-oyh
-xJC
-qdV
-qdV
-qdV
-qwK
-qdV
-qdV
-mCt
-ebA
-lXs
-wwu
-wwu
-rbh
-tqw
-tqw
-tqw
-vWj
-wwu
-iyZ
-pAy
-veG
-ptu
-tWM
-fQl
-oCg
-tnx
-feX
-uvE
-rns
-veG
-tWM
-ptu
-veG
-qnu
-tEi
-hLz
-hLz
-kLz
-hLz
-hLz
-uXA
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(75,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-oyh
-xJC
-wYH
-wYH
-wYH
-mCt
-bII
-bII
-bII
-ebA
-lXs
-wwu
-wwu
-rLR
-tqw
-tqw
-tqw
-vWj
-wwu
-wwu
-fNT
-jjc
-bnV
-fNT
-fNT
-fNT
-fNT
-fNT
-fNT
-fNT
-fNT
-fNT
-dJy
-jjc
-fNT
-fNT
-hLz
-jzL
-cJY
-ntv
-hLz
-uXA
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(76,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-iTg
-xJC
-qdV
-qdV
-qdV
-qdV
-qdV
-qdV
-mCt
-ebA
-lXs
-gqP
-gqP
-wpa
-egD
-tqw
-ozn
-xNX
-pgS
-wwu
-xXe
-skU
-aKC
-yex
-fNT
-oRG
-feX
-feX
-feX
-hSO
-fNT
-npK
-dEO
-skU
-cSW
-fNT
-lQI
-eod
-lQI
-ozr
-hLz
-uXA
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(77,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-wdw
-xJC
-wYH
-wYH
-wYH
-mCt
-bII
-bII
-bII
-ebA
-lXs
-wwu
-wwu
-kkw
-aom
-tqw
-sbK
-icr
-aFg
-wwu
-evt
-blJ
-tqW
-syz
-hXm
-tTS
-feX
-feX
-feX
-cly
-ndd
-tuT
-lxD
-xxC
-wve
-fNT
-lcs
-vVJ
-rkE
-bVY
-pdJ
-hpW
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(78,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-iTg
-aZC
-qLS
-qLS
-qLS
-qLS
-qLS
-qfg
-qLS
-crd
-wwu
-wwu
-wwu
-nRn
-eLK
-tqw
-cWF
-dAk
-tEG
-wwu
-xsG
-veG
-dXJ
-rci
-fNT
-qMe
-feX
-feX
-feX
-fEn
-fNT
-llN
-jKK
-veG
-auQ
-fNT
-lQI
-lQI
-lQI
-dCL
-hLz
-jly
-hLz
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(79,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-mqj
-ebl
-kAE
-kAE
-jtr
-kVp
-oyh
-oyh
-wwu
-wwu
-wwu
-wwu
-rbh
-tqw
-tqw
-tqw
-sbK
-wwu
-wwu
-fNT
-jjc
-bnV
-fNT
-fNT
-fNT
-wll
-nZG
-fNe
-fNT
-fNT
-fNT
-bnV
-bnV
-fNT
-fNT
-hLz
-hLz
-hLz
-hLz
-hLz
-elX
-hLz
-hLz
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(80,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-gAW
-iTg
-gAW
-gAW
-gAW
-gAW
-gAW
-wwu
-wwu
-nAJ
-ktV
-wwu
-rbh
-tqw
-tqw
-tqw
-sbK
-wwu
-qRx
-eCJ
-kwl
-aKC
-qYJ
-myV
-fNT
-dzr
-dzr
-dzr
-fNT
-aQt
-etV
-shi
-tqW
-iWi
-wRN
-dHa
-gtO
-hLz
-uXA
-aJX
-jly
-hLz
-yhP
-hLz
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(81,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-wwu
-wwu
-wwu
-cNf
-cBb
-iCg
-wpa
-roe
-roe
-roe
-pFy
-gaf
-vlo
-cKM
-lDE
-tqW
-shi
-nWz
-lQY
-nZG
-nZG
-nZG
-bcx
-shi
-shi
-shi
-tqW
-shi
-ewd
-fRa
-lZH
-hLz
-uXA
-hLz
-jly
-vlY
-iRY
-xzP
-hLz
-hLz
-hLz
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(82,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-wwu
-wwu
-gqP
-wwu
-gqP
-wwu
-wwu
-wwu
-wwu
-nEM
-qdW
-sbw
-wwu
-cwq
-wwu
-lnU
-grA
-wwu
-wwu
-ujT
-jWz
-utV
-tqW
-tqW
-whf
-vPE
-fZP
-tYo
-csz
-gLI
-lxD
-lxD
-lxD
-lPz
-shi
-wic
-fRd
-mPH
-hLz
-uXA
-leR
-jly
-hLz
-hLz
-lSt
-wLo
-hLz
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(83,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-wwu
-gqP
-wwu
-gqP
-wwu
-wwu
-wwu
-wwu
-wwu
-xhz
-wwu
-wwu
-cwq
-hCt
-jBm
-jBm
-jBm
-wwu
-uuM
-chd
-rtv
-shi
-cml
-duC
-gTL
-mhb
-aTU
-pfn
-bfW
-rrm
-rrm
-rrm
-kIR
-atU
-foa
-iOQ
-gET
-ngL
-uXA
-hLz
-jVu
-usV
-hLz
-hLz
-fGy
-hLz
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(84,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-cwq
-cwq
-cwq
-cwq
-cwq
-cwq
-cwq
-hgC
-cwq
-cwq
-cwq
-cwq
-cwq
-wwu
-qdW
-nAJ
-jBm
-xuv
-xWe
-xWe
-xWe
-xWe
-xWe
-xWe
-fNT
-kwl
-miF
-bam
-rKB
-uCU
-yaX
-shi
-qKp
-shi
-sKG
-fVe
-npT
-hLz
-uXA
-hLz
-hLz
-hje
-bjC
-bjC
-bjC
-qFA
-jJu
-cLG
-gRQ
-fDO
-uWU
-iZV
-lKo
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(85,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-cwq
-iKw
-ooY
-vLz
-phI
-pch
-sxy
-sbm
-wvR
-gWY
-iWZ
-pQZ
-pJb
-wwu
-bDD
-wwu
-jBm
-xuv
-xLJ
-fYw
-dim
-rJU
-gGA
-xWe
-xHT
-rtv
-miF
-jvv
-aWE
-bho
-qia
-shi
-dhX
-shi
-ewd
-fWh
-xBd
-hLz
-uXA
-gjr
-hLz
-knM
-lQI
-lQI
-lQI
-ozr
-jJu
-nqP
-qiR
-rkZ
-kms
-wXD
-mmY
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(86,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-cwq
-dAn
-qnI
-msl
-pZH
-xuv
-xuv
-xuv
-xuv
-xuv
-xuv
-xuv
-xuv
-xuv
-jBm
-jBm
-hgn
-xuv
-qVV
-qaW
-dQX
-vds
-stp
-vlm
-tMK
-rtv
-miF
-mII
-vwd
-bjf
-qia
-shi
-dsb
-iWi
-ugv
-jxP
-gXo
-hLz
-uXA
-thw
-hLz
-tal
-lQI
-lQI
-lQI
-ozr
-jJu
-hEc
-ezR
-qUL
-jJu
-lFq
-mmY
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(87,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-kyM
-kyM
-kyM
-xWf
-xuv
-xuv
-qUC
-dya
-mKZ
-sxl
-naI
-lNN
-iGR
-xuv
-jBm
-xuv
-xuv
-xuv
-xWe
-bPO
-aHs
-mil
-afb
-vlm
-tMK
-rtv
-miF
-yiB
-jmc
-jmc
-qao
-cvM
-dvC
-qao
-jmc
-jmc
-jmc
-hLz
-uXA
-mVZ
-hLz
-tal
-lQI
-lQI
-lQI
-ozr
-jJu
-jJu
-jJu
-jJu
-jJu
-jJu
-mmY
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(88,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-pvX
-bDr
-bDr
-ctI
-xuv
-hNr
-hKm
-sSz
-sSz
-sSz
-kik
-sSz
-eLS
-xuv
-jBm
-cNm
-hnS
-oHw
-ijS
-slv
-aHV
-wLp
-ieE
-vlm
-tMK
-rtv
-miF
-cXq
-jmc
-bkj
-ccP
-cvP
-dxG
-gOd
-fnB
-gbW
-pWf
-hLz
-uXA
-uXA
-uXA
-tbh
-wNb
-wNb
-wNb
-hoK
-jJu
-kxh
-lvM
-llX
-lAh
-guk
-mmY
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(89,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-fUv
-wwu
-bFq
-ctI
-xuv
-fVi
-hKm
-qgQ
-gsn
-rzI
-gsn
-eBg
-anr
-xuv
-xuv
-xuv
-oht
-sYh
-eKd
-tTi
-vOs
-vOs
-cfh
-xWe
-fAP
-mmI
-miF
-jvv
-qao
-blS
-ffb
-ffb
-gmk
-etj
-qVf
-dan
-gcs
-hLz
-uXA
-nnK
-hLz
-lDX
-lDX
-hLz
-irV
-jly
-jJu
-hqi
-vrn
-llX
-lAh
-vWD
-bLd
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(90,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-wXc
-hrW
-gLD
-ctI
-xuv
-vQY
-hKm
-qTK
-ifA
-wTC
-vIC
-mHS
-mGK
-xDx
-pqd
-qAG
-oFY
-mBZ
-ijS
-obj
-rgx
-sEL
-biW
-xWe
-rPZ
-rtv
-miF
-jvv
-qao
-bmG
-ffb
-cyF
-gmk
-qcH
-ffb
-ffb
-gej
-hLz
-ovB
-uXA
-uXA
-uXA
-dwx
-pmA
-pmA
-nGJ
-jJu
-kJq
-kEf
-kJq
-nWk
-lDG
-mmY
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(91,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-tcM
-rua
-rua
-cwq
-xuv
-hNr
-hKm
-qTK
-qTK
-qTK
-wxi
-lcZ
-grW
-iXk
-iPG
-qAG
-aXq
-sOs
-qAG
-qAG
-qAG
-qAG
-fja
-xWe
-wlu
-rtv
-miF
-jvv
-jmc
-cIl
-dWl
-cEb
-dFy
-eAv
-jhk
-mDs
-ksr
-hLz
-rwN
-aTl
-hLz
-hLz
-htG
-hLz
-jJu
-jJu
-jJu
-vVH
-iPX
-kFb
-iZV
-xlH
-lNj
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(92,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-wwu
-nLx
-xuv
-xuv
-xuv
-swT
-swT
-ote
-llo
-ote
-iwo
-iwo
-ote
-rBI
-ote
-qAG
-sBt
-fCH
-qAG
-vnz
-jPr
-sVr
-fja
-sRZ
-tMK
-rtv
-miF
-gxr
-jmc
-jmc
-qao
-cLQ
-dRR
-qao
-jmc
-jmc
-jmc
-hLz
-hLz
-hLz
-hLz
-jIy
-hvE
-vRq
-jJu
-bSb
-clJ
-kEf
-ejl
-fCq
-rGP
-cfU
-pkr
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(93,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gqP
-gqP
-cwq
-cwq
-xuv
-qyx
-qyx
-qyx
-vxK
-jON
-jON
-jON
-vxK
-wvv
-hVK
-eLC
-tpU
-eAa
-uOV
-egz
-fHe
-fsI
-fsI
-fWD
-pOU
-foh
-vTY
-lXq
-miF
-jvv
-mcY
-svX
-cnk
-roZ
-tMp
-oFa
-fwK
-dAN
-gYN
-ewq
-hVq
-inJ
-hLz
-hLz
-chk
-hLz
-jJu
-kfL
-vjp
-mDV
-ntS
-lTZ
-fMm
-lDG
-pkr
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(94,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-cwq
-vlV
-xuv
-xOe
-aah
-qyx
-lRi
-tGa
-myS
-nqh
-wIU
-iuk
-sMx
-cIN
-cIN
-cIN
-sRz
-mcf
-cRd
-gZu
-lMN
-gZu
-cRd
-pbG
-tMK
-rtv
-miF
-jvv
-dIX
-bzF
-nGQ
-cVL
-eac
-nFu
-eEQ
-gkq
-iQH
-fOA
-fOA
-fOA
-gLE
-pmA
-nGJ
-uXA
-jJu
-rJb
-bqF
-kmk
-qrg
-sEK
-hte
-iZV
-pkr
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(95,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-hcF
-pGR
-xuv
-oZv
-qyx
-qyx
-vxK
-rgy
-acF
-xje
-vxK
-iwP
-fFu
-auU
-auU
-auU
-jFJ
-cKE
-qAG
-tIx
-omT
-vpy
-fja
-sRZ
-tMK
-rtv
-miF
-mII
-dIX
-bDU
-nGQ
-dfn
-fQf
-svX
-hZs
-mpC
-jnh
-hBT
-idw
-igS
-hLz
-cUh
-lep
-uXA
-jJu
-jJu
-jJu
-bzm
-vjp
-vjp
-pkr
-mjr
-pkr
-jJu
-jJu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(96,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gqP
-gqP
-cwq
-cwq
-xuv
-qyx
-qyx
-qyx
-vxK
-abm
-gvM
-mbA
-vxK
-dhJ
-fFu
-aow
-aow
-aow
-jFJ
-dvP
-kmR
-kmR
-kmR
-kmR
-ePa
-ePa
-swn
-rtv
-miF
-jvv
-dIX
-kcZ
-cpo
-dfR
-eas
-ePv
-fzZ
-fzZ
-hbw
-hHH
-sxe
-iBq
-hLz
-pNc
-jfK
-uXA
-uXA
-uXA
-jJu
-jJu
-jJu
-xgd
-hvc
-xgd
-hLz
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(97,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-wwu
-nLx
-xuv
-xuv
-xuv
-mRc
-mRc
-eXy
-eXy
-eXy
-eXy
-rwG
-fFu
-bfh
-lZA
-vio
-jFJ
-kJg
-kmR
-lcB
-kGf
-ooT
-wXC
-ePa
-rNg
-rtv
-miF
-jvv
-vjl
-svX
-cqV
-gKN
-ebE
-mtA
-rrR
-rrR
-hcO
-hLg
-ift
-iBx
-hLz
-fiI
-tfS
-uXA
-txQ
-uXA
-uXA
-aBo
-uKl
-uXA
-avM
-uXA
-grX
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(98,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-cti
-cwq
-cwq
-cwq
-wwu
-qAq
-aax
-nje
-acJ
-dZW
-noe
-jEX
-fFu
-bfh
-iBo
-vio
-jFJ
-lwg
-tUg
-xdJ
-cGA
-mNT
-hkK
-ePa
-bpq
-rtv
-miF
-ksw
-hLz
-hLz
-hLz
-hLz
-pDL
-heC
-caP
-jjF
-hkZ
-jjF
-jjF
-jjF
-hLz
-hLz
-hLz
-uXA
-irV
-rwN
-uXA
-aBo
-uXA
-mta
-lQI
-ekB
-gbj
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(99,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-wwu
-xsf
-wwu
-cwq
-wwu
-brn
-nWJ
-unE
-rDF
-rDF
-dtb
-drA
-lyx
-kWN
-tYn
-axR
-mhT
-jFr
-sif
-lvS
-cSb
-mUJ
-jnV
-sif
-fur
-rtv
-miF
-jvv
-hLz
-roz
-fGJ
-hLz
-jjF
-jjF
-jjF
-jjF
-mxd
-jjF
-iit
-gJp
-jjF
-uek
-hLz
-uXA
-rLd
-vCG
-uXA
-uXA
-uXA
-iBL
-lQI
-ekB
-xYK
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(100,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-qLo
-qOh
-wwu
-hcF
-wwu
-wwu
-oSZ
-xUU
-uGQ
-dZW
-eXy
-kjc
-fFu
-xCU
-jpQ
-auF
-jFJ
-fJo
-sif
-lvS
-kUk
-aRK
-jnV
-sif
-qfv
-rtv
-miF
-wKr
-rZi
-uXA
-uXA
-hLz
-vpp
-eUJ
-cCK
-glY
-cvE
-jjF
-ilG
-iPr
-jgJ
-tnA
-hLz
-uXA
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-fRm
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(101,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gqP
-gqP
-sxK
-uVj
-iCg
-cwq
-cwq
-wwu
-wwu
-wwu
-wwu
-eXy
-eXy
-xoF
-fFu
-jqD
-bjZ
-jqD
-jFJ
-qWv
-kmR
-iaq
-iOe
-vfI
-jnV
-lCz
-iON
-rtv
-miF
-imR
-hLz
-bYp
-hCK
-hLz
-oLB
-eXg
-fED
-hbz
-xSb
-hSH
-ilV
-qBk
-jjF
-mOK
-hLz
-uXA
-hLz
-dOv
-cDh
-cvm
-kvE
-pjf
-kvE
-hLz
-ssM
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(102,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-qOh
-uVj
-wwu
-gjh
-cwq
-cwq
-cwq
-cwq
-xuv
-uKn
-hMV
-lIL
-fFu
-kEF
-uHR
-ngk
-jFJ
-fko
-sif
-lvS
-mlL
-aSb
-jnV
-tVz
-qfv
-rtv
-miF
-kbx
-hLz
-hLz
-uXA
-hLz
-emP
-rWm
-fKs
-gqm
-htq
-jjF
-jjF
-jjF
-jjF
-hLz
-hLz
-uXA
-hLz
-jLk
-vIO
-xXv
-lqf
-xXv
-pjf
-hLz
-fRm
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(103,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-qqu
-hJD
-wwu
-wwu
-wwu
-wwu
-qdC
-cwq
-xuv
-njc
-cgM
-lIL
-fFu
-auU
-auU
-auU
-mIq
-eho
-brs
-bau
-iRD
-nFQ
-oId
-hFS
-qfv
-rtv
-miF
-wmW
-hLz
-uXA
-uXA
-hLz
-enl
-ljf
-qnO
-cZT
-qbr
-nNT
-bMJ
-iVY
-jgO
-hLz
-wwQ
-uXA
-hLz
-dSv
-fiz
-btq
-xXv
-vsU
-kvE
-kYV
-fRm
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(104,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gqP
-gqP
-qOh
-qOh
-tDI
-xYg
-pzT
-wwu
-lkZ
-cwq
-xuv
-hzv
-xLc
-mZJ
-viL
-llh
-llh
-llh
-ivD
-wiL
-kmR
-aFB
-aFB
-aFB
-aFB
-sif
-qfv
-rtv
-miF
-yiB
-hLz
-uXA
-hLz
-hLz
-hLz
-hLz
-hLz
-hLz
-ilY
-hLz
-pLy
-vlh
-joh
-hLz
-aQU
-uXA
-hLz
-jJa
-pwL
-vVD
-qmC
-iOV
-vNr
-tbI
-lzf
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(105,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-uVj
-vBP
-sbm
-cQj
-nOZ
-wwu
-cja
-cwq
-isz
-pUr
-nVB
-sYD
-ayc
-ryu
-ryu
-ryu
-fTd
-iAk
-kmR
-boL
-hzf
-aSq
-tDV
-ePa
-bom
-rtv
-miF
-gxr
-hLz
-uXA
-uXA
-uXA
-uXA
-uXA
-uXA
-uXA
-uXA
-hLz
-hLz
-hLz
-hLz
-hLz
-xvz
-uXA
-hLz
-hZP
-pJf
-oaC
-uJr
-pJf
-owM
-uTb
-fRm
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(106,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-uVj
-hHa
-wwu
-wwu
-wwu
-wwu
-aWf
-hmH
-xuv
-rWT
-rWT
-wIJ
-wIJ
-wIJ
-avi
-epB
-mci
-kKa
-kmR
-kmR
-kmR
-kmR
-ePa
-ePa
-alr
-rtv
-miF
-kfm
-hLz
-hLz
-hLz
-hLz
-hLz
-jKB
-uJn
-ppX
-uXA
-sWp
-uXA
-uXA
-uXA
-uXA
-uXA
-uXA
-hLz
-dPh
-kGz
-xYC
-ucB
-cOM
-bKq
-kYV
-lzf
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(107,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-jYo
-wwu
-wwu
-gvQ
-mtL
-xEo
-tXg
-cwq
-xuv
-odz
-ahG
-alK
-anA
-wIJ
-wIJ
-avi
-mci
-qSz
-qAG
-jME
-jdR
-mem
-fja
-sRZ
-tMK
-mmI
-miF
-jvv
-gZf
-kRI
-uqC
-pXT
-hLz
-hLz
-hLz
-lyK
-uXA
-hLz
-tWL
-sil
-fIX
-vXh
-cXJ
-uXA
-hLz
-eaB
-hKv
-rSU
-kYt
-xIE
-lpH
-hLz
-uXA
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(108,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-tXg
-tXg
-hgC
-cwq
-xtC
-nLx
-cwq
-cwq
-ksX
-mwL
-djv
-mwL
-qbh
-aoW
-wIJ
-wIJ
-kaU
-cvA
-qdc
-aHR
-pOk
-jXu
-qdc
-xLU
-htr
-hZL
-aTU
-nys
-iJt
-pEJ
-mJg
-mJg
-mJg
-ket
-hLz
-ePs
-vXT
-vXT
-vXT
-twP
-ssy
-kYm
-mvN
-uXA
-hLz
-eaB
-wdX
-lpH
-sfe
-emp
-lpH
-hLz
-uXA
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(109,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-rWo
-nAJ
-kEI
-xuv
-xuv
-xuv
-xuv
-xuv
-xuv
-nAU
-ivY
-bdD
-iXa
-ape
-aoW
-wIJ
-fsI
-skv
-fHe
-fsI
-fsI
-fsI
-ssL
-mYV
-wmz
-rhR
-miF
-jvv
-fgD
-lVk
-gqi
-gqi
-pVK
-hkw
-hLz
-djs
-lQI
-lQI
-lQI
-rvL
-rvL
-rvL
-rvL
-rvL
-rvL
-rvL
-rvL
-rvL
-rvL
-hLz
-hLz
-hLz
-uXA
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(110,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-wwu
-wwu
-muI
-xuv
-hge
-hge
-hge
-oiO
-ijV
-pKO
-aiN
-jDc
-anN
-vIp
-dkQ
-wIJ
-fsI
-cTV
-qAG
-iMK
-bsz
-ksx
-fja
-bkH
-tMK
-rtv
-miF
-wIG
-jzq
-oxo
-qAv
-oWY
-eQH
-bSV
-rvL
-rvL
-rvL
-rvL
-rvL
-rvL
-qAF
-nxL
-xCC
-ocH
-mLY
-rks
-ozt
-ozt
-rvL
-uXA
-uXA
-uXA
-uXA
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(111,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-kct
-gkX
-hcj
-xuv
-wUU
-dJI
-hge
-gKp
-qXi
-agl
-cLt
-rdJ
-jRI
-sDg
-rWT
-rWT
-ati
-onT
-qAG
-qAG
-qAG
-qAG
-qAG
-dpL
-iVH
-rtv
-miF
-jvv
-fNT
-fNT
-fNT
-qGm
-eQH
-tyi
-dCx
-mWd
-dRX
-axQ
-iwN
-cmG
-gjP
-quV
-iJX
-xAO
-rNb
-mWc
-ozt
-ozt
-rvL
-uXA
-hLz
-ceH
-tlt
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(112,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-cRH
-dJf
-hcj
-xuv
-hge
-aak
-hge
-oiO
-aeX
-agn
-agn
-agn
-jVo
-ggD
-rWT
-uNp
-qyk
-oSb
-qUO
-dpL
-uHf
-kAe
-vgo
-dpL
-lCh
-rtv
-miF
-jvv
-aUl
-wkX
-iqL
-eYm
-dTn
-tyi
-tyi
-xwM
-vtO
-xIh
-vzu
-cmG
-cmG
-rdF
-cmG
-wVY
-wVY
-wVY
-wVY
-wVY
-rvL
-uXA
-tVB
-iiQ
-tlt
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(113,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wwu
-wwu
-wwu
-wwu
-dKz
-xuv
-hge
-rhC
-hge
-oiO
-afz
-lIh
-mis
-txR
-dDk
-vsM
-xad
-uaX
-puG
-smv
-cyb
-bsB
-iOp
-rUD
-sih
-dpL
-fNT
-xJs
-iRg
-aYA
-fNT
-fNT
-wkX
-qGm
-ion
-mdU
-kJY
-ltb
-vtO
-bjF
-pcy
-cmG
-kqy
-uHu
-kQO
-wVY
-pdW
-nlL
-ieP
-gyf
-qFO
-wVO
-uXA
-uXA
-tlt
-hLz
-hLz
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(114,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-kRG
-sUj
-sUj
-rkM
-rkM
-rkM
-rkM
-rkM
-rkM
-rkM
-fKr
-fKr
-rWT
-ujc
-rWT
-mCI
-kXZ
-wbS
-eGF
-dpL
-hGG
-bvx
-btp
-dpL
-fqo
-fqo
-kcK
-oGL
-fqo
-fNT
-qMe
-qGm
-pPI
-qTg
-wkf
-orQ
-kis
-iDk
-sYl
-cmG
-bTm
-mNb
-nFr
-wVY
-mbv
-xQo
-uCV
-gNm
-lcv
-aal
-xhf
-kpX
-aal
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(115,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-bir
-sUj
-qEy
-rkM
-rBF
-pxL
-can
-kuh
-cLI
-yaq
-nxe
-mTo
-rkM
-rkM
-rkM
-mrh
-ivs
-iNO
-dpL
-dpL
-dpL
-dpL
-dpL
-dpL
-fNT
-alL
-tjP
-jVt
-fNT
-fNT
-fNT
-qGm
-qGm
-qGm
-qGm
-dAp
-ckQ
-xcG
-qfV
-cmG
-cmG
-gsp
-cmG
-wVY
-akU
-xQo
-kor
-tBr
-lcv
-hCh
-uAe
-adq
-xQG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(116,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-sUj
-xVn
-rkM
-wCc
-ezQ
-qzo
-aPf
-qrx
-eUn
-jTM
-oXE
-xZX
-dpP
-rkM
-mGd
-shk
-wbS
-dpL
-tIe
-psn
-aLO
-fNT
-lZS
-idn
-shi
-miF
-nWz
-nIh
-nYt
-rtv
-feX
-feX
-feX
-qGm
-cmG
-cmG
-qFC
-cmG
-cmG
-gCP
-mhp
-iNp
-wVY
-sIH
-hWV
-kpR
-fDZ
-lcv
-aal
-ydS
-adq
-maQ
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(117,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-rkM
-rkM
-xKj
-xKj
-ntl
-aCd
-rQG
-qEb
-eBf
-rJC
-pbk
-dKU
-rkM
-oOR
-kvB
-eao
-ktM
-pEu
-flx
-pEu
-axK
-lPj
-uPQ
-mge
-loK
-umC
-nIN
-gYX
-nIN
-feX
-feX
-feX
-qGm
-mZS
-vKz
-oHs
-vXP
-rOm
-bTR
-gWZ
-nfH
-iGY
-stS
-wzJ
-fXb
-wDf
-lcv
-cKs
-cMh
-pzx
-cSK
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(118,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-tgF
-uzH
-fiA
-fiA
-wIP
-tXB
-gup
-vsk
-tPj
-drm
-aWJ
-giq
-rkM
-ueO
-puG
-eep
-dpL
-jyL
-psn
-nzO
-fNT
-fqo
-iNz
-shi
-siq
-nWz
-xXU
-nYt
-rtv
-feX
-feX
-feX
-qGm
-xxw
-iff
-xpM
-gSx
-qnB
-aPE
-tJn
-hPq
-xZB
-ccU
-bOx
-hRd
-biZ
-lcv
-aal
-xhf
-lTN
-aal
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(119,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-kwL
-oFI
-txu
-gfg
-waI
-cHd
-oFH
-sgc
-rkM
-gzM
-iot
-vbQ
-rkM
-qxh
-lhW
-wbS
-dpL
-qun
-qun
-qun
-qun
-qun
-fNT
-lIC
-uKW
-gEa
-fNT
-fNT
-wva
-fNT
-fNT
-fNT
-qGm
-syV
-wPX
-xKq
-nCG
-nge
-goX
-oJs
-nCG
-mrG
-mrG
-mrG
-mrG
-mrG
-lcv
-vyA
-nXb
-lRl
-lfy
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(120,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-pXg
-ivo
-txu
-uHZ
-txu
-wFC
-lhS
-eSJ
-jBR
-gzM
-vIa
-gIb
-ewK
-vjX
-gzM
-kXZ
-tuX
-avH
-maW
-haL
-nQS
-qBg
-qun
-elB
-elB
-xdK
-khx
-elB
-ldb
-fVF
-fQs
-fVF
-bjP
-jRO
-ihm
-wyE
-xKq
-lTO
-rac
-srK
-keJ
-bfM
-jxj
-pwF
-nCG
-rvD
-hZq
-lcv
-iiA
-iiA
-ugP
-lfy
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(121,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-quW
-nEi
-txu
-jml
-fdp
-wWJ
-ffi
-eVl
-gzM
-feP
-sTT
-pGb
-jGf
-dhb
-puG
-qZA
-avH
-maW
-nQS
-uJD
-eTH
-qun
-qun
-wrb
-wGY
-bap
-qHW
-qHW
-qHW
-qHW
-jAZ
-qHW
-jRO
-eCO
-wyE
-xKq
-hab
-dZz
-bPP
-xhJ
-giy
-cKv
-cZG
-meH
-cqP
-dfa
-lcv
-iiA
-iiA
-yeB
-fjx
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(122,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-aYs
-pyO
-pyO
-oYI
-cdd
-rkM
-gzM
-gzM
-rkM
-ddO
-uqv
-bLi
-aip
-gzM
-swk
-tYg
-nXJ
-maW
-rxL
-rxL
-emI
-vbP
-qun
-jyD
-jLQ
-sGu
-heR
-tBY
-nhJ
-vYl
-pDS
-doT
-kKr
-tam
-wyE
-bCp
-nCG
-pwS
-uCv
-cgb
-cgb
-ybe
-wnq
-nCG
-piG
-pdf
-lcv
-qqY
-lxG
-kcy
-jIY
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(123,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-rkM
-rqK
-hNA
-wqx
-rkM
-rkM
-whw
-whw
-qXj
-npF
-hML
-iCE
-iCE
-qun
-qun
-kjo
-tpV
-qun
-uUg
-nQS
-nQS
-nQS
-qun
-tKl
-jLQ
-sGu
-heR
-qRy
-cht
-sYb
-kUO
-hpz
-kKr
-hPX
-wyE
-xhc
-nCG
-sMI
-gEl
-wRD
-vPN
-cvn
-tyj
-nCG
-qiF
-vLL
-lcv
-ybG
-vph
-ybG
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(124,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-vlQ
-vLd
-olC
-auv
-rUh
-rkM
-vzZ
-vzZ
-gws
-npF
-lcT
-cvK
-eFO
-qun
-qNG
-qtp
-rjm
-ibw
-lRu
-dEb
-tKA
-nQS
-eHc
-cCc
-jLQ
-sGu
-heR
-ilg
-gmj
-unV
-noh
-qiw
-kKr
-tam
-oKR
-xKq
-nCG
-xEv
-rBt
-aDp
-xug
-sgm
-eYQ
-nCG
-nCG
-nCG
-lcv
-ybG
-jTH
-eVQ
-agV
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(125,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-cRU
-eHf
-iuW
-eHf
-dGa
-rkM
-uJq
-nuv
-cLA
-npF
-lcT
-aAE
-dJs
-qun
-nVT
-iCi
-wTO
-maW
-rxL
-doJ
-dEb
-doJ
-eHc
-cCc
-jLQ
-sGu
-heR
-dnH
-tld
-rho
-noh
-aFm
-kKr
-xIk
-wyE
-xKq
-nCG
-pdY
-lGp
-xKy
-wHq
-sPg
-hxy
-nCG
-nzJ
-nzJ
-lcv
-gPJ
-gPJ
-gPJ
-xit
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(126,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-rXg
-dtm
-jdC
-bID
-tRU
-rkM
-hDb
-cvK
-cLA
-npF
-lcT
-eFO
-pAV
-qun
-lYU
-qtp
-pKA
-evi
-oOE
-iie
-nQS
-tKA
-eHc
-cCc
-jLQ
-vmH
-qHW
-kKr
-pQW
-kKr
-fbD
-kKr
-kKr
-xhh
-eBo
-vOn
-nfv
-nfv
-ceF
-ceF
-ceF
-ceF
-nfv
-nfv
-mHh
-obX
-lcv
-hAg
-kFd
-hAg
-jHr
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(127,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-rkM
-rkM
-rkM
-fMu
-rkM
-rkM
-rkM
-pov
-gBN
-uOY
-npF
-eKD
-biJ
-mwB
-qun
-hCV
-jVT
-uaV
-maW
-aUh
-aUh
-ukI
-dEb
-eHc
-cCc
-jLQ
-sGu
-nOO
-aHY
-ihp
-iFi
-noh
-kMv
-kKr
-iuu
-wyE
-oVZ
-nUa
-lwD
-kyO
-sKw
-mxN
-mxN
-isG
-nRQ
-tZO
-tZO
-knW
-hAg
-lrA
-ptl
-biS
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(128,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-sUj
-sUj
-sUj
-fij
-hQl
-oqU
-dYq
-rkM
-frw
-iBj
-pzb
-una
-efX
-pzb
-frw
-qun
-maW
-oGF
-maW
-ibw
-nQS
-hIn
-nQS
-guT
-eHc
-hBG
-jLQ
-sGu
-nOO
-cbu
-xsi
-xsi
-epO
-eDC
-kKr
-jYe
-wPX
-xKq
-bYB
-ckR
-gtu
-kZl
-sEA
-oVa
-mjA
-pWA
-lcr
-tIu
-lcv
-hAg
-lUd
-szC
-jHr
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(129,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-fov
-vnK
-qKR
-vnK
-iDh
-iDh
-dYq
-rkM
-rkM
-rkM
-jgU
-rkM
-rkM
-rkM
-rkM
-qun
-nOR
-npu
-gEv
-ibw
-maW
-ibw
-maW
-ibw
-ibw
-ubi
-jLQ
-sGu
-nOO
-ihj
-aog
-aog
-sSO
-aIe
-kKr
-sHd
-wyE
-xKq
-bYB
-oON
-pPQ
-wNu
-ldr
-byW
-yls
-kdE
-lbu
-sgF
-lcv
-gzw
-gzw
-gzw
-rHP
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(130,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-gjC
-hJU
-uZg
-fij
-sjW
-pog
-rwc
-vnK
-pQP
-eDt
-uDB
-vnK
-iaf
-sgT
-xRH
-lti
-wtw
-tUq
-hFL
-maW
-mwz
-nQl
-vLv
-ibw
-ehh
-xYM
-jLQ
-sGu
-nOO
-gOZ
-xVR
-tfA
-htD
-rmD
-kKr
-tam
-wyE
-xKq
-bYB
-lfu
-dNm
-mjA
-mjA
-kBk
-rJv
-kvO
-qno
-mxN
-lcv
-gUR
-wxd
-aNV
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(131,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-ehl
-sQT
-mOb
-vnK
-vnK
-gih
-vnK
-vnK
-ocX
-iMX
-uDB
-vnK
-pXR
-aIY
-joU
-qun
-rUJ
-lQb
-pCf
-bcC
-bcC
-bcC
-sLX
-djH
-wcG
-ybm
-jLQ
-jES
-qHW
-kKr
-pQW
-kKr
-gQy
-kKr
-kKr
-oSi
-exl
-qvv
-ohF
-tpi
-cgp
-rpp
-laj
-uHq
-iWu
-iWu
-kMC
-fPl
-lcv
-pMR
-vSE
-gty
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(132,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-vnK
-vnK
-uZg
-oGo
-sHv
-kpt
-kRS
-hvf
-kRS
-kRS
-kRS
-cpg
-sjf
-aIY
-vvs
-qun
-wMf
-nyg
-rfn
-rfn
-rfn
-rfn
-hFL
-maW
-roa
-xYM
-jLQ
-aWc
-qGb
-dnH
-kgl
-dBO
-nxN
-kKr
-emu
-jdP
-wyE
-oOa
-nUa
-iRF
-scD
-fIU
-mbb
-kiO
-kyO
-kAU
-kyO
-rdl
-lcv
-eeL
-ybG
-ybG
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(133,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-fov
-pro
-uZg
-gQA
-wJI
-vnK
-tTw
-cnL
-wug
-uKz
-cgc
-vnK
-vvm
-nfR
-huz
-qun
-tll
-ntU
-vKB
-rfn
-niK
-rfn
-oig
-bQY
-wTS
-xYM
-jLQ
-aWc
-qGb
-ilg
-mDp
-unV
-fTN
-xlk
-gDM
-jdP
-oKR
-cCX
-nrm
-oxn
-oxn
-oxn
-oxn
-oxn
-kCA
-pmX
-oxn
-oxn
-lcv
-sEd
-ybG
-mDI
-cFq
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(134,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-ggg
-pro
-kpt
-cYh
-qOQ
-vnK
-vnK
-vnK
-vnK
-jxK
-aQV
-iOA
-qun
-qun
-qun
-qun
-qun
-qun
-vWg
-oyv
-abk
-iqC
-tGS
-maW
-xni
-xYM
-jLQ
-aWc
-qGb
-cDa
-nPG
-olS
-aXH
-pRa
-xue
-qvi
-rnU
-oOa
-beM
-oxn
-bna
-usp
-wcA
-kod
-crr
-pbJ
-tdn
-qcI
-lcv
-kri
-ybG
-hQO
-voO
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(135,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-vnK
-mWH
-vnK
-vnK
-wJI
-vnK
-wsH
-lpB
-vnK
-wGl
-wGl
-iOA
-xEj
-ffN
-iLJ
-win
-gle
-qun
-qun
-qun
-qun
-ibw
-ibw
-ibw
-vsx
-bYg
-jLQ
-aWc
-qGb
-aCl
-lLC
-lzb
-ipI
-jSC
-gDM
-jna
-uMW
-kNZ
-gxU
-oxn
-xgm
-xDl
-ozL
-usl
-lKw
-aCw
-tdn
-tdn
-lcv
-aal
-nZZ
-aal
-aal
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(136,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-voA
-wJI
-wJI
-qvk
-sff
-eOf
-erN
-wGl
-wGl
-iOA
-hwQ
-rIp
-aBK
-kiA
-win
-nHC
-oJp
-oMz
-aBK
-fjQ
-oDI
-thD
-vsx
-jEk
-jLQ
-qOH
-qHW
-tIm
-xoM
-qty
-kKr
-kKr
-nrm
-pVP
-izt
-pVP
-nrm
-oxn
-mYs
-cuC
-udb
-udb
-oIl
-iYM
-tdn
-wlo
-lcv
-aSs
-nca
-vTS
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(137,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-fdr
-vnK
-hbe
-lNA
-vnK
-imm
-ojU
-vnK
-lci
-lci
-iOA
-ocO
-frz
-aBK
-kpx
-iIM
-sJn
-iCD
-eBY
-aBK
-ozy
-fYj
-kBc
-vsx
-xYM
-jLQ
-yka
-mtI
-ggp
-hOX
-qob
-aHk
-eEZ
-twY
-tia
-cwz
-twY
-twY
-oxn
-oUE
-eIw
-bvL
-ueG
-fnW
-iYM
-tdn
-tdn
-lcv
-uAe
-nca
-vae
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(138,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pqo
-nrL
-wJI
-vnK
-vnK
-vnK
-vnK
-vnK
-vnK
-vnK
-sHB
-iOA
-iOA
-sJn
-aBK
-aBK
-aBK
-jxD
-aBK
-fhN
-aZm
-aBK
-mDm
-vrs
-cTw
-vsx
-xYM
-jLQ
-tDb
-gvp
-gVI
-qtM
-xNd
-ihL
-hwV
-hYk
-qXX
-usf
-iog
-sar
-gvN
-uIw
-mrS
-vNo
-ssw
-fnW
-iYM
-tdn
-uPc
-lcv
-lph
-nca
-pYg
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(139,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-ndL
-vnK
-vaC
-dUU
-tdA
-dnJ
-cTJ
-wvg
-mqc
-mRQ
-dVV
-xNy
-sPp
-mcI
-rPC
-sJn
-lJu
-dPk
-aBK
-vnR
-tNe
-sIz
-bSX
-ybm
-jLQ
-mJJ
-mFz
-suB
-mve
-amM
-dfB
-ask
-jIs
-buR
-gxX
-aGr
-hBe
-dxY
-mdZ
-iVs
-usl
-usl
-eQP
-uTX
-oxn
-oxn
-lcv
-lcv
-lcv
-lcv
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(140,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fLx
-qNw
-ahS
-xXF
-xeM
-geb
-gns
-fcz
-wGl
-wGl
-xZl
-lba
-iOA
-rMR
-kpx
-gHU
-rPC
-dqm
-aBK
-wRc
-wRc
-wRc
-wRc
-sKm
-sKm
-sKm
-sKm
-cdm
-jLQ
-aYU
-gvp
-ffh
-lbi
-blH
-ihL
-hwV
-opE
-opE
-xNH
-opE
-opE
-dAF
-wPS
-aKA
-iDe
-iDe
-mMi
-mMi
-fYa
-jpB
-mzh
-jZe
-ksH
-pMf
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(141,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pqo
-nrL
-wJI
-vnK
-vnK
-mgq
-iPV
-kVm
-wGl
-gIa
-whL
-iOA
-utl
-doh
-gJz
-rPC
-hwQ
-piz
-aWO
-nEl
-edT
-rBT
-tEK
-lAD
-eUq
-ttb
-wQu
-jLQ
-dyG
-mtI
-gYa
-jIi
-csR
-aHk
-vOo
-xlu
-dzM
-puH
-dzM
-gBV
-oxn
-fES
-sKa
-fES
-bqQ
-gvx
-sKz
-ksv
-tQN
-ciC
-uQN
-wmQ
-wba
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(142,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-vnK
-eQD
-hgB
-sDp
-fzG
-jlJ
-eYp
-wXs
-iOA
-dwN
-eDl
-ovY
-rPC
-tpW
-flD
-bAq
-ouX
-ouX
-ouX
-wdj
-jgx
-fgz
-hUA
-xYM
-jLQ
-usK
-ilR
-vVR
-hHe
-sno
-aHk
-wdd
-fqn
-wis
-slP
-iAQ
-tZZ
-aZW
-aZW
-aZW
-iSP
-iSP
-iSP
-lRW
-rWx
-fdW
-lqx
-ujd
-kHM
-tWK
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(143,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pqo
-nrL
-wJI
-vnK
-lCR
-vnK
-vnK
-vnK
-uJi
-vnK
-vnK
-iOA
-dfU
-pZm
-wJy
-rPC
-dVV
-bLm
-yhv
-bLy
-aVD
-wym
-uVz
-jgx
-kAm
-hUA
-xYM
-jLQ
-jay
-grN
-cqy
-ouD
-dUj
-sRR
-vSA
-rwv
-dzM
-vNV
-hwV
-gHO
-yba
-lfW
-aZW
-pOK
-nqM
-qQM
-dHR
-iux
-fdW
-lqx
-oXN
-vym
-ssB
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(144,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-fdr
-vnK
-oHr
-iBv
-oyt
-jUJ
-iDh
-vnK
-dVf
-iOA
-bsX
-bIy
-riF
-rPC
-hwQ
-bLm
-coH
-xMk
-oPY
-hgK
-eCf
-jgx
-uae
-hUA
-xYM
-jLQ
-aWc
-grN
-wMN
-tsN
-dhZ
-sRR
-tOW
-rwv
-bCd
-dzM
-gcm
-txp
-aaU
-coZ
-aZW
-aYB
-xcY
-gEZ
-kUW
-iux
-fdW
-quE
-eDm
-fKS
-cnz
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(145,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-okI
-oHr
-uyL
-oyt
-uhu
-iDh
-vnK
-dVf
-iOA
-joT
-pCU
-pHu
-rPC
-xyd
-aBK
-gef
-qVv
-qVv
-vzY
-aqW
-esu
-pRD
-ttb
-iTw
-jLQ
-dUh
-grN
-rmd
-sFG
-loQ
-sRR
-tDX
-kRM
-dzM
-wLC
-dzM
-sOT
-twY
-twY
-qcr
-xcY
-otX
-gEZ
-dHR
-gjb
-ivL
-ivL
-ivL
-ivL
-ivL
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(146,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-dMV
-vnK
-vnK
-vnK
-ogA
-nFq
-vnK
-dVf
-iOA
-iOA
-iOA
-iOA
-hQE
-aBK
-aBK
-rdH
-rdH
-rdH
-rdH
-dTJ
-neX
-sKm
-sKm
-jEk
-jLQ
-aje
-grN
-aTc
-gxi
-woE
-biz
-dzM
-kUl
-ghy
-dzM
-dYM
-scx
-dzM
-dzM
-qcr
-xcY
-nKY
-mjg
-ehO
-iux
-quC
-wDa
-jXv
-xID
-uAW
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(147,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wtC
-fov
-vnK
-tdK
-vnK
-sLl
-pog
-vnK
-dVf
-dVf
-dVf
-dVf
-iOA
-mnM
-fWa
-aBK
-vvX
-yix
-yix
-yix
-kBX
-yix
-gCM
-ttb
-xYM
-jLQ
-lCG
-grN
-voB
-pZZ
-gBz
-sRR
-xqZ
-jTK
-dzM
-dzM
-dzM
-ijd
-vOo
-vOo
-qcr
-xcY
-rEp
-gEZ
-dHR
-mni
-ivL
-xbN
-pOi
-rxz
-hdS
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(148,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-nmK
-pmn
-vnK
-tnN
-xYQ
-pjX
-pog
-vnK
-vnK
-vnK
-vnK
-dVf
-iOA
-qGa
-fhy
-dWT
-dtJ
-cdc
-cdc
-cdc
-fHd
-vwQ
-aNm
-fXr
-xYM
-jLQ
-pGs
-kMN
-tEe
-fYt
-loQ
-sRR
-qPu
-sEl
-vOo
-xwZ
-vOo
-aRz
-aaU
-ilI
-aZW
-vXx
-xcY
-gEZ
-wcH
-iux
-cuL
-aVX
-xBi
-xYL
-gss
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(149,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-xyM
-kMk
-gFO
-bAP
-bAP
-gFO
-gFO
-xVt
-gEL
-vnK
-dVf
-iOA
-wFM
-emS
-aBK
-fhC
-dJx
-fRN
-wlZ
-mqx
-wlZ
-tUx
-ttb
-sLI
-jLQ
-pps
-grN
-eTJ
-rep
-tVi
-sRR
-qsj
-iDr
-thd
-bYb
-bnC
-dXy
-thd
-aHK
-aZW
-bwE
-wat
-ydn
-tfX
-iux
-cuL
-aVX
-vqd
-ykS
-uFk
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(150,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-vnK
-vnK
-kEp
-ejI
-tiX
-uIP
-wug
-gFO
-vnK
-vnK
-vnK
-iOA
-aBK
-aBK
-aBK
-ttb
-ttb
-ttb
-pCg
-lYd
-pCg
-ttb
-ttb
-uUF
-jLQ
-tWv
-grN
-grN
-grN
-grN
-grN
-qvN
-qvN
-qvN
-qvN
-aZW
-fEj
-aZW
-aZW
-aZW
-ylR
-ylR
-ylR
-qyF
-wCC
-cuL
-adB
-jbt
-sBJ
-vOZ
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(151,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-wJI
-wJI
-vnK
-vnK
-vnK
-vnK
-vnK
-vnK
-kEY
-vnK
-dVf
-vnK
-qiJ
-mmA
-pei
-vsy
-ttb
-okr
-oyR
-bFH
-esk
-bFH
-dUi
-hMg
-sUy
-dVW
-fzy
-rES
-kzK
-xzA
-kzK
-kzK
-fou
-eAV
-hrw
-jRO
-vJF
-nlc
-gCw
-slI
-fqu
-mFV
-omk
-vrA
-ibk
-mtV
-gaL
-gaL
-gaL
-gaL
-gaL
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(152,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vnK
-vnK
-cDq
-wJI
-vnK
-dVf
-dVf
-dVf
-sKC
-fCx
-wOv
-sKC
-dVf
-vnK
-ahO
-dVi
-gHi
-qeu
-eyJ
-gst
-rCW
-lia
-rMY
-cJI
-cJI
-dbN
-fwM
-ilA
-tJZ
-kqG
-rpa
-rpa
-rpa
-nhA
-dQH
-jdx
-jNH
-jRO
-aeS
-rlB
-wLV
-uMK
-aZs
-fSO
-aKF
-vrA
-ffA
-dUF
-gaL
-iMF
-jzN
-haB
-bYX
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(153,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dEt
-dEt
-dEt
-wuA
-vnK
-vnK
-vnK
-vnK
-vnK
-vnK
-oSL
-vnK
-vnK
-amt
-iRm
-atv
-wiv
-lbq
-eyJ
-xmh
-rCW
-kzK
-xEh
-kzK
-kzK
-qrK
-nFt
-nFt
-nFt
-sNJ
-kzK
-kzK
-rpa
-kzK
-jSW
-nrX
-mkE
-gQx
-avX
-xWy
-pfd
-fQH
-aUV
-oDi
-fgB
-cBJ
-hEO
-dvA
-sCp
-ecl
-lSw
-nce
-yal
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(154,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dEt
-dEt
-gTs
-opN
-dEt
-ehA
-xtF
-dEt
-deG
-xPu
-gXs
-xPu
-oSw
-amt
-lyv
-udZ
-udZ
-uTL
-amt
-qlq
-irI
-jZS
-kNA
-hXr
-pYf
-ttb
-pPx
-pPx
-pPx
-ttb
-tRw
-hIe
-wGg
-jZS
-hbj
-cle
-bWz
-jRO
-wmN
-qAh
-rAu
-lVE
-hXt
-qAh
-oyy
-vrA
-ksB
-blN
-dyo
-laf
-iOr
-ylV
-lOq
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(155,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dEt
-dEt
-wWk
-opN
-wuA
-mPw
-mPw
-dEt
-xPu
-deG
-cpm
-deG
-eMp
-eyJ
-hbi
-mPv
-hqy
-yaR
-amt
-ttb
-ttb
-muB
-iGq
-ttb
-ttb
-ttb
-nJU
-nFt
-jTE
-ttb
-ttb
-ttb
-mTH
-muB
-ttb
-aal
-aal
-lcv
-tTC
-nCK
-nuE
-sWW
-nCK
-nCK
-nCK
-vrA
-bPK
-tNG
-sCp
-lct
-oET
-xoX
-uik
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(156,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dEt
-dEt
-thi
-wQA
-dEt
-jGg
-mPw
-dEt
-xPu
-xPu
-hAk
-gXs
-deG
-eyJ
-csC
-wsY
-lYe
-aQC
-mwO
-ttb
-hyt
-hoj
-nVi
-uZm
-ttb
-uVR
-xmQ
-xmQ
-xmQ
-knd
-ttb
-khm
-wFq
-hoj
-lsQ
-aal
-xJT
-lcv
-vce
-ltZ
-oXb
-ydG
-aII
-fJU
-maD
-vrA
-jVg
-lcv
-lcv
-lcv
-lcv
-lcv
-lcv
-lcv
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(157,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dEt
-dEt
-cGu
-cGu
-dEt
-wVT
-mPw
-dEt
-xPu
-xPu
-gXs
-oSw
-vvb
-eyJ
-hbi
-lUv
-aQk
-dVi
-kbq
-ttb
-ibJ
-kzK
-xEh
-pMq
-cHg
-roh
-xmQ
-xmQ
-xmQ
-gfD
-tLq
-wYp
-iFy
-xhx
-ffz
-aAM
-lhU
-lcv
-lcv
-lcv
-lcv
-lcv
-lcv
-lcv
-lcv
-lcv
-lDY
-fhp
-ezd
-pqn
-mbi
-dop
-vJC
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(158,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-kkI
-dEt
-oSw
-deG
-xPu
-bUv
-xPu
-eyJ
-hbi
-uMz
-lQc
-dVi
-cyL
-ttb
-cEH
-jZS
-kNA
-xtZ
-ttb
-qSr
-xmQ
-xmQ
-xmQ
-rBm
-ttb
-acq
-pFW
-jZS
-sFQ
-aal
-nQR
-iEW
-iEW
-iEW
-iEW
-iEW
-iEW
-lhU
-nnf
-gmp
-lDY
-lPm
-vdQ
-bXn
-rTL
-aal
-aal
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(159,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-hgQ
-dEt
-imZ
-cpu
-dLe
-mgo
-xPu
-amt
-hwi
-jxF
-dVi
-jOS
-amt
-ttb
-ttb
-muB
-iGq
-ttb
-ttb
-ttb
-ttb
-ttb
-ttb
-ttb
-ttb
-ttb
-ctY
-muB
-ttb
-aal
-aal
-aal
-aal
-aal
-aal
-aal
-qtm
-nQR
-iEW
-iEW
-iEW
-iEW
-iEW
-iEW
-uvG
-kcI
-bCr
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(160,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-tfL
-oyh
-oyh
-oyh
-dEt
-dEt
-mcp
-dEt
-avl
-deG
-euC
-aES
-bpd
-amt
-mCQ
-amt
-eyJ
-eyJ
-amt
-nUt
-kzK
-hoj
-nVi
-huT
-szS
-qGV
-bbI
-aIJ
-ibW
-aEW
-wau
-lrp
-gbh
-hoj
-oFT
-tsy
-bet
-iAb
-bif
-fSi
-vWP
-aal
-aAK
-ybG
-hFM
-jpH
-ikG
-rlw
-fMf
-cUN
-pnc
-kFd
-lrA
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(161,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-tFm
-tFm
-tgS
-tFm
-avl
-eMp
-ybi
-iTI
-bUv
-kUo
-bCo
-mKg
-gAg
-jjW
-sTU
-bFH
-wMR
-bFH
-ozJ
-jhw
-szS
-qGV
-pvx
-hWx
-hWx
-vGt
-ldI
-gCD
-kzK
-jZS
-jZS
-kzK
-gyy
-pMe
-biD
-uZY
-keR
-aal
-aal
-cJv
-aal
-aal
-aal
-aal
-vae
-aal
-iid
-aal
-aal
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(162,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-tFm
-tFm
-tgS
-tFm
-pvZ
-xPu
-mDr
-jko
-kHG
-ojz
-mcB
-oKL
-sSV
-pVi
-vKY
-ldI
-ldI
-hFE
-ldI
-hoB
-puB
-qGV
-xmQ
-xmQ
-xmQ
-aEW
-dqX
-bVg
-qoq
-slQ
-qVh
-xYM
-gyy
-gIo
-wcT
-tGv
-jeR
-lIJ
-tRM
-qck
-iAb
-faq
-knT
-aal
-aal
-aal
-pnc
-lfy
-lfy
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(163,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-tFm
-tFm
-tgS
-tFm
-cpm
-cpu
-mpY
-umo
-nLL
-kTg
-idy
-fUM
-kFv
-cHf
-amt
-raO
-kzK
-dNy
-kzK
-gCD
-cJI
-qGV
-xmQ
-xmQ
-xmQ
-aEW
-ldI
-gCD
-gyy
-ohz
-cVJ
-xYM
-gyy
-pMe
-bcH
-aqQ
-oVg
-bcH
-gqs
-feH
-iVN
-bUh
-uXl
-uXl
-lhR
-aal
-pnc
-lfy
-lfy
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(164,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-mcp
-dEt
-deG
-xPu
-pKg
-olj
-xpO
-amt
-vUc
-vuk
-mDq
-xgg
-kca
-pZW
-pZW
-pZW
-pZW
-kEU
-cJI
-ocu
-iMU
-iMU
-iMU
-nvv
-lGw
-vcY
-vNM
-sda
-sda
-vNM
-wdC
-bbK
-jQu
-jQu
-ezy
-qpp
-iLM
-iLM
-buu
-jtC
-raz
-iHI
-iOs
-aal
-pnc
-gKi
-lfy
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(165,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iTg
-oyh
-oyh
-oyh
-dEt
-dEt
-gqJ
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-amt
-pBW
-pBW
-kca
-rCc
-oZz
-nQO
-cfa
-kxT
-xgN
-bFH
-bFH
-bFH
-jhw
-kzK
-hoB
-dXA
-pqg
-jZS
-ftT
-jZS
-ifG
-iAb
-nhX
-hgD
-vFw
-prS
-wcT
-pbm
-iVN
-kHJ
-eYL
-fTo
-qCZ
-aal
-pnc
-lfy
-lfy
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(166,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-kkI
-mlx
-cvg
-vrN
-pOH
-oIS
-ipu
-aUe
-dEt
-aPc
-sPu
-ucm
-kca
-xUT
-shd
-hjH
-yfU
-eZQ
-jCz
-kzK
-kzK
-kzK
-gCD
-kzK
-xcW
-ivz
-igE
-aYy
-aYy
-aYy
-iAb
-iAb
-iVN
-iVN
-iAb
-aTJ
-pix
-iAb
-iAb
-iAb
-aal
-aal
-aal
-aal
-pnc
-lfy
-lfy
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(167,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-mPw
-pNI
-dxK
-oIS
-dxK
-dxK
-wbx
-pJs
-dEt
-nmF
-pXG
-jmu
-kca
-xOr
-fsD
-fOl
-cHy
-uqd
-xhx
-bxE
-xhx
-xhx
-daT
-xhx
-daT
-pIm
-igE
-hlP
-nIQ
-iwj
-hiJ
-gYc
-kbL
-bku
-iAb
-aBS
-bsK
-bsK
-bxr
-efn
-aal
-oVH
-oVH
-aal
-pHQ
-iRN
-iRN
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(168,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-tFm
-jPg
-mPw
-eHk
-meB
-fxm
-pJA
-wBg
-fpN
-axf
-dEt
-dEt
-uZF
-pZW
-pZW
-qpa
-xDM
-ddA
-pZW
-wCG
-jZS
-caF
-dKS
-bsv
-qAU
-uDc
-hoB
-pGS
-aWH
-hAR
-pFT
-ewz
-bfl
-bhZ
-aTh
-bkR
-boH
-brC
-jhU
-btW
-bxZ
-bAc
-lcv
-lcv
-lcv
-lcv
-rCz
-lcv
-fUT
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(169,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-kJU
-mPw
-sQa
-spr
-spr
-del
-spr
-jFB
-pJs
-rif
-dGe
-uZF
-aQM
-xyi
-iva
-ifV
-lkA
-pZW
-nyE
-nyE
-cIc
-nyE
-nyE
-kuB
-bFH
-ckk
-ifG
-igE
-hcr
-jbR
-cqR
-uSL
-aFs
-jeF
-blv
-boI
-brC
-ltt
-jXc
-mHf
-lcv
-lcv
-hAg
-hAg
-wYM
-vSQ
-rCz
-ybG
-xhf
-xhf
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(170,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iTg
-oyh
-oyh
-oyh
-dEt
-xcw
-mPw
-sQa
-spr
-aOa
-deK
-spr
-pxw
-edO
-awA
-jBf
-uZF
-afD
-rEa
-itc
-sBb
-ybB
-rkY
-nyE
-eIg
-eiD
-vQf
-nyE
-sgJ
-kzK
-juq
-igE
-igE
-izy
-baA
-jxk
-igE
-iAb
-koN
-blX
-dNG
-oZj
-jja
-jXc
-kOU
-lcv
-jer
-hAg
-hAg
-wYM
-vSQ
-rCz
-tfR
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(171,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-lcU
-oyh
-dEt
-fCM
-mPw
-tIT
-spr
-aOa
-xza
-spr
-fpN
-kJU
-dEt
-dEt
-uZF
-pZW
-pZW
-uZF
-uZF
-uZF
-uZF
-uZF
-rYR
-ogD
-wzS
-nyE
-aOp
-oqv
-cMz
-igE
-aWR
-aZn
-cSe
-aZn
-bgz
-bid
-cJR
-blX
-bxk
-iaC
-jnF
-jXc
-tch
-lcv
-jer
-jer
-hAg
-mWr
-dcN
-rCz
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(172,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-tFm
-oHL
-mPw
-vhq
-spr
-aOa
-xpt
-spr
-gri
-fkD
-dEt
-lYb
-uZF
-xiW
-xiW
-uZF
-svu
-svu
-svu
-cuR
-wxY
-hsI
-qBW
-nyE
-xGu
-jhw
-rnP
-igE
-aWR
-aZn
-bbE
-cSe
-irx
-uVN
-wRp
-bmA
-bpA
-bfs
-cVT
-jXc
-uim
-lcv
-lcv
-bHU
-bHU
-lcv
-sAA
-lcv
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(173,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-mPw
-sQa
-spr
-kSX
-kSX
-spr
-kgY
-mPw
-hSI
-mPw
-mPw
-mPw
-mPw
-uZF
-svu
-uZF
-uZF
-uZF
-nyE
-hni
-nyE
-nyE
-hpg
-gCD
-qYb
-igE
-aWR
-fYf
-aPd
-mki
-bgz
-bid
-grk
-bmL
-tsB
-mOH
-jhU
-btW
-byH
-bAj
-lcv
-pJv
-xsA
-lfy
-sZY
-lcv
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(174,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-mPw
-tIT
-oIS
-dxK
-oIS
-dxK
-kgY
-mPw
-dEt
-ejr
-bET
-kFp
-mPw
-uZF
-svu
-uZF
-noO
-ijZ
-uGP
-wJG
-noO
-fsJ
-hGA
-gCD
-qYb
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-bnf
-fOk
-mTh
-hDI
-btt
-opr
-byI
-kNJ
-lcv
-rzA
-gFz
-tez
-jBu
-ioG
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(175,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-mPw
-dge
-bRI
-ueC
-ueC
-bRI
-nIB
-mPw
-dEt
-dEt
-loM
-dEt
-mPw
-uZF
-svu
-uZF
-lSI
-biR
-vLx
-vpA
-wBq
-fsJ
-fUg
-wHR
-gwz
-oNf
-qjn
-wxb
-wkw
-slk
-giV
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-lcv
-xjW
-qMV
-lKp
-gFz
-lcv
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(176,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-mPw
-mPw
-mPw
-uJs
-isk
-syP
-rgE
-mPw
-dEt
-lgO
-vwN
-dEt
-mPw
-uZF
-svu
-uZF
-iOD
-biR
-nqb
-xAu
-crK
-fsJ
-rQV
-wIA
-rQV
-tPm
-tPm
-tPm
-fDR
-nlN
-giV
-giV
-nlN
-pEp
-pEp
-pEp
-pEp
-gwT
-pPG
-wyf
-lcv
-lcv
-lcv
-lcv
-lcv
-lcv
-ybG
-xhf
-xhf
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(177,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-tQM
-kJU
-aeb
-dEt
-gFS
-fXq
-dEt
-ius
-dEt
-dEt
-teB
-dEt
-mPw
-uZF
-svu
-uZF
-noO
-jiD
-vAd
-fJY
-noO
-fsJ
-tKP
-lNh
-nno
-tPm
-gSu
-tPm
-fDR
-nlN
-nlN
-nlN
-nlN
-vJs
-pEp
-pEp
-pEp
-xQq
-qbw
-qbw
-kQI
-slk
-qza
-meU
-diW
-slk
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(178,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-xOC
-hjP
-gha
-nBO
-fIM
-fXq
-dEt
-jNP
-jNP
-rRB
-fOK
-dEt
-mPw
-uZF
-svu
-uZF
-uZF
-uZF
-fsJ
-fsJ
-fsJ
-fsJ
-ffv
-lTu
-sus
-tPm
-gSu
-tPm
-rGL
-qjn
-wkw
-aXC
-foB
-eCK
-qWN
-vqx
-jOj
-uLk
-xui
-xui
-xui
-pmD
-xiK
-xiK
-xiK
-ngY
-ybG
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(179,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-pCC
-uzB
-aeW
-dEt
-tfE
-fXq
-dEt
-oZZ
-hfD
-gOp
-fOK
-dEt
-mPw
-uZF
-svu
-svu
-svu
-uZF
-cfH
-yhM
-cId
-rQV
-aVq
-fuI
-kOk
-tPm
-gSu
-tPm
-xui
-nlN
-uWm
-iSu
-nlN
-qDS
-pEp
-pEp
-pEp
-xQq
-xui
-tuB
-rXH
-nlN
-fhO
-osI
-cem
-nlN
-iFr
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(180,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iTg
-oyh
-oyh
-oyh
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-jPg
-dEt
-oZZ
-twq
-vqQ
-fOK
-dEt
-mPw
-uZF
-uZF
-uZF
-svu
-uZF
-cfH
-wns
-kOk
-iiM
-wmw
-bXz
-sZo
-tPm
-tnm
-tPm
-xui
-nlN
-bvC
-uuz
-nlN
-ylj
-pEp
-pEp
-pEp
-hBN
-xui
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-aal
-aal
-aal
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(181,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-tfL
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-fXq
-vMF
-jas
-cOD
-lXn
-scK
-qEE
-dEt
-mPw
-imI
-wWk
-uZF
-svu
-uZF
-cfH
-btU
-xYr
-rQV
-xCl
-qkI
-pdd
-tPm
-gSu
-tPm
-xui
-nlN
-nlN
-nlN
-nlN
-nlN
-inE
-ehD
-inE
-nlN
-xui
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-aal
-aal
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(182,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-exc
-upG
-bwK
-tHn
-qWS
-aZA
-hsW
-dEt
-mPw
-imI
-qVm
-uZF
-svu
-uZF
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-gSu
-tPm
-xui
-xui
-dEJ
-xui
-xui
-nlN
-xui
-nlN
-xui
-aGI
-xui
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(183,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-mPw
-imI
-oWS
-uZF
-svu
-gSu
-gSu
-gSu
-tnm
-gVA
-gVA
-gSu
-gSu
-gSu
-gSu
-tPm
-uxI
-sOj
-xui
-wOd
-xui
-aGI
-xui
-ijX
-xui
-aGI
-cWo
-nlN
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(184,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-jPg
-dEt
-mSR
-qKl
-tzB
-hRm
-tJR
-fXq
-ajb
-mPw
-dEt
-nlN
-nlN
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-tPm
-nPs
-qbw
-xui
-rPV
-xui
-aGI
-tLu
-aGI
-xui
-xui
-xui
-qcp
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(185,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-dEt
-dEt
-dEt
-eIW
-ajb
-tzB
-aSB
-xRJ
-paA
-oIk
-mPw
-svy
-nvw
-fhA
-aFQ
-fBO
-dNI
-hnL
-gYe
-tPm
-rfq
-hLB
-aiw
-hLB
-hjx
-xui
-acE
-uFI
-xui
-aGI
-tLu
-xui
-qcp
-nlN
-nlN
-nlN
-nlN
-xui
-nlN
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(186,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-pQm
-jPW
-dEt
-dit
-gxf
-bEK
-kSr
-hZJ
-mcm
-dEt
-mPw
-eNa
-nvw
-fhA
-oTQ
-opd
-oTQ
-mUF
-kVY
-tPm
-jzp
-hLB
-ozc
-hKa
-nlN
-xui
-vaR
-xui
-xui
-nlN
-nlN
-hsh
-nlN
-nlN
-gHB
-bAb
-nlN
-xui
-hxF
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(187,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-fwJ
-oIk
-dEt
-uQf
-oIk
-duv
-cQz
-rrr
-dnM
-uNZ
-mPw
-hCv
-tAc
-wHV
-rHA
-nqt
-isQ
-gJy
-uiF
-tPm
-nlN
-hjx
-bnt
-nlN
-nlN
-nlN
-nlN
-bnt
-nlN
-nlN
-qEe
-dVH
-jtf
-nlN
-usq
-nyr
-wWf
-xui
-mvS
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(188,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-dEt
-bMR
-ihC
-dEt
-tFm
-tFm
-dEt
-nzM
-ptc
-nkL
-uNZ
-mPw
-kLF
-tAc
-rfD
-ibT
-esH
-maq
-aGE
-qtj
-nlN
-loS
-xui
-xui
-xui
-dEJ
-xui
-xui
-xui
-xui
-nlN
-oZk
-ckl
-qhE
-nlN
-nlN
-nlN
-nlN
-cWo
-nlN
-nlN
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(189,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-fsu
-mzC
-mzC
-sLE
-xtR
-mmz
-hoM
-nzM
-hZJ
-vaG
-dEt
-mPw
-dEt
-nlN
-nlN
-nlN
-nlN
-nlN
-iIm
-nlN
-nlN
-loS
-xap
-nRv
-pJH
-hgS
-hle
-wOd
-hXu
-xui
-nlN
-hzR
-rSw
-tzu
-nlN
-hMU
-rxa
-nlN
-xui
-kRh
-gyd
-nlN
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(190,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-oIk
-sIX
-hZJ
-uNZ
-xng
-mWW
-pqO
-jXE
-sBp
-oAz
-etA
-mPw
-ure
-oFu
-xNE
-sGZ
-ure
-xui
-xui
-hgS
-nlN
-bnt
-nlN
-bnt
-nlN
-nlN
-dUT
-nlN
-lEu
-cWo
-nlN
-nlN
-nlN
-nlN
-nlN
-xyU
-gBo
-nlN
-qzE
-nya
-lQs
-nlN
-nlN
-fZV
-fZV
-fZV
-fZV
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(191,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-dEt
-hZJ
-sIX
-jTS
-hoM
-bmE
-bcr
-qKI
-luw
-ezI
-hZJ
-rrr
-mPw
-hss
-dJq
-dJq
-dJq
-hss
-xui
-hXu
-nmq
-nlN
-hgS
-pum
-xNK
-nlN
-hXu
-jvk
-pnk
-rZe
-xui
-nlN
-jXl
-qEH
-dLu
-hsK
-jEs
-dXz
-nlN
-xui
-cCq
-cCq
-cCq
-cCq
-cCq
-qah
-sxi
-fZV
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(192,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-gaW
-scc
-sIX
-fSA
-dEt
-dEt
-dEt
-dEt
-tFm
-dEt
-dEt
-qeb
-qeb
-dEt
-mnj
-muP
-qmu
-dEt
-xui
-xui
-xui
-xui
-xui
-xui
-rsf
-xui
-xui
-xui
-xui
-xui
-qcp
-nlN
-tzf
-dDH
-tBN
-txb
-txb
-txb
-oml
-xui
-cCq
-ogp
-uEo
-blt
-dGG
-pUV
-lXs
-keE
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(193,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-ajb
-hZJ
-jDJ
-uQf
-oIk
-uPL
-hjV
-ivQ
-hZJ
-tnG
-dEt
-lsV
-lqK
-dEt
-dEt
-dEt
-dEt
-dEt
-nlN
-nlN
-nlN
-nlN
-nlN
-wKz
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-mbe
-mbe
-rcp
-bJk
-oin
-jtL
-cCq
-lQM
-cCq
-vKs
-cCq
-hvY
-cCq
-pUV
-lXs
-fZV
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(194,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-rxe
-uEK
-wGq
-rrr
-hZJ
-dEt
-rsY
-wjy
-hZJ
-mgG
-dEt
-dEt
-mzI
-uTh
-dEt
-dEt
-dEt
-dEt
-nlN
-nlN
-nlN
-nlN
-nlN
-kVT
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-wzY
-abu
-rkd
-mFv
-xRo
-cCq
-iDm
-xrj
-sZh
-bIm
-hMs
-qCt
-pUV
-lXs
-fZV
-fZV
-keE
-fZV
-fZV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(195,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-apt
-xSn
-mzC
-haS
-jDJ
-xTa
-bfk
-lZa
-pMx
-xeR
-dEt
-odp
-qbG
-wWk
-dEt
-dEt
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-nlN
-lLO
-nlN
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-nlN
-nlN
-hrp
-jEs
-nZq
-bbL
-xRo
-cCq
-lbr
-vdn
-cWR
-ioQ
-aVr
-img
-gYb
-hgN
-cCE
-cCE
-cCE
-sxi
-fZV
-keE
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(196,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-aZp
-axG
-ajb
-gxf
-eeC
-fzR
-rrr
-hZJ
-fQY
-dEt
-dEt
-qbG
-uTh
-dEt
-dEt
-dEt
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-gpt
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-nlN
-nlN
-nlN
-sut
-nld
-qbw
-sut
-cCq
-pxK
-gmQ
-uxt
-cCq
-hvY
-cCq
-gYb
-aRY
-aRY
-aRY
-aRY
-hgN
-cWD
-keE
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(197,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-crn
-apt
-gOx
-xlj
-jju
-dEt
-crn
-hGQ
-goD
-dEt
-dEt
-tEY
-fDS
-dEt
-dEt
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-gpt
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-nlN
-nlN
-qEH
-lQd
-fIF
-ych
-cCq
-sDo
-tBv
-pHL
-sKX
-aeu
-eSI
-gYb
-gYb
-pUV
-pUV
-gYb
-aRY
-hgN
-sxi
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(198,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-gpt
-hQT
-oyh
-oyh
-hQT
-ilK
-oyh
-oyh
-oyh
-nlN
-nlN
-nlN
-nlN
-nlN
-nlN
-cCq
-cCq
-cCq
-cCq
-cCq
-cCq
-cCq
-gYb
-gEf
-org
-gEf
-pUV
-gYb
-aRY
-wzm
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(199,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-dEt
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-edA
-gpt
-fPW
-eYj
-eYj
-fPW
-cfJ
-oyh
-oyh
-oyh
-oyh
-nlN
-nlN
-nlN
-nlN
-nlN
-cCq
-cCq
-cCq
-cCq
-cCq
-cCq
-cCq
-gYb
-aUj
-pUV
-lua
-iRr
-pUV
-aRY
-wzm
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(200,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-tUT
-eYj
-fPW
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-keE
-gYb
-pXr
-vvC
-qDa
-lQW
-pUV
-aRY
-wzm
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(201,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-eYj
-oyh
-oyh
-hQT
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-fZV
-gYb
-qDI
-pUV
-syi
-qBv
-pUV
-aRY
-wzm
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(202,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-inK
-oyh
-oyh
-oyh
-oyh
-fPW
-eYj
-eYj
-fPW
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-fZV
-gYb
-gEf
-pUV
-gEf
-pUV
-gYb
-aRY
-wzm
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(203,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-itT
-oyh
-oyh
-bml
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-keE
-gYb
-pUV
-pUV
-pUV
-gYb
-aRY
-cFx
-aWB
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(204,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-iML
-fPW
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-fZV
-aRY
-aRY
-aRY
-aRY
-aRY
-cFx
-tTf
-fZV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(205,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-fZV
-bhz
-gAW
-gAW
-gAW
-gAW
-aWB
-fZV
-fZV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(206,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(207,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(208,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(209,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(210,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(211,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(212,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(213,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(214,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(215,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(216,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(217,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(218,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(219,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(220,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(221,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(222,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(223,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(224,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(225,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(226,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(227,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(228,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(229,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(230,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(231,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(232,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(233,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(234,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(235,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(236,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(237,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(238,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(239,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(240,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(241,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(242,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(243,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(244,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(245,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(246,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(247,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(248,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(249,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(250,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(251,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(252,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(253,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(254,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(255,1,2) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-
-(1,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(2,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(3,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(4,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(5,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(6,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(7,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(8,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(9,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(10,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(11,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(12,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(13,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(14,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(15,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(16,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(17,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(18,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(19,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(20,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(21,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(22,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(23,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(24,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(25,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(26,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(27,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(28,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(29,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(30,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(31,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(32,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(33,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(34,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(35,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(36,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(37,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(38,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(39,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(40,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(41,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(42,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(43,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(44,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(45,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(46,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(47,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(48,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(49,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(50,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(51,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(52,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(53,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(54,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(55,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(56,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(57,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(58,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(59,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(60,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(61,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(62,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(63,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(64,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ibK
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(65,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-atB
-tgX
-rIc
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pRs
-pRs
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(66,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-saG
-saG
-saG
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-eDe
-rIc
-eDe
-rIc
-nUL
-rIc
-eDe
-rIc
-eDe
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-uhK
-gwL
-nIu
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(67,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-saG
-saG
-saG
-saG
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-eDe
-rIc
-eDe
-rIc
-nbT
-rIc
-eDe
-rIc
-eDe
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-uhK
-gwL
-smJ
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(68,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-saG
-saG
-saG
-eAE
-nxm
-vrX
-aic
-fOS
-icY
-nVq
-dfl
-wRJ
-vpa
-gec
-rTE
-bks
-bks
-bks
-hPL
-viZ
-vpa
-gwL
-toH
-toH
-toH
-toH
-nST
-hEo
-gwL
-sJU
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(69,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kVp
-saG
-saG
-eAE
-fnM
-ixf
-gby
-hzq
-pNA
-nVq
-nVq
-cyX
-wRJ
-eOC
-mUs
-oJo
-oJo
-tZF
-oJo
-oJo
-eUp
-uzE
-gwL
-toH
-lNs
-liT
-xvo
-joE
-oQS
-niP
-bne
-rfI
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(70,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kVp
-saG
-saG
-nNM
-gAt
-eAE
-sGw
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-bVu
-kKX
-blO
-sUI
-sUI
-sUI
-niA
-eub
-qKN
-gwL
-gwL
-gwL
-gwL
-gwL
-lsm
-oQS
-fIg
-hEo
-gVx
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(71,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kVp
-wRJ
-wRJ
-eCP
-wrh
-wPF
-cil
-ooF
-wRJ
-rxg
-sJO
-vuG
-sJO
-sJO
-kKX
-iQp
-oZx
-oZx
-oZx
-reW
-eub
-sJO
-sJO
-teN
-sVh
-tNi
-gwL
-oRB
-cQr
-gwL
-gwL
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(72,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-gDL
-acK
-acK
-hEm
-jNQ
-wRJ
-oVY
-gec
-vuo
-oon
-oon
-jds
-iQp
-oZx
-oZx
-oZx
-sfS
-ivu
-oon
-oon
-sKN
-wFY
-mSj
-gwL
-fqE
-oQS
-lYL
-ghX
-rSY
-uhK
-uhK
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(73,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-pBv
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-sJO
-fjo
-ePM
-xxF
-wdb
-ylK
-iQp
-gCG
-cHm
-gCG
-kgL
-qwC
-wdb
-huJ
-hQA
-mlX
-hQX
-gwL
-fmF
-oQS
-gwL
-fiX
-fYM
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(74,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-joA
-kSR
-fWY
-fOR
-fry
-gfr
-eJs
-pyg
-uJX
-uJX
-oHT
-drk
-iQp
-hGP
-nWH
-aim
-reW
-xwg
-ttk
-enZ
-mfk
-mFf
-pDx
-gwL
-gwL
-jrl
-gwL
-gwL
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(75,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-iwu
-ccH
-ccH
-gEe
-uIN
-ltq
-ltq
-eDe
-rtS
-xPI
-eDe
-eDe
-eDe
-eDe
-eDe
-eDe
-eDe
-eDe
-eDe
-uvQ
-hex
-eDe
-gwL
-gwL
-dVt
-dVt
-gyp
-gwL
-kPW
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(76,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iTg
-sKn
-sKn
-xRB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-iwu
-ccH
-jRV
-bQn
-otZ
-rAE
-aCx
-rLf
-bks
-sei
-nba
-eDe
-nGm
-oZx
-oZx
-oZx
-gmO
-eDe
-hpe
-oon
-mtM
-hdy
-gwL
-toH
-toH
-toH
-eBQ
-gwL
-kPW
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(77,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-cvD
-cXm
-pRs
-lfd
-xuh
-xuh
-xuh
-xuh
-xuh
-xuh
-xuh
-wRJ
-wRJ
-iwu
-ccH
-muX
-gGX
-kAb
-lmu
-aHP
-uBr
-hpF
-bUH
-uSw
-xwJ
-lUZ
-oZx
-oZx
-oZx
-qiU
-kPq
-efW
-xxF
-riD
-lMR
-gwL
-vRC
-iEg
-toH
-nhF
-gwL
-kPW
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(78,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iTg
-aZN
-oXd
-soz
-ucA
-xuh
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-wRJ
-iwu
-ccH
-qdz
-lKE
-iia
-jat
-aCx
-kjW
-drk
-uJX
-leI
-eDe
-qXv
-oZx
-oZx
-oZx
-poE
-eDe
-vVG
-enZ
-mZI
-uqT
-gwL
-toH
-uCw
-toH
-eBQ
-gwL
-gwL
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(79,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kVG
-ucA
-ucA
-xuh
-xuh
-xuh
-xuh
-wRJ
-wRJ
-wRJ
-wRJ
-iwu
-ccH
-ccH
-rLl
-lzd
-uIN
-ltq
-eDe
-rtS
-xPI
-eDe
-eDe
-eDe
-xeT
-qqv
-eNS
-eDe
-eDe
-eDe
-uvQ
-hex
-eDe
-gwL
-gwL
-xwI
-vuN
-rMc
-oIj
-gwL
-jPd
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(80,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kVG
-xuh
-xuh
-xuh
-ucA
-ucA
-wRJ
-wRJ
-wRJ
-gdm
-kpT
-iwu
-uFR
-ccH
-suT
-lij
-uIN
-vUv
-rHg
-bks
-sei
-wxF
-igA
-eDe
-oRb
-oRb
-oRb
-eDe
-dMk
-eKp
-oon
-mtM
-uyf
-hWn
-gwL
-gwL
-wiB
-gwL
-gwL
-gwL
-rFG
-cXC
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(81,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-kcA
-wRJ
-ucA
-xuh
-ucA
-wRJ
-wRJ
-wRJ
-wRJ
-gdm
-kpT
-igy
-btC
-ccH
-dFn
-bLq
-lwo
-sJO
-fjo
-wdb
-bUH
-wdb
-riD
-pUD
-qqv
-qqv
-qqv
-wfe
-wdb
-wdb
-huJ
-riD
-wdb
-pPr
-gwL
-bNp
-puM
-gwL
-sOI
-gwL
-uex
-gwL
-gwL
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(82,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-aGH
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-igy
-igy
-igy
-igy
-igy
-niE
-ccH
-hNO
-uAg
-kWf
-bGn
-rec
-bhN
-bUH
-bUH
-enF
-szt
-oqK
-cEt
-izN
-wyU
-bLB
-bLB
-bLB
-oet
-bLB
-xbt
-lOc
-puM
-gwL
-gwL
-aBa
-gwL
-nOH
-wRE
-fuH
-cfp
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(83,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-wRJ
-uVK
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-klw
-igy
-wRJ
-wRJ
-hEu
-wRJ
-wRJ
-ccH
-uIN
-uIN
-uIN
-vpa
-nqm
-drk
-mkZ
-drk
-drk
-lCf
-uQE
-mso
-rMX
-dGS
-drk
-drk
-kHV
-drk
-drk
-eLd
-gwL
-uQL
-wOE
-uQL
-uQL
-uQL
-uQL
-gHY
-uQL
-uQL
-uQL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(84,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-hEu
-hEu
-hEu
-hEu
-hEu
-dCt
-hEu
-klw
-igy
-wRJ
-hbm
-hEu
-wRJ
-mKm
-ggi
-bqH
-cVK
-tQd
-tQd
-dJh
-dJh
-tQd
-tQd
-tQd
-tQd
-gec
-mso
-uMu
-jWT
-awt
-awt
-jWT
-jWT
-awt
-awt
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-gwL
-uQL
-niP
-lGK
-uep
-eZa
-eZa
-eZa
-dso
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(85,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-hEu
-mDe
-jqy
-mDe
-vDo
-wRJ
-hEu
-hEu
-igy
-hEu
-hEu
-hEu
-wRJ
-jyc
-tVC
-tVC
-tVC
-cDu
-mfM
-uUV
-ybY
-vaH
-poL
-wci
-tQd
-fjo
-mso
-dFd
-awt
-gjf
-gjf
-gjf
-qoa
-jDe
-jDe
-qoW
-tTc
-xyc
-ahT
-ddx
-nbu
-dzg
-mKf
-ubR
-gwL
-uQL
-wOE
-qJA
-lDH
-smJ
-smJ
-smJ
-aze
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(86,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-hEu
-jqy
-mDe
-jqy
-mDe
-wRJ
-wRJ
-wRJ
-cee
-wRJ
-wRJ
-wRJ
-fPj
-jMv
-iGI
-vUS
-pjZ
-ygT
-aCq
-ygT
-ygT
-ygT
-ygT
-wVm
-dJh
-fjo
-mso
-dFd
-awt
-gjf
-ulB
-ulB
-ulB
-jDe
-bMs
-kpa
-jzE
-gjf
-gjf
-ddx
-rBC
-rBC
-jYz
-fIa
-gwL
-gwL
-gwL
-gwL
-gwL
-smJ
-smJ
-smJ
-aze
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(87,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-jsF
-jsF
-jsF
-hEu
-rip
-rip
-wRJ
-dHn
-gXH
-sEU
-wRJ
-jsY
-wRJ
-lnM
-bjK
-jYt
-dEq
-wsl
-fYu
-ske
-ske
-luD
-luD
-lXL
-ooE
-qUr
-mso
-laJ
-jWT
-tRT
-nXq
-xEL
-oAm
-jDe
-dId
-jAl
-jHT
-gjf
-gjf
-ddx
-rBC
-rBC
-jYz
-ikn
-jWT
-vSX
-qQb
-sIA
-gwL
-smJ
-smJ
-smJ
-aze
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(88,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-nVq
-nVq
-mDe
-wsA
-rip
-wTp
-wRJ
-eLe
-wRJ
-wRJ
-wRJ
-jsY
-wRJ
-gdY
-sfT
-vzS
-sWC
-gyX
-mzg
-wmS
-fYm
-lQJ
-wTw
-qDu
-wSW
-faP
-gWg
-iOh
-awt
-gjf
-mQg
-rBC
-pzK
-jDe
-gjf
-wtg
-gjf
-gjf
-gjf
-uCW
-kHc
-xAq
-lvC
-eEu
-jWT
-vsK
-lFz
-uba
-gwL
-smJ
-txC
-sOI
-aze
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(89,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-nVq
-wRJ
-nVq
-wsA
-rip
-rip
-wRJ
-kWo
-wRJ
-tDp
-wRJ
-jsY
-wRJ
-mub
-iaS
-vaA
-vaA
-wqk
-vXm
-csr
-hlX
-upT
-sjX
-kOu
-dJh
-fjo
-qcd
-ccF
-awt
-gjf
-mQg
-rBC
-pzK
-jDe
-gjf
-vXY
-vRj
-ldV
-osX
-jHJ
-hVt
-hVt
-hVt
-mqL
-jWT
-jWT
-jWT
-tnS
-gwL
-gwL
-gwL
-vGT
-ryz
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(90,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-mDe
-twa
-oBd
-iDw
-hEu
-hEu
-hEu
-igy
-wRJ
-wRJ
-wRJ
-jsY
-wRJ
-uJa
-upT
-upT
-upT
-lXW
-aYJ
-ccp
-pDX
-upT
-sjX
-rGd
-tQd
-spd
-qcd
-nsn
-rSS
-xDS
-sln
-jAl
-pWr
-jDe
-bMs
-kpa
-jzE
-gjf
-vRj
-vWQ
-vWQ
-vWQ
-vWQ
-rnv
-gJr
-vWQ
-wXH
-bVl
-gwL
-uQL
-uQL
-uQL
-uQL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(91,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-ccH
-ccH
-ccH
-ccH
-igy
-wRJ
-jsY
-jsY
-jsY
-wRJ
-vDV
-kZv
-cIr
-ldO
-efe
-bZM
-bdx
-aLU
-byK
-pAY
-mOj
-tQd
-fjo
-qcd
-ceh
-dMj
-cix
-ulB
-ulB
-ulB
-xCM
-dId
-jAl
-jHT
-gjf
-xDS
-xDS
-xna
-xna
-xna
-pcf
-xna
-dSf
-jRP
-uZo
-gwL
-uQL
-gwL
-gPR
-gwL
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(92,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-cFQ
-oBy
-xzd
-wDb
-uXi
-udx
-siB
-siB
-ccH
-igy
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-lmU
-qyE
-aeg
-bKS
-djx
-mKT
-nJo
-pDQ
-dpd
-tQd
-fjo
-qcd
-fOu
-awt
-cix
-cix
-xDS
-xDS
-ved
-xDS
-xDS
-xDS
-xDS
-xDS
-gjf
-vZg
-dIx
-dIx
-srS
-jWT
-jWT
-pGf
-jWT
-gwL
-pVr
-gwL
-sIx
-sIx
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(93,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-cFQ
-lcW
-isA
-ihV
-dbK
-siB
-siB
-txT
-ccH
-igy
-wRJ
-xIs
-rip
-wsZ
-usX
-nbc
-wRJ
-jdo
-lpR
-lYr
-dNn
-aLv
-xbP
-qHE
-pFA
-qHE
-dJh
-fjo
-qcd
-dFd
-awt
-gjf
-gjf
-vXY
-xDS
-qaY
-gjf
-gjf
-wtg
-gjf
-gjf
-jnm
-tMd
-ycW
-ycW
-umZ
-gyr
-kXP
-jwP
-ori
-pLQ
-czj
-gwL
-aZw
-ivU
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(94,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-cFQ
-vqz
-efF
-jkH
-pkH
-wLK
-siB
-siB
-ccH
-igy
-igy
-igy
-igy
-igy
-igy
-rip
-wRJ
-tIH
-lyd
-mdN
-uDb
-vGv
-yeR
-qHE
-bmO
-rVY
-tQd
-iYL
-qcd
-nCL
-jWT
-rZS
-nla
-mQF
-xDS
-jDe
-bMs
-kpa
-jzE
-gjf
-tFS
-nNJ
-ycW
-ssj
-ssj
-gip
-gyr
-ptD
-jwP
-qAx
-qAx
-kII
-gwL
-aZw
-sIx
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(95,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-smU
-iQf
-pdh
-pdh
-pdh
-pdh
-pdh
-pdh
-pdh
-ccH
-wRJ
-wRJ
-igy
-gzU
-wRJ
-nOw
-lFL
-mfE
-uDb
-czP
-xXp
-rMo
-lok
-gaA
-whR
-fjo
-qcd
-dFd
-awt
-ubR
-mhE
-rwh
-xDS
-jDe
-dId
-jAl
-jHT
-gjf
-gjf
-nNJ
-dxv
-ssj
-ssj
-pZt
-gyr
-puY
-fSX
-vOf
-lFY
-pXU
-gwL
-gwL
-sPk
-gwL
-gwL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(96,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-gxH
-sCu
-gUX
-rQd
-wUS
-fLu
-ycg
-uHe
-vDg
-ccH
-sCH
-wRJ
-igy
-rip
-wRJ
-tpS
-kwG
-dzq
-uDb
-oLt
-woH
-woH
-lPA
-tDB
-whR
-fjo
-qcd
-dFd
-awt
-jPR
-ubR
-nYE
-xDS
-jDe
-gjf
-iwU
-psq
-eEr
-wVz
-ouk
-ycW
-ssj
-ssj
-idr
-gyr
-gyr
-pHU
-jGF
-rGv
-cbi
-tGn
-pSl
-pSl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(97,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-uhr
-abx
-ntO
-nJk
-xDC
-uaK
-hPk
-dke
-ycg
-uHe
-vVo
-ccH
-rip
-wRJ
-igy
-rip
-wRJ
-bzy
-lGJ
-mlh
-jrr
-kwc
-mPW
-bvF
-lPA
-uVI
-whR
-fjo
-qcd
-dFd
-eDe
-jjF
-jjF
-nrC
-odY
-tTV
-nrC
-jjF
-jWT
-jWT
-jWT
-jWT
-fAz
-oNd
-hoW
-fAz
-gyr
-pxZ
-eSn
-tGn
-tGn
-tGn
-tGn
-pSl
-aqx
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(98,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-uhr
-abx
-ntO
-oJf
-rtl
-rtl
-rtl
-rtl
-rtl
-rtl
-ccH
-ccH
-bRx
-wRJ
-igy
-rip
-wRJ
-bIQ
-jwu
-lFe
-gYh
-qHR
-woH
-nLp
-qWQ
-qIY
-whR
-jwo
-qcd
-dFd
-mYu
-jjF
-mbM
-gBr
-sRh
-tUG
-ris
-tdt
-gyr
-sng
-iHx
-aOx
-rRu
-sFt
-sFt
-sFt
-tHs
-sGR
-tDv
-tGn
-aoM
-aoM
-tGn
-pSl
-pSl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(99,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-sFz
-pMK
-xeE
-pbj
-gMv
-vjT
-gTk
-rtl
-jgK
-xDK
-rip
-oYT
-igy
-igy
-wRJ
-whR
-whR
-jse
-whR
-whR
-whR
-rgL
-whR
-whR
-whR
-dff
-qcd
-dFd
-sJO
-nrC
-uPd
-iUV
-ehm
-ehm
-uQS
-sdA
-fAz
-wUu
-bSd
-xsg
-xsg
-oSg
-oSg
-oSg
-jDx
-jNv
-pKE
-tGn
-aoM
-tGn
-tGn
-tGn
-pSl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(100,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-dOM
-vsn
-fok
-bpY
-xAo
-rLB
-gTk
-rtl
-bGl
-oMv
-txF
-wRJ
-dab
-igy
-wRJ
-rhi
-lXK
-csP
-qcA
-whR
-kcC
-nMX
-wAM
-rIc
-sJO
-fjo
-qcd
-aJb
-sMb
-fkj
-tda
-hry
-wTq
-wTq
-uRO
-orD
-asV
-qVa
-uwa
-sFt
-xQv
-kAO
-sFt
-sFt
-rXs
-bQG
-twy
-tGn
-tGn
-tGn
-vxG
-tGn
-pSl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(101,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-uhr
-abx
-ntO
-ilb
-eKC
-eKC
-eKC
-eKC
-eKC
-eKC
-wRJ
-wRJ
-wRJ
-wRJ
-igy
-igy
-wRJ
-azu
-qdm
-kKo
-kKo
-tyb
-oZJ
-bUH
-qYQ
-qNe
-jVN
-riC
-qcd
-fEZ
-ezC
-rWu
-cbo
-kZV
-wTq
-wTq
-jSJ
-vuD
-vTk
-lhy
-uwa
-sFt
-oEU
-oSA
-sFt
-xvN
-fWl
-bQG
-vZF
-aXW
-dKb
-rxi
-ajs
-qLP
-pSl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(102,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-uhr
-abx
-ntO
-cjp
-xSi
-cgB
-fFF
-xnL
-wcs
-cQo
-qxJ
-wDz
-wDz
-wRJ
-igy
-cGh
-wRJ
-mUa
-lXU
-jTO
-erY
-whR
-jnD
-dMb
-xCy
-gsS
-sMb
-qtV
-qcd
-dFd
-sJO
-nrC
-uPd
-oDJ
-eDj
-fsg
-uUw
-xEN
-fAz
-hmX
-wUF
-wUF
-wUF
-kKz
-kKz
-kKz
-kKz
-bQG
-gbk
-tGn
-nOB
-nDn
-dYX
-tGn
-pSl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(103,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-fSV
-gsD
-gKa
-uIQ
-uco
-vgb
-vgb
-veF
-mou
-wDz
-wDz
-wRJ
-igy
-igy
-wRJ
-giv
-giv
-giv
-giv
-giv
-giv
-nUp
-pHf
-rIc
-pwv
-dnR
-gWg
-blw
-vpa
-jjF
-iNB
-wxM
-sVv
-ogg
-wuC
-wms
-gyr
-vwc
-gMz
-pSV
-dSl
-gOO
-pBS
-sFt
-kKz
-sal
-mhO
-tGn
-tGn
-tGn
-tGn
-tGn
-iHl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(104,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-bXd
-cjp
-wRJ
-wRJ
-wRJ
-mEj
-gJo
-ltU
-tcl
-fbe
-wRJ
-wRJ
-wRJ
-igy
-wRJ
-cSc
-nEj
-tBV
-rZn
-iWm
-giv
-lDW
-pMI
-eDe
-eDe
-oSx
-qcd
-cGU
-qBx
-qBx
-qBx
-nIv
-sVU
-jUf
-rrD
-qBx
-gyr
-fAz
-vhd
-fAz
-gyr
-gyr
-dvB
-sFt
-sxt
-sal
-mhO
-tGn
-qCv
-mUA
-thM
-qcj
-pSl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(105,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-uhr
-abx
-ntO
-kXc
-wRJ
-rms
-wRJ
-kdA
-bzO
-vHm
-owB
-wDz
-wRJ
-eMR
-cGh
-igy
-wRJ
-giv
-giv
-iPh
-mCD
-mHu
-dBY
-mXg
-gct
-bNs
-eDe
-lNm
-qcd
-gCC
-qBx
-nVE
-vAs
-wPn
-oPX
-fJa
-xbA
-hlo
-qBx
-iBF
-swI
-gTT
-vqp
-diA
-diA
-diA
-mCr
-diA
-diA
-tGn
-qCv
-mUA
-xpH
-fvb
-fvb
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(106,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-uhr
-abx
-uHV
-ktG
-udw
-igy
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-wRJ
-igy
-igy
-igy
-wRJ
-oEr
-wYj
-qPn
-rNa
-cpk
-giv
-tWI
-ool
-wZS
-eDe
-fjo
-qcd
-nCL
-qBx
-pjs
-akD
-fNg
-sWw
-fNg
-nBC
-mOh
-qBx
-bCG
-nzd
-xsQ
-cgR
-diA
-sGW
-vNR
-exw
-awV
-sGW
-tGn
-qCv
-mUA
-pKd
-mUA
-mUA
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(107,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-ntO
-nbN
-wRJ
-igy
-igy
-igy
-igy
-igy
-igy
-igy
-igy
-igy
-wRJ
-xns
-wRJ
-vpD
-lqu
-pnK
-liQ
-liQ
-liQ
-liQ
-pZi
-liQ
-liQ
-spd
-qcd
-dFd
-nIv
-pjh
-ixH
-fNg
-sWw
-uiE
-uYg
-fDF
-vvx
-ruo
-ftp
-pzi
-hRg
-diA
-rqi
-pnm
-ezM
-pDK
-iuE
-tGn
-qCv
-mUA
-pKd
-mUA
-mUA
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(108,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eKC
-eKC
-sLm
-eKY
-wRJ
-qxI
-qxI
-wRJ
-mcO
-rrW
-qxI
-wRJ
-wRJ
-wRJ
-wRJ
-eAE
-wRJ
-qrZ
-ffZ
-rPw
-liQ
-kqW
-ktz
-wfI
-gMf
-eJF
-liQ
-fjo
-qcd
-dFd
-jSy
-jHm
-mpe
-kBj
-dOg
-kXj
-qWo
-xaN
-qBx
-kUU
-tGc
-jzV
-twO
-diA
-iPm
-plO
-xwN
-oub
-mPJ
-tGn
-qCv
-mUA
-pKd
-mUA
-fjv
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(109,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-rtl
-rtl
-lUO
-lgY
-ccH
-ccH
-ccH
-ccH
-ccH
-ccH
-ccH
-rWT
-hxl
-kRn
-ccH
-wEQ
-wRJ
-jvQ
-fGW
-wID
-liQ
-rLh
-gAf
-uIy
-aht
-xvk
-liQ
-fjo
-qcd
-toO
-ouZ
-uOl
-gAe
-fNg
-mZy
-fNg
-rRX
-xJk
-qBx
-dFN
-heF
-sby
-anb
-tGn
-tGn
-tGn
-tGn
-tGn
-tGn
-tGn
-teV
-mUA
-ewH
-eJl
-mUA
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(110,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-wdS
-qTw
-rQc
-xSW
-jqP
-lbO
-xfD
-plz
-lzp
-rWT
-rWT
-gpu
-ccH
-ccH
-iHm
-qrd
-qrd
-qrd
-iHm
-nVZ
-bQe
-twg
-pPf
-uQK
-liQ
-xtI
-qcd
-dFd
-nIv
-dPv
-grb
-fNg
-mZy
-fNg
-nBC
-vyH
-qBx
-qBx
-qBx
-qBx
-qBx
-tGn
-fZC
-sEP
-bxH
-cwl
-tGn
-mUA
-mUA
-mUA
-nFf
-tDf
-mUA
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(111,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-alu
-gvj
-eJd
-vnG
-aoG
-sdi
-ygU
-gHu
-mxJ
-czZ
-kwf
-rWT
-byY
-dzQ
-bmf
-wIN
-iHm
-gUT
-ljh
-yjU
-iHm
-dTB
-hDZ
-uXR
-pPf
-vBI
-liQ
-etv
-qcd
-ust
-qBx
-aqz
-bkh
-kOA
-dOg
-les
-rOJ
-wSz
-xDX
-tLg
-tXP
-nKa
-oLG
-tGn
-gNS
-cwl
-fhx
-cwl
-tGn
-npO
-bGc
-qwy
-rSu
-tDf
-mUA
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(112,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-alu
-gvj
-eUx
-txB
-iAZ
-suv
-qnN
-cFg
-hRp
-plz
-rSD
-rWT
-uhF
-vhL
-uCn
-wIN
-iHm
-bqI
-tyK
-bqI
-iHm
-iHm
-iHm
-hnC
-eHG
-xjh
-liQ
-vzO
-qcd
-dFd
-qBx
-qUs
-grb
-fNg
-tff
-fNg
-nBC
-fNg
-grb
-fNg
-tuH
-smi
-dLV
-tGn
-jFQ
-jFQ
-dEN
-tGn
-tGn
-tGn
-tGn
-tGn
-tGn
-raY
-tGn
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(113,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-alu
-gvj
-tlK
-rMC
-tLb
-qSv
-jGl
-jGl
-hoo
-uBE
-maf
-rWT
-sNd
-evW
-oTX
-wIN
-iHm
-fNq
-iKT
-xNf
-mpy
-drB
-iHm
-rGl
-vIh
-liQ
-liQ
-rMM
-xdU
-tQF
-qBx
-qBx
-rTB
-fNg
-tff
-fNg
-nBC
-fNg
-grb
-fNg
-mFB
-smi
-xpR
-tGn
-tGn
-nsw
-tGn
-tGn
-aoM
-tGn
-xIF
-tGn
-ewY
-ppZ
-twS
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(114,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-fOH
-oUu
-xHK
-wpt
-cuT
-cuT
-vYE
-qAa
-kwf
-rWT
-rWT
-oLk
-rWT
-wIN
-iHm
-lWN
-xwa
-sSB
-ajE
-yfh
-iHm
-suM
-dIU
-liQ
-ybQ
-ybQ
-sKs
-bsN
-ybQ
-qBx
-cCS
-uxZ
-wSG
-umG
-yhz
-fNg
-xmM
-fNg
-nGG
-mSm
-aPH
-oZE
-lxK
-lYD
-lxK
-tGn
-tGn
-tGn
-pSl
-uiR
-qFr
-nDk
-uPY
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(115,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-hUT
-lbJ
-nqi
-hfC
-xiM
-xiM
-qVO
-plz
-bYJ
-rWT
-usa
-vQs
-rWT
-lEo
-iHm
-qrd
-qrd
-wGR
-qrd
-qrd
-iHm
-liQ
-liQ
-liQ
-eDe
-pqB
-bdR
-cKS
-eDe
-eDe
-eDe
-eDe
-eDe
-eDe
-eDe
-uZc
-nwf
-uZc
-uZc
-uZc
-uZc
-tGn
-pSl
-pSl
-khP
-pSl
-pSl
-pSl
-pSl
-tGn
-rIt
-nDk
-tLF
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(116,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-oJr
-bTy
-nqi
-hSP
-xiM
-xiM
-qVO
-uBE
-maf
-rWT
-lLL
-rzW
-abl
-nnT
-iWW
-sSB
-sSB
-sSB
-qrd
-sOO
-ibF
-oBP
-eDe
-ybQ
-gzc
-wdb
-qcd
-riD
-sNq
-mqy
-fjo
-oZx
-oZx
-oZx
-mNW
-ufs
-ufs
-xGx
-xGx
-kak
-ufs
-tGn
-rfT
-tGn
-tGn
-tGn
-tGn
-tGn
-tGn
-tGn
-tGn
-raY
-tGn
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(117,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-ovJ
-eCz
-jlE
-kdU
-kNn
-kNn
-fli
-oRq
-kwf
-rWT
-mAI
-tCj
-iHm
-iHm
-iHm
-ejP
-gMQ
-sSB
-iom
-tcs
-xmi
-tcs
-nRK
-sMg
-cXK
-kZH
-uNx
-hkV
-jqq
-viX
-jqq
-oZx
-oZx
-oZx
-eDe
-ufs
-ufs
-naR
-sdO
-caQ
-lmW
-uZc
-rtB
-uZc
-pCH
-bQK
-xWn
-tGn
-aoM
-aoM
-tGn
-pSl
-vxG
-cHT
-cHT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(118,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-rSD
-bTy
-cZS
-eIU
-twv
-yfm
-ygn
-plz
-rSD
-rWT
-tjM
-wLD
-iHm
-oDe
-qrd
-iKT
-sSB
-dIv
-qrd
-oqk
-jpq
-xNC
-eDe
-rYq
-nKn
-wdb
-qcd
-riD
-tcP
-mqy
-fjo
-oZx
-oZx
-oZx
-mNW
-xGx
-diU
-ufs
-hSl
-dDu
-ufs
-uZc
-tCU
-dTk
-rfx
-oZp
-bfc
-tGn
-tGn
-tGn
-tGn
-vFJ
-mzA
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(119,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-maf
-hrL
-nqi
-eKB
-nAH
-hUT
-hUT
-hUT
-iHm
-rWT
-rWT
-qXE
-iHm
-kgT
-qrd
-lZl
-isU
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-eDe
-xUB
-bdR
-mZI
-eDe
-eDe
-uph
-eDe
-eDe
-eDe
-eDe
-uZc
-mxP
-wEE
-vIE
-tzv
-uZc
-uZc
-sAz
-kLN
-dfp
-qfT
-ldq
-tGn
-vFJ
-fvb
-fvb
-uxD
-aGQ
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(120,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-ovJ
-otR
-nqi
-pep
-yhT
-aRd
-bzB
-kbZ
-iHm
-hDU
-iHm
-iHm
-iHm
-lga
-qrd
-shB
-isU
-qrd
-cbt
-cbt
-cbt
-cbt
-cbt
-qrd
-ybQ
-ybQ
-sKs
-bsN
-ybQ
-xLG
-pbt
-nZh
-pbt
-dFb
-nZh
-uZc
-vAg
-uZc
-dKL
-tzv
-uZc
-oua
-dYf
-kil
-qfT
-oZp
-ykr
-aXW
-tDf
-aGQ
-aGQ
-eHT
-aGQ
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(121,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-kCR
-bTy
-nqi
-pep
-yhT
-aJD
-bzB
-aJD
-iHm
-sSB
-sSB
-sSB
-ccV
-sSB
-sSB
-sSB
-isU
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-bxl
-oSu
-cuX
-auD
-eDe
-eDe
-iuo
-iuo
-iuo
-iuo
-iuo
-iuo
-iuo
-iuo
-sQn
-tzv
-uZc
-pjW
-awo
-tzv
-bfc
-eSa
-tGn
-tGn
-tDf
-aGQ
-aGQ
-tGn
-tGn
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(122,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-maf
-hrL
-nqi
-hjN
-yhT
-aJD
-bzB
-urv
-iHm
-sSB
-ccV
-sSB
-mQd
-sSB
-ccV
-lxR
-isU
-isU
-isU
-qrd
-nZR
-nWo
-bvR
-qNF
-bxl
-vSa
-ftv
-jiL
-iqu
-iuo
-cnx
-gGp
-uXG
-wAa
-vjJ
-hdh
-ntq
-iuo
-uZc
-cWM
-uZc
-uZc
-pim
-fbV
-pim
-uZc
-tGn
-hZn
-jQK
-mex
-mex
-xJW
-pSl
-cHT
-cHT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(123,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-ovJ
-umb
-nqi
-fXR
-yhT
-vTV
-rjB
-sav
-iHm
-sSB
-ccV
-sSB
-sSB
-sSB
-ccV
-bvq
-iKT
-iKT
-isU
-qrd
-edI
-nWo
-pRU
-qOs
-bxl
-gGH
-ftv
-hTu
-tve
-cyc
-sBI
-lao
-jeA
-wtX
-iuo
-mFF
-ncl
-iuo
-cQY
-nnc
-bfc
-awo
-awo
-tzv
-bfc
-sgR
-tGn
-uJb
-cmr
-cmr
-cmr
-tGn
-qPl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(124,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-rSD
-bTy
-rom
-irb
-iHm
-iHm
-iHm
-iHm
-iHm
-sSB
-ccV
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-isU
-qrd
-kaZ
-wbk
-hKZ
-bxl
-bxl
-orN
-ftv
-jiL
-krT
-wTW
-izF
-qAY
-oYG
-myQ
-iuo
-iuo
-iuo
-iuo
-iki
-tzv
-ujs
-dYf
-awo
-vhP
-awo
-ltI
-tGn
-tGn
-tGn
-tGn
-tGn
-tGn
-jPG
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(125,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-hUT
-hUT
-hUT
-hUT
-iHm
-sSB
-sSB
-sSB
-sSB
-sSB
-qrd
-qrd
-sNE
-wIQ
-vip
-ulo
-avP
-qrd
-eml
-qrd
-vLb
-mTQ
-vTo
-pbg
-rcm
-bzW
-ftv
-mSJ
-iuo
-iuo
-sJg
-wKj
-laC
-har
-iuo
-fhl
-ebG
-iuo
-nDj
-nfw
-uZc
-vMh
-ukT
-gvn
-mms
-dYf
-tGn
-ajs
-ryX
-fBa
-fBa
-fBa
-lKh
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(126,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-hqD
-hXp
-nvT
-dGo
-dGo
-dGo
-iHm
-sSB
-qrd
-qrd
-qrd
-qrd
-qrd
-vTf
-gvO
-boP
-oDS
-boP
-nbV
-wEY
-kSW
-nWe
-cLC
-apS
-iyt
-bxl
-qJU
-cdF
-ftv
-jiL
-wTW
-tSD
-xkT
-xpA
-jFi
-qaV
-nzq
-nUA
-dch
-iuo
-fzY
-tua
-rGC
-ttJ
-bhF
-eTQ
-hyW
-dgZ
-kQN
-jPG
-ewA
-xPZ
-aGQ
-aGQ
-cnq
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(127,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-hqD
-hXp
-nvT
-hEM
-dGo
-dGo
-iHm
-sSB
-qrd
-mcU
-xCX
-nWe
-ltH
-qtA
-lGo
-lNX
-lNX
-lNX
-pcO
-qAM
-oQN
-nWe
-bxl
-bxl
-bxl
-bxl
-bxl
-pOv
-ftv
-jiL
-wTW
-bZA
-ykb
-xBl
-iuo
-iuo
-iuo
-iuo
-iuo
-iuo
-ufs
-kGr
-uZc
-qsL
-awo
-tzv
-xWn
-gZm
-tGn
-hnZ
-che
-qBJ
-nVP
-fIz
-kcl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(128,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-nAH
-nAH
-hUT
-nAH
-hUT
-nAH
-iHm
-sSB
-qrd
-wsG
-oiA
-hdz
-mkl
-hwr
-neC
-aEJ
-aEJ
-xGO
-oHp
-aOt
-oQN
-nWe
-niM
-lof
-pUI
-qQN
-dCU
-hHr
-ftv
-jiL
-wTW
-rhY
-ykb
-foT
-iuo
-nzw
-iLR
-iim
-iuo
-bJs
-cbE
-sBx
-uZc
-uZc
-map
-kSZ
-mYK
-uZc
-tGn
-nbi
-ftl
-tpw
-qPG
-aGQ
-cnq
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(129,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-ome
-qrd
-gQa
-qrd
-sSB
-sSB
-qrd
-nQQ
-dfP
-nWe
-rgM
-hwr
-sAi
-yek
-dpM
-pie
-heY
-aOt
-syt
-nWe
-nlG
-lof
-pVk
-bde
-dCU
-oFS
-ftv
-jiL
-wTW
-wDc
-ykb
-xBl
-uJG
-xaG
-ykZ
-ybK
-iuo
-wcC
-yae
-hiu
-uZc
-gYj
-bsl
-nHF
-uwG
-kVM
-tGn
-mwg
-iCK
-afv
-oxJ
-wNH
-geL
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(130,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-iOY
-qrd
-kgT
-qrd
-sSB
-jaI
-qrd
-nWe
-nWe
-nWe
-xze
-hwr
-noU
-cIJ
-fvy
-apm
-heY
-aOt
-hCM
-nWe
-kZp
-opC
-lEz
-dCU
-dCU
-haV
-ftv
-jiL
-eLw
-eLw
-eLw
-eLw
-eLw
-eLw
-uZc
-uZc
-uZc
-uZc
-aJZ
-qTH
-aXR
-ubP
-eiP
-qsR
-ufs
-dqF
-tGn
-tGn
-ueX
-dfs
-tGn
-tGn
-jPG
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(131,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-qIv
-kgT
-tkB
-lTA
-sSB
-jpz
-qrd
-oeQ
-xgb
-nWe
-bWZ
-hwr
-oWt
-wJH
-tmU
-qcQ
-heY
-aOt
-qCa
-nWe
-nsM
-opZ
-pWj
-tZz
-rcm
-bzW
-ftv
-aYe
-eLw
-shy
-qat
-cKJ
-yaW
-peo
-uZc
-oAv
-qfn
-uZc
-reD
-tbu
-uZc
-keW
-vIZ
-wkn
-obs
-hTK
-tGn
-fRy
-nUU
-oee
-iFv
-tGn
-qPl
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(132,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-kgT
-qrd
-mLk
-qrd
-sSB
-qxW
-qrd
-wsG
-oiA
-hdz
-mkl
-hwr
-kub
-fVA
-dtc
-xcP
-qxT
-aOt
-oQN
-nWe
-nuR
-otr
-qff
-dCU
-kUC
-cdF
-ftv
-jiL
-qbz
-smx
-qxy
-qnw
-vcg
-vbB
-uZc
-uZc
-uZc
-uZc
-uZc
-uZc
-uZc
-uZc
-uZc
-cpD
-uZc
-uZc
-tGn
-jPG
-jPG
-aKr
-jPG
-jPG
-jPG
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(133,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-kgT
-rov
-vnv
-qrd
-sSB
-sSB
-qrd
-xCX
-mcU
-nWe
-lXb
-aWd
-ofh
-mLm
-mLm
-mLm
-bsw
-fzV
-oQN
-nWe
-dCU
-dCU
-dCU
-dCU
-dCU
-orN
-ftv
-jiL
-eLw
-lFJ
-qxy
-oyW
-ofa
-uKR
-nXk
-uKR
-ttt
-aap
-mAk
-tLr
-mHa
-uNd
-nWp
-uqu
-kBL
-yfN
-tGn
-tbq
-tGn
-bPq
-tGn
-eJU
-tGn
-tGn
-tGn
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(134,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-cmu
-rov
-vnv
-qrd
-vEr
-sSB
-qrd
-qrd
-qrd
-qrd
-oVy
-omK
-mnH
-eCg
-mnf
-cng
-xqL
-weO
-oQN
-sYN
-nqr
-qcX
-fFo
-nqr
-aIs
-cdF
-ftv
-jiL
-eLw
-jQY
-uKR
-dcZ
-emx
-gJq
-hyp
-hyp
-hyp
-lpZ
-hyp
-odJ
-eyV
-fOI
-fOI
-sZD
-iYK
-tkJ
-tGn
-jPG
-jPG
-fnF
-atA
-ajs
-vRm
-mUA
-wtl
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(135,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-qrd
-qrd
-iEU
-qrd
-qrd
-sSB
-nDx
-qrd
-iOY
-qrd
-jEZ
-dXo
-fLf
-gyW
-uFO
-dxP
-fLf
-oqw
-oQN
-xsm
-sYc
-klz
-gDe
-sYc
-nkO
-jNc
-asZ
-njK
-clf
-krq
-pSn
-sfv
-rRp
-bBK
-eLw
-eLw
-eLw
-eLw
-nxC
-eLw
-mHa
-vJH
-aHa
-toQ
-hsU
-dJL
-tGn
-tGn
-tGn
-tGn
-geh
-tGn
-tGn
-tGn
-tGn
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(136,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-djF
-kgT
-tkB
-qrd
-sSB
-jpz
-goh
-kgT
-qrd
-qrd
-nWe
-nWe
-nWe
-nWe
-nWe
-nWe
-vva
-oQN
-qXr
-nel
-neh
-dwi
-nel
-gEc
-neh
-ftv
-xMW
-wpI
-kNT
-ufN
-lFa
-scu
-dDF
-eLw
-nVl
-sZy
-lhv
-pik
-dIi
-mHa
-dCD
-ivg
-mEK
-iYK
-xKd
-tGn
-aoM
-tGn
-sxZ
-kAw
-gaU
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(137,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-bof
-bof
-lDD
-xRM
-odV
-qrd
-sSB
-jpz
-qrd
-kgT
-mus
-qrd
-aLC
-cvo
-uXX
-sYX
-cga
-uXX
-tHw
-oQN
-oqw
-nqr
-puI
-dro
-nqr
-aIs
-cdF
-ftv
-jiL
-eLw
-kQF
-qeA
-qoC
-oMd
-oMJ
-vWz
-vcg
-pgG
-iPR
-sSR
-xEi
-mHa
-vJH
-qvc
-fOI
-iYK
-wlF
-tGn
-aoM
-tGn
-tLF
-kAw
-ogM
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(138,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-qrd
-oEh
-hVI
-qtw
-sSB
-dcw
-qrd
-fHW
-qrd
-qrd
-jbg
-dVy
-uXX
-mqM
-jbg
-uXX
-nXX
-tSU
-nWe
-rfU
-rfU
-rfU
-rfU
-rfU
-orN
-ftv
-jiL
-eLw
-lhA
-qxy
-ftJ
-dZt
-oMJ
-ubW
-xhd
-uhB
-dus
-sul
-hHc
-mHa
-vJH
-aHa
-fOI
-lbK
-tkJ
-tGn
-aoM
-tGn
-tGn
-kAw
-bKY
-tGn
-tGn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(139,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pRs
-qrd
-sCv
-qrd
-qrd
-bts
-qrd
-hqR
-jmU
-jmU
-iYA
-ejP
-qrd
-eoe
-cJw
-uXX
-cJw
-bVT
-uXX
-gTt
-oQN
-nWe
-kUh
-pzV
-qse
-rfU
-tQK
-cdF
-ftv
-jiL
-qbz
-hRH
-qxy
-qnw
-dZt
-deu
-mbJ
-dEQ
-hTd
-kry
-hTd
-qQe
-mHa
-fxG
-yfN
-gId
-fOI
-wES
-tGn
-aoM
-aoM
-tGn
-tdN
-piR
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(140,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pRs
-jRq
-szU
-yew
-kgT
-hVI
-qrd
-msv
-aVs
-aVs
-iGh
-hfz
-qrd
-olR
-uXX
-uXX
-uXX
-tec
-uXX
-uXX
-lBP
-uXX
-nAF
-mMo
-wNL
-wMr
-rcm
-neh
-ftv
-aYe
-eLw
-vRR
-qSJ
-hJK
-hdX
-sZX
-eLw
-vaD
-vmX
-pvD
-wrJ
-uaE
-piR
-piR
-piR
-piR
-bcb
-piR
-tGn
-tGn
-tGn
-tGn
-roj
-llr
-hiQ
-hiQ
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(141,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pRs
-qrd
-qrd
-qrd
-xRM
-hVI
-eir
-dfA
-aea
-aVs
-iGh
-qrd
-qrd
-xdc
-xkU
-eMi
-aaM
-jyu
-uXX
-beh
-plX
-uXX
-wDC
-oTW
-smq
-rfU
-rfU
-rbm
-ftv
-nqx
-eLw
-eLw
-eLw
-eLw
-eLw
-eLw
-eLw
-eLw
-eLw
-eLw
-ilk
-eLw
-piR
-npZ
-lDA
-uqi
-rhI
-uqi
-uqi
-uqi
-uqi
-uqi
-vQi
-ddj
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(142,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-nWM
-sDL
-ifo
-qrd
-sSB
-aaw
-lFw
-kQo
-isU
-cdj
-eAi
-spT
-hsA
-fmK
-plX
-bex
-iky
-aSQ
-uXX
-nBh
-ovK
-qmM
-rTg
-rfU
-cdF
-ftv
-jiL
-wfR
-lDi
-tic
-lnA
-dgw
-rnW
-iLy
-xCg
-eLw
-evN
-vRn
-fYH
-piR
-jlC
-gpW
-piR
-rbz
-piR
-ujr
-vHq
-piR
-rbz
-ujr
-eNY
-hiQ
-hiQ
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(143,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-qrd
-nlg
-nlg
-qrd
-sSB
-qrd
-eBM
-qrd
-hfb
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-aiS
-ovK
-qov
-dhs
-rfU
-ouF
-ftv
-jiL
-wfR
-wAJ
-tic
-vyz
-wuL
-xFg
-mOO
-oNV
-eLw
-cmh
-kSU
-pEY
-piR
-piR
-roj
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(144,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-nyG
-sSB
-sSB
-uuU
-sSB
-sSB
-sSB
-sSB
-isU
-isU
-ahd
-isU
-isU
-isU
-qrd
-uFc
-pOZ
-nof
-qrd
-rfU
-rfU
-rfU
-rfU
-rfU
-xak
-ftv
-jiL
-wfR
-wJR
-tic
-lnA
-wuL
-wuL
-wuL
-wuL
-wuL
-piR
-piR
-piR
-piR
-npZ
-roj
-piR
-alf
-cMU
-fBt
-exN
-wys
-fBt
-sfk
-sfk
-sfk
-sfk
-nYL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(145,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-sSB
-qhH
-bBP
-njq
-bjz
-qWp
-qrd
-qrd
-qrd
-qrd
-qrd
-qrd
-shB
-isU
-elD
-evn
-prZ
-phd
-qrd
-ksd
-sZH
-uNb
-kDB
-bYP
-cdF
-ftv
-jiL
-wfR
-hlG
-vOM
-lkP
-sVY
-akI
-qem
-oiU
-ong
-piR
-jRM
-ebn
-piR
-tnX
-gpW
-lKF
-msu
-iUQ
-wSP
-rcu
-tji
-kaq
-ldf
-rcO
-rcO
-rcO
-bln
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(146,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-sSB
-isO
-qrd
-qrd
-qrd
-gyG
-qrd
-xPv
-lvW
-kGv
-omG
-qrd
-qrd
-sSB
-qrd
-eLB
-iCJ
-eFC
-qrd
-nEO
-mbB
-ssP
-auN
-rcm
-bzW
-ftv
-mSJ
-wuL
-wuL
-sXf
-lzA
-fpb
-cYu
-wuL
-mcV
-nZe
-piR
-xyz
-tKq
-vjK
-lDA
-vQi
-piR
-uAi
-mVj
-wkL
-nMn
-ykL
-wkL
-yli
-yli
-yli
-yli
-iFu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(147,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-bof
-bof
-sSB
-tQS
-qrd
-aVs
-qrd
-iOY
-qrd
-hfO
-yhZ
-uoS
-gpM
-jGj
-qrd
-sSB
-qrd
-qrd
-tZY
-moe
-qrd
-rHY
-dWv
-iaF
-kDB
-kDB
-nED
-ftv
-jiL
-uNC
-wfR
-jtu
-kVF
-bEQ
-tnC
-wuL
-wuL
-wuL
-piR
-jAU
-tUc
-vER
-roj
-ojx
-piR
-iwZ
-uGt
-myO
-mLp
-ioP
-myO
-myO
-myO
-myO
-myO
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(148,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-sSB
-jpz
-qrd
-sJA
-eud
-yfY
-qrd
-xWr
-kYD
-iJl
-cvX
-tRi
-qrd
-sSB
-lWa
-qrd
-qrd
-fiT
-qrd
-qYM
-ryx
-qwc
-tqi
-kDB
-kpi
-ftv
-kbR
-iCQ
-vQZ
-biV
-wtu
-eOh
-ofH
-wuL
-jrv
-uqA
-piR
-piR
-tUc
-vZK
-roj
-tUc
-piR
-uAi
-mVj
-fBt
-exN
-gzv
-fBt
-sfk
-sfk
-sfk
-sfk
-nYL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(149,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-sSB
-jpz
-nAf
-dZf
-fLR
-lgv
-qrd
-hwe
-ivV
-eEf
-hjr
-nnJ
-qrd
-sSB
-sSB
-ejP
-pIu
-cmu
-qrd
-nIt
-ryx
-qAI
-uLH
-kDB
-gGH
-ftv
-jiL
-gQO
-wuL
-tJY
-aRM
-hWS
-hSo
-jtm
-hxP
-uTW
-piR
-trH
-uIp
-cJi
-roj
-ozS
-piR
-hrc
-xWV
-fAp
-yhX
-yhX
-qzc
-ldf
-rcO
-rcO
-rcO
-bln
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(150,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-uuU
-eTp
-qrd
-qrd
-qrd
-qrd
-qrd
-lAU
-lAU
-sYI
-lAU
-lAU
-qrd
-qrd
-sSB
-vrU
-qrd
-qrd
-qrd
-kDB
-kDB
-kDB
-kDB
-kDB
-jRe
-ftv
-glu
-wuL
-wuL
-wuL
-wuL
-wuL
-wuL
-lRY
-lRY
-lRY
-piR
-piR
-piR
-piR
-bmN
-piR
-piR
-wUy
-mVj
-wkL
-see
-tgP
-wkL
-yli
-yli
-yli
-yli
-iFu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(151,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-sSB
-ejP
-qrd
-wzO
-dps
-fFB
-mzr
-hUX
-hjF
-tbd
-agp
-eHU
-gAC
-qrd
-hdx
-qrd
-qrd
-uaD
-lwv
-cQa
-aFh
-gLf
-gLf
-hQK
-nkO
-asZ
-rId
-bin
-vRv
-gLf
-qtO
-gLf
-jNu
-lRY
-tMk
-pYU
-syH
-wMX
-vrw
-piR
-gpW
-myO
-tto
-anH
-hGz
-myO
-mLp
-ioP
-myO
-myO
-myO
-myO
-myO
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(152,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qrd
-qrd
-sSB
-sSB
-qrd
-jKY
-rCq
-oyF
-hGp
-hGp
-hGp
-hGp
-hGp
-ojc
-neL
-eKl
-uzP
-iMN
-hJV
-dxD
-nKq
-nWI
-nXA
-nXA
-nXA
-bNU
-qea
-air
-keL
-dDG
-wOu
-wOu
-xlE
-wXq
-kkg
-xxy
-lvp
-fZX
-nHW
-nlf
-rKM
-piR
-vZJ
-myO
-vMm
-yaK
-cZe
-fBt
-czr
-nOY
-fBt
-sfk
-sfk
-sfk
-sfk
-nYL
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(153,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-kRw
-hng
-kRw
-iMN
-dNp
-jWR
-klc
-qAd
-qAd
-qAd
-jIA
-kKk
-vNP
-vNP
-vJu
-iMN
-hJV
-dxE
-otO
-fAT
-nXA
-ddg
-ddg
-kNR
-fBM
-fBM
-fBM
-xst
-ddg
-ddg
-qNK
-ddg
-nzj
-lRY
-kGe
-fZX
-gwb
-cFM
-mwK
-piR
-roj
-uDH
-qRE
-qQr
-qBP
-jMu
-iZG
-rmT
-lcF
-ldf
-rcO
-rcO
-rcO
-bln
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(154,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-uTP
-onl
-kRw
-qzx
-ngr
-kch
-fpU
-fpU
-fpU
-fpU
-fpU
-kKU
-tGk
-iMN
-edX
-iMN
-nqr
-jgT
-dxE
-ppT
-ykt
-odk
-nhM
-nqr
-nAD
-nAD
-nAD
-nqr
-aWa
-odk
-nIT
-aAj
-jXb
-lRY
-pEE
-fZX
-pCr
-fwb
-qFz
-piR
-dgA
-myO
-udF
-vSW
-dYB
-wkL
-see
-see
-wkL
-yli
-yli
-yli
-yli
-iFu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(155,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-fWz
-onl
-kRw
-qNu
-rCq
-kch
-fpU
-fpU
-fpU
-fpU
-fpU
-kKU
-iXQ
-wsO
-fUi
-nLd
-iMN
-iMN
-nqr
-uRb
-jsS
-nqr
-nqr
-nqr
-xLe
-fBM
-vCH
-nqr
-nqr
-nqr
-oRz
-pfC
-nqr
-lRY
-mqw
-kux
-joL
-tmq
-tfD
-piR
-roj
-piR
-piR
-myO
-myO
-myO
-myO
-myO
-myO
-piR
-piR
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(156,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cYS
-onl
-kRw
-qSR
-rCq
-kch
-fpU
-fpU
-fpU
-fpU
-fpU
-kKU
-biM
-dUP
-iED
-pNj
-mpp
-iMN
-gPb
-ogW
-xMJ
-rQl
-nqr
-qhN
-oCF
-oCF
-oCF
-ksk
-nqr
-nod
-pmS
-vkb
-nNq
-lRY
-wzk
-xXB
-wkH
-uRQ
-bCk
-piR
-rof
-uqi
-uqi
-uqi
-uqi
-cMb
-uqi
-ruU
-vXv
-sOq
-uuH
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(157,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-kRw
-kJT
-kRw
-qzx
-rCq
-kch
-fpU
-aGK
-ojW
-ecB
-fpU
-kKU
-xmk
-tup
-kes
-miH
-ogt
-iMN
-eIK
-nEX
-nXA
-eYq
-kBB
-mjZ
-oCF
-oCF
-oCF
-nhl
-mtx
-xeZ
-xlE
-fDv
-uOW
-lRY
-dtj
-gJm
-lRY
-lRY
-lRY
-piR
-ahU
-piR
-piR
-piR
-biO
-piR
-rtc
-roj
-wCH
-hcT
-kwm
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(158,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-acu
-cIM
-kRw
-fKd
-csM
-kgK
-knk
-bSj
-rws
-akh
-sXX
-kLM
-fzw
-bzJ
-avk
-pNj
-hgM
-iMN
-bPh
-aLZ
-iNC
-xoj
-nqr
-mIO
-oCF
-oCF
-oCF
-jyP
-nqr
-sKu
-usN
-aAj
-krw
-lRY
-xbx
-mcj
-lRY
-nhG
-pVd
-mwD
-bvc
-sQG
-knO
-piR
-aMJ
-piR
-qPU
-roj
-piR
-piR
-piR
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(159,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-nvo
-cIM
-kRw
-iMN
-hlU
-bMt
-iRc
-lOA
-rdt
-iCS
-pmw
-cwF
-bTe
-jlS
-bGb
-bwz
-iMN
-iMN
-nqr
-uRb
-sum
-nqr
-nqr
-nqr
-nqr
-nqr
-nqr
-nqr
-nqr
-nqr
-oRz
-pfC
-nqr
-lRY
-lRY
-lRY
-lRY
-ddy
-ddg
-ddg
-pnf
-jRi
-dBw
-jNg
-hyx
-kdK
-wza
-rof
-suu
-tPL
-ejN
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(160,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cIM
-cIM
-kRw
-fKd
-ngr
-quA
-tjc
-anW
-pdO
-kCk
-ePH
-bIk
-tXV
-iMN
-mzx
-iMN
-iMN
-nGj
-kTL
-ogW
-iQi
-iil
-ibs
-fQi
-now
-oCF
-qjK
-ajX
-bUZ
-xpk
-trq
-rDR
-cmH
-nzr
-pWQ
-tzb
-pWQ
-cTb
-oGt
-rbp
-foL
-foL
-leY
-piR
-awU
-piR
-fHE
-piR
-mom
-hcT
-uBi
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(161,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cIM
-aSK
-kRw
-lpq
-rCq
-kch
-fpU
-lQt
-uGe
-kRR
-fpU
-kmt
-oGM
-cEw
-qPi
-lBK
-mEg
-fBP
-ddg
-wet
-ddg
-ddg
-rnE
-fQi
-oCF
-oCF
-oCF
-ajX
-vxT
-ddg
-xHr
-eiw
-gDe
-lRF
-gLf
-mUE
-gLf
-gLf
-lVf
-mbF
-frW
-tdz
-prQ
-piR
-biO
-piR
-qeX
-cvf
-nko
-gBp
-rdj
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(162,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cIM
-jrM
-kRw
-qSR
-rCq
-kch
-fpU
-fpU
-fpU
-fpU
-fpU
-kmt
-oGM
-cEw
-rdW
-pSd
-mEg
-fBP
-ddg
-fAT
-ddg
-wSR
-aSu
-wGz
-ggd
-ggd
-oaS
-ajX
-nXA
-ddg
-bAf
-grv
-kYM
-sdX
-fIk
-aXj
-awn
-fIk
-wHP
-wmX
-mmi
-yll
-qmb
-piR
-piR
-piR
-piR
-piR
-mom
-hcT
-hcT
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(163,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lNB
-lNB
-cIM
-cIM
-kRw
-qNu
-rCq
-kch
-fpU
-fpU
-fpU
-fpU
-fpU
-kmt
-ewm
-iMN
-nZu
-iMN
-iMN
-ifh
-jLX
-eKf
-gLf
-uzK
-aSu
-fQi
-roo
-cKH
-vUG
-ajX
-nXA
-ddg
-frW
-frW
-frW
-frW
-frW
-frW
-frW
-frW
-frW
-frW
-frW
-yll
-qmb
-til
-bAe
-gSS
-mPZ
-piR
-mom
-hcT
-hcT
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(164,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-jrM
-cIM
-kRw
-lpq
-csM
-kch
-fpU
-fpU
-fpU
-fpU
-fpU
-kmt
-rdW
-hzE
-iFw
-xSK
-iMN
-nqr
-nqr
-nqr
-nqr
-hhl
-aSu
-qEB
-hUc
-hUc
-hUc
-sBF
-nXA
-ghJ
-frW
-tjd
-unh
-vcd
-vAe
-wwe
-frW
-uxj
-pCc
-diS
-xhk
-kpe
-hJg
-piR
-bBS
-wwi
-pvE
-piR
-mom
-hcT
-hcT
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(165,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-izw
-cIM
-kRw
-iMN
-kMX
-kgK
-mAJ
-fll
-hav
-mJy
-kKE
-baa
-fio
-dCW
-dCW
-dCW
-qeY
-fzw
-jhx
-hGp
-nqr
-aAx
-wjx
-aSu
-aSu
-kXt
-nXA
-nXA
-fvx
-ddg
-frW
-tkF
-unm
-vcu
-vAW
-wye
-frW
-pZB
-xAL
-frW
-boa
-qNW
-hLo
-piR
-xRs
-bKR
-rdv
-piR
-mom
-hcT
-hcT
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(166,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-jrM
-cIM
-kRw
-jgB
-cOt
-blF
-fBk
-pmO
-pmO
-pmO
-kZS
-wjm
-kEv
-hLd
-bfj
-bfj
-iMN
-kFJ
-oqd
-slz
-nqr
-keA
-qCy
-pXL
-rXY
-kzP
-oGf
-pxC
-uHE
-nhM
-frW
-toh
-utU
-vlq
-vGi
-wyJ
-frW
-frW
-xBB
-frW
-yll
-hYe
-piR
-piR
-piR
-vOt
-piR
-piR
-mom
-hcT
-hcT
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(167,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cIM
-cIM
-kRw
-xbZ
-wJS
-blF
-pQk
-jHR
-hjg
-hjg
-dBj
-aib
-weg
-thu
-bfj
-bfj
-iMN
-gem
-fDN
-mQl
-qAO
-lwP
-lwP
-lwP
-qAO
-tcE
-qAO
-frW
-frW
-frW
-frW
-ttI
-uAc
-vnY
-vGi
-wAz
-frW
-tBl
-xDm
-frW
-yll
-qmb
-jLh
-pOn
-pOn
-pOn
-pOn
-pOn
-oCe
-uKD
-rTv
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(168,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cIM
-kRw
-kRw
-kRw
-kRw
-oEk
-wFK
-oEk
-iQU
-iQU
-iQU
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-qAO
-gxQ
-rca
-kIw
-eqF
-cHE
-gFh
-frW
-gIf
-yfT
-frW
-frW
-frW
-frW
-uUU
-frW
-frW
-frW
-frW
-frW
-yll
-jTw
-piR
-pOn
-gph
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(169,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-tdB
-oxP
-xhC
-kKG
-kRw
-aNz
-ciM
-cZB
-stx
-dFL
-yiK
-kRw
-qQi
-iAg
-lgw
-swM
-kRw
-axP
-hdg
-kRw
-ykC
-uVL
-tTn
-tTn
-fGx
-jjg
-fjF
-frW
-iTX
-sqi
-sEt
-tzA
-vsY
-aXh
-vsY
-wAO
-iqv
-pgU
-vpj
-xEJ
-lQa
-jbz
-ljL
-wPs
-piR
-piR
-szl
-uwl
-kxs
-wTU
-szl
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(170,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-rKQ
-jmH
-iSD
-uaG
-kRw
-xXK
-luS
-oEk
-hdN
-uCP
-vCy
-kRw
-bKz
-kWa
-wQX
-bSR
-kRw
-ihn
-rQf
-kRw
-mMm
-faS
-fXB
-quO
-cgm
-uhj
-frW
-frW
-chn
-suP
-sFe
-tOl
-kba
-ewB
-vHd
-wKE
-frW
-xkC
-vlP
-hww
-xFl
-hLo
-piR
-pOn
-gSS
-piR
-kZG
-kZG
-kZG
-bbs
-kZG
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(171,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lNB
-lNB
-rKQ
-kLY
-oyZ
-uaG
-kRw
-mLO
-aRX
-oEk
-gfP
-pgv
-pyt
-kRw
-iGo
-irh
-bbb
-wWo
-kRw
-kIu
-rQf
-kRw
-dtI
-xCJ
-hyY
-shV
-kok
-wcQ
-frW
-tdG
-pyU
-sxm
-sFf
-kba
-qwg
-uEG
-vJE
-wKE
-frW
-jPD
-xHw
-sYw
-ctd
-dQn
-piR
-pOn
-vzx
-gGx
-rnl
-lik
-ffV
-aDN
-wwp
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(172,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-ssz
-cWY
-veA
-ata
-kRw
-qgh
-ciM
-wJf
-atL
-dBf
-yiK
-kRw
-lNB
-uXw
-lNB
-aiO
-kRw
-kRw
-djy
-kRw
-ufl
-oXW
-fEG
-cNE
-oXW
-ufl
-frW
-oOg
-veB
-sxm
-sFf
-hip
-uEG
-uEG
-vJE
-osk
-frW
-frW
-xLd
-frW
-piR
-aMJ
-piR
-pOn
-gSS
-lKF
-gRI
-gcf
-hXI
-gxd
-aWj
-eqk
-eqk
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(173,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cIM
-kRw
-kRw
-kRw
-kRw
-kRw
-ejG
-kRw
-kRw
-kRw
-kRw
-kRw
-pqY
-fdX
-ryi
-liL
-kRw
-gqF
-qKG
-kRw
-nRo
-asS
-asS
-nvO
-asS
-aZF
-frW
-iSt
-piq
-sxm
-sFf
-hip
-uEG
-khS
-vJE
-tfw
-frW
-eTT
-xNL
-gvh
-oTK
-dVD
-sOD
-pOn
-mVR
-piR
-fix
-cBq
-rsz
-mnY
-uhU
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(174,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-lVq
-kRw
-pJq
-pwA
-rlX
-xLO
-kRw
-xTW
-sBE
-kRw
-upo
-wvw
-dTe
-jzv
-asS
-qzh
-frW
-tdG
-sKR
-sxm
-sFf
-ttG
-qXs
-uEG
-vJE
-wKE
-frW
-oce
-cAU
-ycu
-piR
-bGh
-sOD
-pOn
-jAU
-piR
-tgA
-cFK
-gaT
-vuI
-rtH
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(175,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-rCv
-gmH
-rCv
-snd
-snd
-snd
-snd
-nLM
-snd
-cIM
-eNi
-pAn
-efa
-xJM
-hCJ
-vXH
-kRw
-dcH
-iMM
-kRw
-cpa
-kXF
-dTN
-hFc
-sjc
-kRw
-kRw
-kRw
-nre
-sxv
-sId
-tOP
-ttG
-ueJ
-vQb
-wKE
-frW
-bKG
-hrC
-piR
-piR
-piR
-piR
-pOn
-gSS
-piR
-pen
-pen
-pen
-aTj
-pen
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(176,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-rCv
-gmH
-rCv
-snd
-qPS
-cCk
-qjq
-eJc
-jOT
-nHf
-aZI
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-rYK
-kRw
-kRw
-fpp
-asS
-asS
-rbD
-shE
-kRw
-rKg
-rUG
-mbD
-hzL
-frW
-tRo
-lTg
-eFr
-sqj
-wKL
-xfI
-ugW
-piR
-jVe
-piR
-aoo
-piR
-bFf
-piR
-piR
-lCO
-rFg
-rFg
-gdS
-gAP
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(177,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-rCv
-xsP
-rCv
-snd
-wVu
-pUC
-iwH
-qON
-snd
-tat
-kYv
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-kRw
-ufW
-gIg
-czu
-xwX
-xwX
-kRw
-evI
-kRw
-hzX
-rXx
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-fMs
-iYF
-pUe
-sKI
-pOn
-ebn
-piR
-rFg
-lxI
-udy
-lOh
-oiJ
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(178,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-rCv
-egx
-rCv
-snd
-iWf
-hci
-oyO
-uPA
-snd
-tat
-kYv
-kRw
-hUP
-kRw
-hUP
-kRw
-dyq
-kRw
-cIM
-aKx
-rQV
-rQV
-rQV
-rQV
-aKx
-aKx
-lIt
-kRw
-kRw
-piR
-piR
-uyh
-wqW
-piR
-hcT
-hcT
-hcT
-hcT
-piR
-piR
-piR
-ylD
-piR
-kEe
-mPZ
-piR
-tHH
-cky
-vBd
-ooV
-vkz
-eqk
-eqk
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(179,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-rCv
-hYb
-rCv
-snd
-lKj
-ddb
-snd
-keM
-snd
-tat
-kYv
-fTv
-hJQ
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-aKx
-cfH
-nmV
-pcC
-dfw
-aKx
-rSN
-piO
-loa
-loa
-sjH
-uqi
-uqi
-uqi
-gKO
-kRO
-aYq
-aYq
-aYq
-aqR
-pOn
-pOn
-pOn
-bFf
-xHR
-gSS
-piR
-nFi
-rFg
-hHn
-kWM
-tHH
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(180,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-kRw
-kRw
-kRw
-snd
-snd
-snd
-snd
-ktY
-snd
-kRw
-kRw
-kRw
-kRw
-toK
-cIM
-eiJ
-kRw
-kRw
-kRw
-aKx
-cfH
-pBZ
-pcC
-pcC
-aKx
-wTB
-rGI
-pEQ
-dzR
-piR
-piR
-piR
-lxZ
-qdX
-ick
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-pen
-pen
-pen
-pen
-pen
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(181,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-kRw
-kRw
-kRw
-kRw
-snd
-snd
-snd
-snd
-sMY
-snd
-kRw
-kRw
-kRw
-kRw
-pZL
-cIM
-mSa
-pNs
-jOX
-hcR
-aKx
-cfH
-qhp
-pcC
-shz
-aKx
-kRw
-hzU
-kRw
-piR
-piR
-lCs
-piR
-eXB
-pXh
-qcZ
-piR
-rsW
-pvm
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-pen
-pen
-pen
-pen
-pen
-pen
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(182,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-bjb
-wzm
-oyh
-oyh
-kRw
-kRw
-aSK
-cIM
-pFI
-kRw
-nyv
-gmH
-aKx
-aKx
-aKx
-aKx
-aKx
-aKx
-tnt
-cIM
-pmB
-piR
-kuA
-pwC
-piR
-piR
-rne
-piR
-piR
-hGL
-ivE
-piR
-piR
-bml
-fPW
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(183,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vOv
-oyh
-bjb
-wzm
-oyh
-oyh
-kRw
-kRw
-kRw
-cIM
-cIM
-hJQ
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-cIM
-hJQ
-cIM
-cIM
-jNt
-piR
-pDd
-vlX
-vlX
-llm
-wDS
-huR
-lYX
-lYX
-piR
-piR
-piR
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(184,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-rza
-bjb
-wzm
-oyh
-oyh
-oyh
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-oyh
-oyh
-oyh
-eYj
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(185,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-lfU
-bjb
-wzm
-oyh
-oyh
-oyh
-oyh
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-kRw
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-piR
-oyh
-oyh
-oyh
-oyh
-fPW
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(186,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-lfU
-onM
-wzm
-oyh
-vOv
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(187,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-lfU
-onM
-wzm
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(188,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-fZV
-oyh
-lfU
-onM
-wzm
-iTg
-uTx
-uTx
-iTg
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(189,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-keE
-oyh
-lfU
-onM
-wzm
-wLl
-lfU
-lfU
-bOg
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(190,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-fZV
-vOv
-lfU
-onM
-wzm
-tkq
-ryh
-bjb
-iTg
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(191,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-oyh
-oyh
-oyh
-lfU
-onM
-cCf
-ebl
-jtr
-lfU
-wzm
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-eYj
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(192,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vOv
-uXM
-uTx
-uTx
-lfU
-bjb
-lDb
-lfU
-lfU
-lfU
-bOg
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-eYj
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(193,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-kFO
-onM
-onM
-onM
-onM
-onM
-onM
-onM
-lfU
-wzm
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(194,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-kFO
-lfU
-lfU
-lfU
-bjb
-lfU
-lfU
-lfU
-lfU
-wzm
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-fPW
-eYj
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(195,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-keE
-kFO
-onM
-onM
-onM
-onM
-onM
-onM
-onM
-lfU
-wzm
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(196,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fZV
-kFO
-lfU
-lfU
-lfU
-bjb
-lfU
-lfU
-lfU
-lfU
-wzm
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(197,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-kFO
-onM
-onM
-onM
-onM
-onM
-onM
-onM
-lfU
-wzm
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-eYj
-oyh
-oyh
-aRY
-aRY
-aRY
-aRY
-aRY
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(198,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vOv
-tDH
-uJR
-uJR
-uJR
-uJR
-uJR
-uJR
-uJR
-uJR
-ugb
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xKt
-djc
-djc
-djc
-dkn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-eYj
-oyh
-oyh
-pUV
-pUV
-pUV
-pUV
-pUV
-aRY
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(199,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-keE
-fZV
-fZV
-keE
-fZV
-fZV
-fZV
-fZV
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ujI
-edA
-pRs
-pRs
-wbT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dnS
-gYb
-dnS
-dnS
-pUV
-aRY
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(200,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ujI
-pRs
-pRs
-pRs
-wbT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sWs
-pRs
-pRs
-dnS
-pXr
-vvC
-dnS
-pUV
-xfE
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(201,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qRS
-acl
-pRs
-acl
-xUk
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dnS
-gYb
-dnS
-dnS
-pUV
-aRY
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(202,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pUV
-pUV
-pUV
-pUV
-pUV
-aRY
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(203,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-aRY
-aRY
-aRY
-aRY
-aRY
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(204,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(205,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(206,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(207,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(208,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(209,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(210,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(211,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(212,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(213,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(214,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(215,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(216,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(217,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(218,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(219,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(220,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(221,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(222,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(223,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(224,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(225,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(226,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(227,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(228,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(229,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(230,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(231,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(232,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(233,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(234,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(235,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(236,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(237,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(238,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(239,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(240,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(241,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(242,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(243,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(244,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(245,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(246,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(247,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(248,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(249,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(250,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(251,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(252,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(253,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(254,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(255,1,3) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-
-(1,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(2,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(3,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(4,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(5,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(6,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(7,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(8,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(9,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(10,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(11,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(12,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(13,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(14,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(15,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(16,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(17,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(18,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(19,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(20,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(21,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(22,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(23,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(24,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(25,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(26,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(27,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(28,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(29,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(30,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(31,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(32,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(33,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(34,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(35,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(36,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(37,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(38,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(39,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(40,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(41,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(42,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(43,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(44,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(45,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(46,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(47,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(48,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(49,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(50,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(51,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(52,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(53,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(54,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(55,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(56,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(57,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(58,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(59,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xXo
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(60,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(61,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(62,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(63,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wIp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(64,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-tlJ
-ucA
-gMe
-gMe
-gMe
-gMe
-gMe
-gMe
-gMe
-ucA
-tlJ
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(65,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dCK
-gMe
-gMe
-cGQ
-dkD
-rrX
-iJM
-tms
-gMe
-gMe
-dCK
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(66,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-aNs
-sGb
-mXD
-ijQ
-izV
-rrX
-rrX
-rrX
-dDC
-sAw
-iVP
-sGb
-uIx
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(67,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-aNs
-cRe
-rrX
-djJ
-pWa
-rrX
-kbS
-rrX
-uKT
-bDC
-rrX
-fxT
-uIx
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(68,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-hIp
-xHe
-beE
-ngf
-pCS
-mTs
-qox
-aNs
-xdV
-rrX
-rrX
-fdG
-acC
-acC
-acC
-vtH
-rrX
-rrX
-iPU
-uIx
-nDu
-nDu
-nDu
-bkY
-aDQ
-sNa
-sfw
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(69,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xJo
-uxw
-xHe
-qhQ
-iQy
-ibo
-qox
-qox
-aNs
-pYj
-hTj
-vjm
-fBA
-lhi
-wri
-gEW
-uiY
-rrX
-fPX
-nHa
-uIx
-nDu
-mTi
-eZD
-sUZ
-mpK
-qtz
-nsh
-jcf
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(70,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-yjN
-uxw
-ozA
-eGK
-cAi
-gEB
-cmw
-cHz
-aNs
-sQw
-rDQ
-rrX
-ewp
-eIb
-uBN
-mzv
-wvA
-rrX
-nss
-wqQ
-uIx
-sVi
-wJq
-wJq
-ucS
-hGy
-uxW
-wVr
-wsj
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(71,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-xHe
-xHe
-rNL
-kjd
-yiI
-uxw
-pkm
-aNs
-mPs
-ivk
-rrX
-rrX
-djJ
-svK
-bDC
-rrX
-rrX
-iBb
-rzg
-uIx
-sow
-kMb
-hDK
-tJL
-aFY
-okt
-dLL
-nYo
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(72,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-ioM
-gja
-xjQ
-iqD
-vzM
-xJp
-uxw
-xjX
-aNs
-kWD
-sZO
-rlJ
-nKL
-rrX
-wsh
-rrX
-shu
-hwM
-ukK
-xzS
-uIx
-oad
-uxW
-rao
-qZq
-qZq
-dAi
-fBY
-gjn
-voT
-voT
-voT
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(73,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-lRc
-lVV
-tqu
-hdL
-iKJ
-bfx
-eGK
-onE
-aNs
-xMV
-wFT
-gaJ
-qOq
-twM
-njS
-piI
-kcr
-qNY
-iTN
-qGF
-uIx
-tnM
-lvm
-vSG
-mpK
-key
-nsh
-nsh
-wAH
-rej
-rVy
-wbo
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(74,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-nKs
-xHe
-xHe
-aNs
-aNs
-aNs
-aNs
-aNs
-mEY
-dCK
-qkz
-dCK
-dCK
-dCK
-dCK
-uIx
-uIx
-uIx
-voT
-voT
-rCM
-voT
-voT
-voT
-voT
-voT
-voT
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(75,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-jnv
-dzY
-lJp
-lJp
-lJp
-gsx
-maK
-maK
-maK
-maK
-prD
-boS
-aNs
-rYS
-pBV
-wlK
-eCM
-nET
-eCM
-uNm
-vQR
-hEQ
-uIx
-rhJ
-rhJ
-rhJ
-pTI
-rao
-iES
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(76,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-gBs
-xHe
-sHq
-vLW
-vLW
-vLW
-vLW
-vLW
-vLW
-cCV
-uVU
-gGB
-aNs
-sRO
-rzu
-bDV
-oID
-fst
-mWn
-uFw
-vQR
-xDy
-uIx
-nDu
-nDu
-nDu
-xSr
-rao
-yke
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(77,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-vXM
-rPA
-abP
-vLW
-mNI
-gGO
-qhC
-vDN
-vLW
-snU
-uVU
-gho
-aNs
-pZp
-wfD
-bxe
-eCM
-evo
-eCM
-tVp
-vQR
-uIz
-uIx
-oqx
-mpZ
-rUN
-rSK
-rao
-hVk
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(78,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-xHe
-xHe
-abP
-vLW
-szb
-wYs
-eWS
-kha
-vLW
-aNs
-uAo
-aNs
-aNs
-jcS
-dCK
-dSa
-eCM
-eCM
-eCM
-eCM
-eCM
-eCM
-uIx
-voT
-nDu
-nDu
-okT
-wAH
-aCu
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(79,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-lJp
-lJp
-lJp
-abP
-vLW
-aEP
-wnO
-wnO
-bxc
-vLW
-mqi
-hiU
-hJF
-rEU
-rlC
-khk
-gfb
-rEU
-hLL
-vIS
-vIS
-tuy
-qDD
-qyo
-vZU
-brT
-brT
-nBV
-uif
-mLH
-voT
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-wIp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(80,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-lJp
-lJp
-xHe
-olV
-abP
-vLW
-oYL
-wYR
-jZL
-kWx
-nZg
-iPY
-qdS
-iPY
-wbr
-agK
-spF
-bCq
-abS
-fsY
-ewW
-bRq
-tvU
-qTn
-dKJ
-voT
-voT
-hFb
-voT
-voT
-voT
-voT
-mSl
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(81,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-lJp
-lJp
-aNs
-aNs
-aNs
-rNN
-vLW
-qoI
-rbK
-wnO
-keg
-vLW
-geA
-oqH
-toM
-eNw
-ohu
-prd
-njU
-rEU
-gxn
-hbN
-omr
-vhV
-omr
-nfU
-voT
-epk
-ndo
-wAH
-pPY
-faL
-voT
-jvf
-vNa
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(82,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-lJp
-lJp
-hTr
-aNs
-sTG
-qlp
-qlp
-oKq
-gMi
-ciz
-dWu
-wfx
-vLW
-vLW
-vLW
-gYS
-gYS
-bmD
-lgD
-ykw
-hIb
-fKZ
-hbW
-dbZ
-hKg
-raq
-voT
-voT
-rao
-ndo
-dQs
-rao
-rao
-iiW
-tje
-laZ
-pxy
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(83,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-xHe
-tWo
-lJp
-aNs
-aNs
-aNs
-vjC
-ccf
-uJA
-oKq
-iUS
-snL
-qsH
-wAb
-wJt
-mIT
-vLW
-kHl
-hJF
-gxn
-rlP
-tBq
-czp
-czp
-wgO
-czp
-tdF
-czp
-uIx
-jNr
-uif
-ndo
-ndo
-ndo
-ndo
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(84,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pRs
-xHe
-xHe
-xHe
-tSf
-xHe
-eGK
-uxw
-kCi
-xHe
-xHe
-lJp
-aNs
-glw
-aNs
-omh
-per
-uTG
-oKq
-nih
-wnO
-pIS
-lRR
-vPj
-igw
-vLW
-pmo
-wtt
-gxn
-dfm
-hsa
-czp
-tAE
-jjs
-bja
-bcD
-mtW
-uIx
-qWm
-yke
-fDM
-rao
-wAH
-ndo
-voT
-ndo
-ndo
-ndo
-ndo
-ndo
-ndo
-rys
-fjq
-fjq
-fjq
-pTI
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(85,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pRs
-aDn
-uxw
-krF
-uxw
-xHe
-jbc
-nnj
-nnj
-hto
-hto
-lJp
-aNs
-glw
-aNs
-oKq
-sRd
-oKq
-oKq
-oKq
-oKq
-oKq
-oKq
-oKq
-wjj
-oKq
-bJV
-hWp
-mdE
-dfm
-tBq
-czp
-sFa
-sFa
-sFa
-bcD
-sFa
-uIx
-nIk
-rao
-mel
-okt
-wAH
-ndo
-trV
-ndo
-voT
-voT
-voT
-voT
-voT
-qlh
-nDu
-nDu
-nDu
-koc
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(86,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-pRs
-xHe
-xHe
-xHe
-aLb
-xHe
-hto
-hto
-hto
-hto
-uxw
-lJp
-aNs
-glw
-aNs
-drw
-per
-med
-jvM
-nSV
-pHT
-phj
-ehu
-qOO
-ced
-oKq
-dWL
-oKY
-cfu
-dfm
-tBq
-wgO
-apT
-aGm
-aGm
-gtw
-hGa
-uIx
-uIx
-uIx
-uIx
-uIx
-uIx
-uIx
-voT
-rIU
-voT
-vbT
-ehr
-wOy
-voT
-qlh
-nDu
-nDu
-nDu
-qgV
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(87,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-kqp
-dIQ
-dIQ
-gmA
-uxw
-jBa
-xHe
-dGp
-lJp
-aNs
-glw
-aNs
-hmu
-mEh
-nUO
-vyu
-sAr
-lEg
-tWR
-mzW
-mzW
-rtL
-hxJ
-cWf
-cWf
-cfu
-dfm
-tBq
-wgO
-xYS
-eYh
-uiM
-vAp
-fUm
-oTx
-uqc
-nYe
-cep
-fwj
-lOe
-uIx
-aaO
-xFo
-lBG
-pZE
-sMw
-eFJ
-lUS
-qlh
-nDu
-nDu
-nDu
-qgV
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(88,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-qox
-qox
-qox
-mhY
-awH
-oBL
-xHe
-jgz
-lJp
-aNs
-glw
-aNs
-mGY
-mUm
-ugn
-jvM
-eVo
-lYP
-fzU
-fzU
-gJg
-fzU
-hxJ
-oKY
-cWf
-cfu
-rti
-vuU
-wgO
-rZb
-acL
-jKF
-fXa
-sFa
-uCC
-uqc
-lng
-pWD
-xMF
-kBi
-uIx
-rao
-vdU
-kRN
-uJW
-eiO
-wkF
-voT
-qlh
-nDu
-nDu
-nDu
-qgV
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(89,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-exe
-xHe
-qox
-mhY
-uxw
-epQ
-xHe
-vAB
-lJp
-aNs
-glw
-aNs
-epu
-dMY
-rqj
-jvM
-lsM
-dOa
-qLW
-nEa
-gaB
-akr
-oKq
-cWf
-vlD
-qND
-dfm
-tBq
-wgO
-xYS
-ltC
-mpL
-joH
-oEC
-xpi
-uqc
-bru
-wQR
-xMF
-xyA
-uIx
-uwP
-uwP
-hSh
-nAE
-sIE
-cQC
-voT
-vZq
-mNY
-mNY
-mNY
-bJQ
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(90,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-qox
-nMU
-lfM
-efY
-qkZ
-qkZ
-jFO
-jDD
-lJp
-aNs
-glw
-nPE
-oKq
-oKq
-oKq
-oKq
-oKq
-hBx
-oKq
-jCA
-jCA
-jCA
-jCA
-jCA
-jCA
-xEB
-dfm
-tBq
-wgO
-xwx
-tIc
-tIc
-vnM
-sFa
-czp
-uqc
-jIJ
-ezm
-hzQ
-pSz
-uIx
-uIx
-uIx
-uIx
-uIx
-vEa
-fXs
-fXs
-fXs
-fXs
-fXs
-jNE
-hfe
-voT
-voT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(91,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xHe
-xHe
-bRh
-keX
-rQx
-uEY
-uxw
-uxw
-aSU
-qkZ
-prD
-aNs
-hWu
-hWu
-hWu
-hWu
-hWu
-nPE
-qtH
-koU
-oKq
-vBN
-rkO
-rkO
-usF
-kti
-jCA
-jib
-dfm
-tBq
-czp
-rAe
-sFa
-sFa
-sFa
-jUC
-uqc
-fOj
-ghH
-khK
-vrJ
-ghH
-cqc
-gIl
-cis
-cub
-wTg
-vEa
-rxZ
-tCG
-pme
-iho
-fXs
-vlb
-fXs
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(92,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-mSG
-mSG
-mSG
-mSG
-doC
-mSG
-sJm
-sJm
-sJm
-nPE
-hwP
-nPE
-nPE
-nPE
-nPE
-nPE
-nPE
-nPE
-asb
-sIT
-oKq
-kxM
-eFq
-bGt
-eFq
-pUn
-dVk
-gxn
-dfm
-sEE
-czp
-uIL
-nSS
-uDA
-xSM
-auK
-uqc
-eJX
-vnd
-qzK
-ojM
-itR
-cjM
-cah
-uzZ
-egJ
-ehX
-vEa
-iZA
-fTa
-fTa
-vqe
-fXs
-dek
-dek
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(93,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-svI
-pfi
-tQO
-mXH
-qyH
-mXH
-pSI
-mUd
-xJx
-nPE
-bvM
-fUk
-rXJ
-gDy
-xXm
-eRZ
-uIr
-nPE
-tKs
-hug
-oKq
-fpg
-rQj
-hNU
-pQG
-wMM
-nvs
-ixZ
-dfm
-nmk
-uqc
-uqc
-uqc
-uqc
-uqc
-uqc
-uqc
-rZV
-pld
-gLb
-wWX
-wvq
-uWl
-gIl
-qkU
-pHc
-cRJ
-vEa
-vok
-fTa
-wtL
-lew
-fXs
-dKk
-qEh
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(94,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-svI
-kvw
-dXc
-xpL
-qRI
-mKO
-rDL
-heI
-jha
-nPE
-xVV
-gsy
-uwf
-pUK
-moL
-hMp
-gDy
-nPE
-nPE
-nPE
-jCA
-kiM
-nou
-vUQ
-vOy
-lKn
-dVk
-gxn
-ePJ
-pEO
-hUR
-aId
-aId
-dKF
-tRq
-hUR
-sRG
-lOk
-wPw
-scH
-puw
-sdN
-vyL
-uqc
-vEa
-vEa
-vEa
-vEa
-nQo
-fTa
-bMW
-sbn
-fXs
-nGW
-dek
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(95,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-svI
-pfi
-mDD
-wFa
-eIs
-wFa
-tYV
-oUW
-xwL
-nPE
-nPE
-nPE
-nPE
-nPE
-nPE
-pDq
-aex
-tZJ
-fkv
-wHr
-jCA
-eXT
-mpM
-vNq
-bMa
-ngX
-jCA
-gxn
-dfm
-pAk
-lgX
-wFA
-cKq
-uza
-lxC
-bfT
-xht
-lYY
-pld
-hit
-vom
-wvq
-rJI
-kDU
-vEa
-owb
-owb
-fXs
-fXs
-fXs
-cev
-fXs
-fXs
-fXs
-vlb
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(96,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-mSG
-mSG
-mSG
-mSG
-aSX
-aSX
-pqH
-bJA
-mKu
-hHi
-fMc
-gOF
-ddH
-uOc
-nPE
-pDq
-vfi
-lmb
-lak
-eeN
-jCA
-pbe
-lSY
-kdx
-wwE
-lKn
-bOE
-gxn
-dfm
-veI
-uqc
-uqc
-uqc
-uqc
-uqc
-uqc
-uqc
-fjK
-bta
-ubt
-xZb
-tPx
-rJI
-bkd
-vEa
-owb
-fXs
-fXs
-aeL
-wtL
-bAG
-bAG
-bAG
-bAG
-bAG
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wIp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(97,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sFR
-crp
-crp
-dWz
-lYx
-unQ
-wMU
-aaN
-pGz
-jjj
-dIJ
-oTq
-jjT
-hmM
-nPE
-pDq
-iea
-jPp
-bwA
-gRA
-jCA
-jZm
-ulW
-qFi
-piw
-hQQ
-kVZ
-dmc
-ePJ
-jdM
-fUq
-jzF
-nFH
-bkT
-apq
-oKD
-uqc
-xrh
-krU
-uTB
-mDl
-efb
-qsP
-llT
-vEa
-owb
-fXs
-dIh
-wtL
-eLq
-bAG
-wtL
-fXs
-fXs
-sdh
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(98,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vyc
-vPP
-rrs
-mCU
-hGC
-jJM
-hAH
-eSq
-tHk
-bDn
-gwe
-eoI
-nPE
-nPE
-nPE
-pDq
-nPE
-nPE
-nPE
-nPE
-jCA
-fQF
-mBM
-bxb
-mBM
-rmZ
-bOE
-gxn
-dfm
-aqu
-kbI
-oAe
-uOh
-scI
-jwj
-aYl
-uqc
-uqc
-uqc
-uqc
-uqc
-uqc
-uqc
-uqc
-vEa
-owb
-fXs
-fRx
-msj
-ayU
-bAG
-bAG
-fXs
-tJE
-biC
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(99,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lYx
-oRh
-lYx
-wWY
-lYx
-ngD
-wMU
-aqm
-kFy
-xTG
-xxA
-xdE
-nPE
-uZr
-moL
-xZu
-nPE
-fkN
-fQx
-nTJ
-iXS
-mFQ
-hNh
-hNh
-hNh
-sdB
-jCA
-yeq
-dfm
-aqu
-raq
-vIr
-iow
-qgb
-yfn
-ioR
-oAe
-kbT
-vDJ
-mau
-nYN
-pIj
-nYN
-szx
-vEa
-owb
-vEa
-vEa
-vEa
-vEa
-vEa
-bAG
-fXs
-vFS
-tde
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(100,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sJm
-lNx
-koC
-oOA
-tyR
-tyR
-xqB
-voX
-kFy
-eTV
-auO
-fNt
-hsT
-lEs
-dIl
-nPE
-nPE
-vZi
-wFW
-vIF
-iXS
-iXS
-iXS
-iXS
-iXS
-gYS
-gYS
-rPF
-dfm
-pSp
-tLk
-vIr
-kQp
-nak
-eHD
-gcH
-oAe
-twz
-dDw
-mau
-xPE
-qFL
-gYI
-rPK
-vEa
-owb
-owb
-owb
-owb
-owb
-vEa
-bAG
-fXs
-fXs
-sdh
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(101,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sJm
-iwD
-rDL
-sab
-vuB
-vuB
-vuB
-hfE
-bep
-hnG
-pNa
-sJM
-nPE
-pDq
-cSk
-nPE
-wIz
-jLt
-wFW
-wFW
-nEs
-iHM
-iLH
-mBt
-iXS
-gBU
-tYW
-lui
-dfm
-aqu
-raq
-vIr
-nJT
-oXV
-cSF
-aEm
-oAe
-mxO
-hwd
-mau
-eae
-mGT
-xWq
-cfe
-vEa
-vEa
-vEa
-vEa
-vEa
-vEa
-vEa
-bAG
-bAG
-bAG
-lCg
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(102,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sJm
-wBO
-qcY
-cHK
-ulp
-hPf
-hPf
-cGX
-hoa
-oWs
-ilx
-oPU
-nPE
-whI
-hMp
-nPE
-xBt
-qlf
-qlf
-qlf
-wKk
-wFW
-ktN
-sVc
-whb
-pNW
-oCx
-oCx
-dfm
-aqu
-hbg
-oAe
-iWT
-iUT
-nyL
-xSQ
-dzE
-iUb
-mau
-mau
-mau
-xqY
-mau
-mau
-mau
-hSD
-raE
-pke
-fmG
-nhZ
-vEa
-aIU
-wtL
-bAG
-wtL
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(103,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sJm
-sJm
-mcr
-rhw
-kKO
-sRn
-sRn
-iAt
-sJm
-sJm
-sJm
-sJm
-nPE
-gDy
-pDq
-nPE
-nCP
-hOF
-tJN
-iZE
-rIb
-xAk
-qyD
-cGt
-tuc
-dJo
-wJT
-wJT
-pwI
-tDO
-oAe
-oAe
-oAe
-oAe
-dRI
-emK
-mau
-mau
-mau
-nEZ
-qmf
-xAn
-ygI
-lbp
-lXx
-ieX
-nah
-jLm
-hLq
-eQd
-vEa
-eEN
-wtL
-bAG
-tqr
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(104,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-gQV
-gQV
-bTQ
-gQV
-gQV
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sJm
-sJm
-mcr
-rhw
-mZT
-xLo
-xLo
-use
-sJm
-lxs
-moL
-moL
-moL
-moL
-xZu
-nPE
-dUY
-axF
-jUg
-aMo
-sUt
-sUt
-fLz
-gSs
-hhI
-hRP
-euu
-euu
-rti
-lSd
-bDL
-dHD
-dHD
-bDL
-bDL
-dTY
-mau
-mHV
-gXW
-pTP
-pTP
-nHy
-iqR
-apg
-lXx
-dAe
-hhX
-dlt
-hLq
-wQh
-vEa
-iQB
-eGl
-fPD
-jbV
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(105,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-gQV
-gQV
-lAJ
-cxR
-gXO
-gQV
-gQV
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xuh
-sJm
-sJm
-elE
-sJm
-sJm
-sJm
-sJm
-sJm
-sJm
-pDq
-gDy
-gDy
-gDy
-gDy
-cSk
-nPE
-hKt
-nWP
-xvr
-hIB
-nTo
-hns
-oLE
-jbr
-iXS
-eHr
-wGb
-mvw
-dfm
-nWS
-bDL
-ebK
-ebK
-bDL
-oFs
-cNQ
-mau
-apg
-dtM
-iqR
-orl
-nbj
-iqR
-apg
-sWm
-qHo
-wtF
-wtF
-bnL
-uDL
-vEa
-jbV
-guI
-iOu
-jbV
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(106,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-bTQ
-gQV
-nqU
-cbm
-hLy
-jOp
-qxd
-gQV
-mQO
-xuh
-xuh
-xuh
-xuh
-xuh
-sWs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iaz
-pRs
-sWs
-iAe
-vYV
-hxL
-lez
-oSQ
-qrf
-xQg
-nPE
-jNM
-xZu
-osS
-dvc
-eMg
-gDy
-gDy
-nPE
-nPE
-iXS
-iXS
-iXS
-iXS
-iXS
-iXS
-iXS
-iXS
-gYS
-gYS
-gir
-tnj
-tEv
-dPS
-xFp
-dGF
-kHR
-jIZ
-ggS
-cwX
-apg
-dtM
-dGf
-nJC
-saB
-iqR
-apg
-sWm
-kHO
-iAq
-sBV
-iAq
-cBx
-vEa
-jbV
-qZh
-jbV
-jbV
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(107,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-bTQ
-hDr
-lbm
-hLy
-hLy
-hLy
-uyQ
-oFi
-oFi
-aPu
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xuh
-xuh
-xuh
-hNj
-jAR
-lVU
-aWw
-oSQ
-qZi
-qZi
-nPE
-pDq
-gDy
-gDy
-mif
-pcq
-lpe
-gDy
-sCz
-nPE
-qPv
-pJV
-iag
-hAV
-iqy
-mKs
-ryE
-bwu
-wwT
-aBV
-kyj
-dfm
-xnY
-nQY
-xyw
-xyw
-tnR
-hTD
-rRU
-cwX
-apg
-dtM
-hFA
-aDE
-saB
-iqR
-apg
-sWm
-rHf
-cdf
-ooN
-hwL
-mjM
-vEa
-jbV
-qZh
-jbV
-vhS
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(108,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-bTQ
-gQV
-fmk
-vjc
-hLy
-uyQ
-mBm
-gQV
-mQO
-xuh
-xuh
-xuh
-xuh
-xuh
-sWs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iaz
-pRs
-sWs
-iAe
-kDN
-bkU
-bJi
-aWw
-blj
-tvY
-nPE
-pDq
-jNl
-iPs
-rfM
-lXj
-vpn
-gDy
-uDE
-nPE
-ybn
-ipn
-ipn
-ipn
-fpn
-uGO
-mCJ
-hax
-btT
-hIb
-uSW
-dfm
-cjo
-bDL
-jgG
-jgG
-bDL
-xdC
-raN
-lXx
-rYf
-dtM
-ptW
-mdL
-bGs
-iqR
-apg
-lXx
-wIW
-iTA
-xEl
-jtb
-oiu
-vEa
-jbV
-qZh
-jbV
-jbV
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(109,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-gQV
-gQV
-mhZ
-ddM
-nHr
-gQV
-gQV
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xuh
-lln
-lln
-mko
-eNX
-bNP
-nQj
-rCj
-nPE
-pDq
-gDy
-qFM
-bWn
-neJ
-ryQ
-gDy
-uDE
-nPE
-hMm
-ipn
-pYl
-geD
-fmx
-mKs
-lif
-vzP
-vGy
-vFV
-ibi
-dfm
-dTF
-jgG
-bUW
-mvO
-bDL
-eKe
-owh
-lXx
-lXx
-oJk
-fyb
-lXx
-xbr
-fyb
-lXx
-lXx
-jyp
-vaB
-uqt
-vEa
-vEa
-vEa
-jbV
-guI
-hmN
-jbV
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(110,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-gQV
-hDr
-hDr
-hDr
-gQV
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lln
-lln
-anK
-jxz
-iMu
-twd
-qbl
-rVJ
-pDq
-gDy
-gDy
-gDy
-jJI
-gDy
-gDy
-mYF
-nPE
-idM
-ipn
-cGI
-geD
-hUY
-liQ
-liQ
-liQ
-liQ
-liQ
-aZX
-dfm
-pIG
-buI
-nVW
-efz
-val
-cqz
-uVh
-auJ
-pGy
-fTn
-eOy
-eOy
-iGA
-eOy
-exp
-lnl
-uYM
-vIo
-ujt
-eNj
-ftt
-eNj
-eNj
-eNj
-fPD
-jbV
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(111,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-tXF
-tXF
-tXF
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lln
-lln
-xvL
-jxz
-ujQ
-lln
-lln
-nPE
-pDq
-rAy
-bOJ
-rAy
-gDy
-gDy
-sNe
-xby
-nPE
-rmm
-ipn
-qLH
-geD
-wHu
-jmR
-chO
-nII
-cAO
-liQ
-gxn
-dfm
-cjo
-jgG
-sTs
-ocR
-bDL
-jHS
-ovZ
-ovZ
-ifF
-cxc
-rek
-kOc
-kOc
-kOc
-kQu
-nRI
-aHo
-mVh
-iXK
-xOI
-cAJ
-sZN
-cAJ
-owr
-iBn
-jbV
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(112,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lln
-lln
-tXW
-vnI
-vnI
-lln
-rRC
-bpF
-whI
-moL
-moL
-moL
-moL
-lkc
-spI
-rLM
-nPE
-cuK
-ipn
-fBw
-tPG
-ayi
-oke
-pEx
-pEx
-ccc
-mrZ
-lGi
-mLb
-xat
-bDL
-sXM
-bDL
-lvT
-lvT
-meV
-lvT
-vWw
-lDo
-eBy
-eQN
-dXX
-aQS
-vko
-mBg
-dPf
-mBg
-pse
-oQu
-odH
-jsL
-myp
-eNj
-sPR
-fXs
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(113,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lln
-lln
-vnI
-mzk
-vnI
-lln
-tVc
-bpF
-mbk
-gDy
-gDy
-gDy
-gDy
-gDy
-kgZ
-oaU
-nPE
-frU
-ipn
-ipn
-ipn
-oJR
-gjq
-gYO
-hJJ
-liQ
-liQ
-xUQ
-lgD
-nfY
-bDL
-lvT
-lvT
-clV
-kcv
-xKs
-rsh
-vWw
-pVj
-lAm
-fQA
-chF
-fQA
-fQA
-fNA
-ebz
-aFM
-gNL
-eNj
-kcw
-hvb
-vRF
-eNj
-jXB
-kHx
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(114,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-lln
-lln
-lln
-lln
-lln
-lln
-gDy
-bpF
-tfs
-gDy
-szn
-wLj
-aWV
-gDy
-tlZ
-oaU
-nPE
-qPv
-iQe
-wqP
-omq
-obK
-kpI
-dJC
-sQv
-liQ
-rEU
-rEU
-sJu
-rEU
-rEU
-lvT
-dSn
-pNN
-hvB
-peg
-gta
-vWw
-tUW
-eBy
-sMB
-sMB
-sMB
-aEh
-fNA
-gFT
-dnU
-dnU
-aRU
-eNj
-eNj
-eNj
-eNj
-pAK
-vPu
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(115,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gDy
-gDy
-vqb
-ndX
-sbU
-tAW
-gDy
-lIS
-uIr
-vsO
-rAy
-hGB
-fTu
-gDy
-fZI
-oaU
-nPE
-nPE
-nPE
-nPE
-nPE
-liQ
-liQ
-liQ
-liQ
-liQ
-nWW
-wXg
-nQX
-bgI
-eOP
-eOP
-eOP
-eOP
-eOP
-eOP
-eOP
-vWw
-luv
-kIO
-rGZ
-kPr
-vpE
-wcm
-ede
-dgq
-mXU
-ojp
-fDI
-rVi
-vEa
-owb
-fXs
-jXB
-bMP
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(116,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gDy
-gDy
-won
-tLf
-bew
-jCM
-gDy
-bpF
-uIr
-gDy
-aTi
-oZY
-gts
-gDy
-cek
-hKS
-lkc
-moL
-moL
-hMp
-gDy
-ifk
-vMg
-cPT
-nWW
-tEh
-bVy
-vVu
-vOE
-tDs
-pRS
-gHM
-kfq
-vRO
-vRO
-vRO
-eOP
-vWw
-ijT
-kIO
-tVa
-qDM
-sHJ
-wcm
-qCO
-pvO
-aGw
-toy
-pii
-dvJ
-vEa
-owb
-fXs
-sPR
-fXs
-fXs
-fXs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(117,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gDy
-gDy
-wsy
-pYK
-wGK
-vLJ
-gDy
-bpF
-gDy
-gDy
-gDy
-gDy
-dks
-gDy
-gDy
-sNe
-gDy
-bpF
-khX
-whI
-xIR
-mFJ
-rPr
-mFJ
-ifw
-nMz
-jgd
-kpl
-tFp
-gQh
-fsK
-weB
-sTE
-vRO
-vRO
-vRO
-eOP
-vWw
-uKs
-kIO
-qXn
-sMp
-wSb
-wcm
-fQA
-ngK
-dnU
-ycx
-otJ
-jye
-vEa
-owb
-fXs
-bhh
-sOU
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(118,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gDy
-gDy
-cYP
-njC
-kNh
-dsv
-sUH
-bpF
-bpF
-bpF
-gDy
-heg
-iEa
-xhU
-gDy
-uDE
-gDy
-bpF
-bpF
-bpF
-gDy
-lkI
-kgn
-erp
-nWW
-uIk
-pjU
-tDs
-vOE
-dYh
-qey
-gHM
-ptg
-vRO
-vRO
-vRO
-eOP
-vWw
-uKs
-kIO
-ghZ
-wiR
-rGZ
-wcm
-fQA
-oTG
-dnU
-bVj
-pJj
-duZ
-vEa
-fXs
-fXs
-bhh
-sOU
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(119,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-gDy
-gDy
-gDy
-gDy
-gDy
-gDy
-gDy
-gDy
-gDy
-tPK
-gDy
-aZd
-rhN
-eUZ
-gDy
-uDE
-gDy
-gDy
-gDy
-gDy
-gDy
-txa
-txa
-txa
-txa
-txa
-nWW
-qNI
-nQX
-kQk
-eOP
-eOP
-eOP
-eOP
-eOP
-eOP
-eOP
-vWw
-pVj
-woK
-pnJ
-pnJ
-mDL
-aEh
-fQA
-gJA
-dnU
-sWo
-sWo
-pnw
-ycM
-sOU
-sOU
-bhh
-sOU
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-wIp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(120,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-dBb
-nTU
-pEs
-jid
-goe
-goe
-gDy
-iGd
-gDy
-gDy
-gDy
-gDy
-gDy
-gDy
-gDy
-txa
-gIK
-lty
-wLd
-uxF
-awR
-gIK
-gbR
-txa
-uIk
-uIk
-tNU
-uIk
-uIk
-dPH
-qCs
-qCs
-lFg
-qCs
-qCs
-vWw
-uKs
-wQY
-rsi
-axX
-fQA
-fQA
-fQA
-sXp
-dnU
-sWo
-wyv
-sWo
-ycM
-sOU
-sOU
-bhh
-jjG
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(121,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-bjg
-emZ
-rKG
-kFF
-xrq
-psc
-dlW
-kDq
-dlW
-xrY
-xdm
-jZp
-vJf
-rVI
-oih
-txa
-nAC
-oxX
-xqv
-fOU
-mEN
-hAs
-rqU
-txa
-txa
-qCH
-aYb
-wxw
-dPH
-dPH
-dPH
-dPH
-dPH
-dPH
-dPH
-vWw
-kjk
-gnW
-vWw
-vWw
-ljH
-kvH
-cfD
-vWw
-vWw
-wDE
-cWK
-sWo
-ycM
-sOU
-sOU
-mLS
-nXQ
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(122,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-nNk
-nSC
-nSC
-nSC
-mGy
-oiY
-daY
-pOQ
-iTJ
-tGW
-ell
-bRl
-jzB
-giQ
-onc
-txa
-wBF
-rVk
-rVk
-rVk
-epm
-dWg
-dWg
-fYr
-txa
-fiw
-vOE
-uHa
-dPH
-rWz
-vKA
-dyX
-dPH
-tbX
-bTX
-wYW
-gwE
-sHY
-dPH
-jlW
-mqB
-mqB
-lOp
-rBU
-qjr
-sWo
-jJC
-wyv
-ycM
-sOU
-sOU
-hch
-bzM
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(123,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-nNk
-dtv
-dtv
-tby
-cjB
-bRt
-daY
-iCU
-iTJ
-xbF
-nTB
-moq
-chP
-cgw
-lad
-txa
-rVk
-yfx
-rCk
-rCk
-sqv
-lhO
-lhO
-cGT
-txa
-mlH
-vOE
-nYZ
-atP
-hxz
-vES
-uyX
-aCB
-vBa
-bsV
-adT
-aQL
-sHY
-dPH
-rAP
-rTw
-nhm
-qQG
-puQ
-qjr
-sWo
-bJj
-wyv
-ycM
-nXQ
-nXQ
-dSm
-bzM
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(124,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-cVb
-uHv
-qxQ
-tby
-sLe
-psc
-daY
-iCU
-iTJ
-xdm
-xdm
-moq
-moq
-chP
-lad
-txa
-xjo
-xHv
-vVB
-vVB
-pll
-lhO
-lhO
-flX
-txa
-bVy
-vOE
-rBY
-uiv
-yfq
-tAs
-mho
-uiv
-neR
-mZH
-jIV
-fBT
-sHY
-rDZ
-cbw
-lOp
-ira
-dtX
-oOW
-qjr
-qjr
-qjr
-qjr
-ycM
-ncB
-ncB
-vSB
-ncB
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(125,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-wir
-tby
-tby
-tby
-sLe
-psc
-daY
-iCU
-iTJ
-xdm
-chP
-moq
-sDE
-moq
-lad
-txa
-lOg
-uiS
-psa
-mnE
-pll
-lhO
-pux
-tnn
-cmM
-bVy
-tnV
-daD
-fvA
-kkK
-fDA
-emk
-wmr
-hHq
-ntR
-nyZ
-fBT
-sHY
-xIP
-cbw
-lOp
-izj
-cUd
-lXm
-kdh
-tGz
-iXF
-sPs
-ycM
-dmR
-vRa
-sYK
-pze
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(126,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-wir
-nSC
-nSC
-nSC
-luZ
-bRt
-qGf
-dzB
-lDj
-vqS
-wFb
-bjT
-kXK
-syE
-clT
-txa
-wUK
-tsi
-xcN
-wiC
-pll
-lhO
-lhO
-hbS
-oho
-rRP
-vOE
-mcq
-dPH
-sEk
-mwe
-oCc
-dPH
-neR
-jwG
-gAi
-sRf
-sHY
-hAP
-qtQ
-kTz
-gUH
-fCS
-mqB
-lOp
-xCR
-iXF
-sPs
-ycM
-eqV
-tmk
-pIv
-gWN
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(127,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-wir
-nSC
-dtv
-dtv
-sLe
-psc
-daY
-iCU
-iTJ
-xdm
-chP
-moq
-mIQ
-moq
-nqI
-txa
-csw
-fQv
-jFK
-tpy
-juW
-hbS
-gJu
-cwD
-txa
-bVy
-vOE
-nXw
-dPH
-dPH
-amm
-dPH
-dPH
-xjc
-pyQ
-fCE
-cLF
-sHY
-cAt
-cbw
-xOY
-nzV
-xDG
-qqE
-eLg
-jeQ
-uXo
-sPs
-orf
-gVR
-sfM
-sOU
-gWN
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(128,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-nNk
-nSC
-dtv
-fEr
-sLe
-psc
-daY
-iCU
-iTJ
-tQl
-xdm
-moq
-moq
-chP
-lad
-txa
-urS
-xkR
-tRh
-suD
-nLc
-lhO
-nRU
-pOY
-wtM
-qdY
-vOE
-aUR
-xEP
-tOc
-hED
-xhp
-xEP
-sct
-mlN
-dPH
-sdI
-soP
-glN
-lKQ
-aCG
-smY
-eoG
-syd
-qnv
-khn
-iXF
-sPs
-ycM
-sOU
-aDq
-sOU
-gWN
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(129,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-mvs
-gid
-nSC
-nSC
-sLe
-bRt
-daY
-iCU
-iTJ
-xbF
-nTB
-moq
-chP
-xdm
-xvO
-txa
-bTK
-qEt
-ehk
-fhG
-nLc
-lhO
-nRU
-rVN
-cmM
-bVy
-vOE
-aUR
-wiT
-cWy
-tcm
-inj
-skQ
-hED
-bNg
-dPH
-emr
-oDd
-dPH
-vuf
-jjA
-gSD
-wPG
-iaO
-gMo
-jOc
-iXF
-sPs
-ycM
-noA
-noA
-noA
-iZi
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(130,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qXo
-otM
-sOB
-dKf
-nSC
-nSC
-nSC
-mGy
-lLm
-daY
-klC
-iTJ
-tjJ
-qfE
-xdm
-txw
-bRl
-nKA
-txa
-xjo
-xHv
-tha
-tha
-nLc
-pux
-nRU
-kKQ
-txa
-fGm
-vOE
-wDy
-gaC
-hED
-fdB
-wHU
-gEh
-qlo
-jXj
-dPH
-aZq
-sHY
-dqQ
-dqQ
-dqQ
-dqQ
-dqQ
-dqQ
-dPH
-dPH
-dPH
-ycM
-ycM
-esB
-ncB
-ncB
-ncB
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(131,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-ckU
-jKi
-rdC
-cIE
-eov
-vXn
-dlW
-xcT
-ntn
-lad
-xvO
-sLY
-sHQ
-uOo
-aUH
-txa
-rVk
-rVk
-uOd
-snp
-qzH
-lhO
-nRU
-pDv
-txa
-mlH
-vOE
-scG
-wiT
-anj
-wGX
-vHi
-oRY
-mgS
-xPw
-dPH
-mcA
-sHY
-eoL
-hSJ
-dBo
-mXY
-jhv
-qFI
-wIn
-hyR
-roy
-ycM
-esB
-esB
-ncB
-jyY
-rLb
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(132,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-otM
-sOB
-dBb
-hKx
-mhh
-csF
-csF
-psc
-dlW
-pZK
-dlW
-dlW
-eEd
-dlW
-dlW
-dlW
-dlW
-txa
-hUj
-hUj
-hUj
-hUj
-qzH
-dWg
-djd
-ejK
-txa
-bVy
-vOE
-aUR
-xEP
-kGa
-wyY
-mra
-gLy
-vkZ
-cgZ
-dPH
-qxY
-eUU
-dDR
-iTd
-oPA
-uNl
-hfd
-qFI
-iPH
-wuJ
-aZl
-ycM
-esB
-wIe
-ncB
-mJc
-aWZ
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(133,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dlW
-rIo
-rIo
-rIo
-rIo
-rIo
-rIo
-mMk
-dlW
-lsC
-dlW
-whU
-vju
-buC
-jKh
-dlW
-lks
-txa
-vEg
-txa
-fCQ
-cBU
-ydX
-meD
-vCI
-txa
-txa
-bVy
-vOE
-omS
-ffe
-ffe
-wrj
-wrj
-ffe
-ffe
-xEP
-dPH
-jGz
-rIa
-bsI
-oOi
-dOD
-iJY
-bBg
-qFI
-omP
-uOL
-nGS
-ycM
-esB
-esB
-esB
-ncB
-sBy
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(134,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dlW
-rIo
-mfQ
-avf
-aBR
-xdy
-rIo
-oGD
-iCU
-oGD
-dlW
-oNn
-pMZ
-enE
-uOe
-dlW
-dlW
-dlW
-ram
-txa
-wLd
-tYa
-pEz
-mHx
-wLd
-txa
-vse
-tnT
-fIs
-aUR
-ffe
-ait
-xeF
-rWa
-lWY
-ffe
-lPf
-jOA
-mfU
-tNd
-qxZ
-uHT
-uJN
-lOz
-gAD
-qFI
-wuc
-xZL
-xZL
-ycM
-ycM
-ycM
-esB
-nwD
-nwD
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(135,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dlW
-rIo
-rIo
-sua
-sOB
-hJG
-cVo
-oGD
-imt
-xPX
-dlW
-dlW
-dlW
-dlW
-dlW
-dlW
-dlW
-nWc
-ram
-txa
-txa
-txa
-txa
-txa
-txa
-txa
-ctv
-bVy
-vOE
-aUR
-wrj
-mGt
-igI
-hvC
-qfm
-ffe
-sfB
-oQn
-vCP
-rGb
-qFI
-qFI
-qFI
-qFI
-qFI
-qFI
-wmI
-xZL
-fbo
-kTI
-iJo
-ycM
-dUJ
-ycM
-ycM
-ncB
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(136,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dlW
-rIo
-lPl
-sGN
-jqh
-rIo
-lsC
-oGD
-oGD
-oGD
-oGD
-oGD
-oGD
-oGD
-oGD
-dlW
-mWq
-pYw
-pYw
-utJ
-dqe
-uHI
-uMS
-iUZ
-vxy
-hUe
-tzV
-vOE
-aUR
-wrj
-pVD
-vBw
-mOe
-bRP
-trM
-tPI
-fUZ
-clU
-jak
-amm
-oYW
-kTI
-cBE
-guF
-jiM
-dSF
-kTI
-wkv
-kTI
-sJK
-ycM
-rCx
-sBN
-ycM
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(137,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-dlW
-rIo
-rIo
-rIo
-rIo
-rIo
-dlW
-dlW
-dlW
-dlW
-hXo
-dlW
-dlW
-lHQ
-oGD
-dlW
-vxy
-khs
-vxy
-vxy
-cjK
-dWK
-hTz
-lQo
-kvi
-kmG
-xWF
-fIs
-wDy
-wrj
-fYJ
-dHq
-wmo
-mlg
-cxg
-vBa
-kxP
-jsH
-bwF
-xkw
-qXW
-skD
-skD
-skD
-qBm
-qXp
-qXp
-qXp
-kTI
-eWl
-ycM
-qwu
-xQC
-ycM
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(138,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sxo
-sxo
-kTV
-wlX
-sxo
-nps
-nGD
-cOz
-mqd
-sxo
-eFz
-nIl
-dlW
-oGD
-oGD
-dlW
-hre
-shW
-ofD
-vxy
-bxs
-oWC
-rbR
-ciU
-vxy
-sds
-qxb
-vOE
-aUR
-wrj
-vqv
-sMD
-acp
-sSY
-wrj
-vTj
-fhv
-jsH
-lbt
-gDx
-gDx
-vrM
-gDx
-gDx
-gDx
-xTw
-tBk
-edj
-kAR
-tBk
-ycM
-nCA
-luE
-ycM
-ncB
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(139,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-teW
-vPA
-adD
-iRb
-leF
-vyW
-fvD
-fvD
-fxI
-oBD
-eem
-kzT
-dlW
-oGD
-qCr
-dlW
-dWt
-kxJ
-kQQ
-vxy
-kxS
-xen
-rKk
-drD
-vxy
-vxy
-fNL
-vOE
-aUR
-wrj
-wzp
-iCG
-aoh
-lfQ
-ffe
-emV
-uwA
-jsH
-ncs
-gDx
-bJm
-oZo
-gXi
-gDx
-rhO
-ftZ
-tBk
-sCO
-wKi
-akt
-rbr
-rbr
-rbr
-rbr
-rbr
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(140,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-teW
-vPA
-sGU
-flS
-nPp
-vyW
-dje
-eop
-xRf
-sxo
-ngT
-dlW
-dlW
-oGD
-nZV
-dlW
-eET
-hSQ
-dpQ
-vxy
-odP
-tme
-ohm
-upx
-sfR
-dJF
-bVy
-vOE
-oct
-ffe
-eQi
-qaJ
-pNe
-lax
-ffe
-nxU
-iYC
-uUE
-kTh
-gDx
-wDh
-hXs
-dOl
-vWE
-idu
-ftZ
-tBk
-qTA
-lwY
-lwY
-cVz
-fCA
-foF
-rbr
-rbr
-rbr
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(141,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sxo
-sxo
-boq
-psF
-uOS
-vyW
-dje
-eWC
-sxo
-sxo
-sxo
-dlW
-taM
-soZ
-vXc
-dlW
-dlW
-dlW
-dlW
-dlW
-vJS
-pNH
-dOK
-pgL
-qSD
-dJF
-bVy
-vOE
-aUR
-ffe
-ffe
-ffe
-ffe
-ffe
-ffe
-dPH
-xZL
-qfR
-xZL
-gDx
-tzs
-rNT
-tBj
-vWE
-idu
-mmL
-tBk
-qTA
-cXr
-akt
-rbr
-fvV
-tFO
-bSi
-qRA
-tIV
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(142,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-teW
-vPA
-aQW
-flS
-nPp
-vyW
-dje
-cqm
-viA
-qcS
-qPt
-dlW
-gTR
-oGD
-oGD
-oGD
-oGD
-oGD
-oGD
-dlW
-hNY
-iKc
-nOX
-weQ
-nXm
-dJF
-rmF
-vOE
-bZd
-pOG
-gEk
-gEk
-cXD
-gEk
-loF
-dPH
-szo
-uxl
-lOB
-gDx
-aPh
-rSJ
-izn
-gDx
-aEq
-kXN
-tBk
-kwt
-wKi
-rbr
-rbr
-uWM
-nwc
-rbr
-rbr
-rbr
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(143,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-teW
-vPA
-vjQ
-sSl
-lcN
-vyW
-jjo
-pqt
-sxo
-xiA
-xiA
-dlW
-omA
-xxS
-vHX
-sXR
-oGD
-rsL
-oGD
-dlW
-dlW
-dlW
-dlW
-dlW
-dlW
-vxy
-fkL
-vOE
-aUR
-pOG
-iqg
-qfz
-qfK
-qfK
-ueW
-dPH
-wSw
-apR
-wDF
-xZL
-xZL
-xZL
-xZL
-tBk
-tBk
-tBk
-tBk
-gqV
-gXp
-rbr
-gWU
-qcR
-tFO
-mxf
-uxf
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(144,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sxo
-sxo
-kTV
-wlX
-sxo
-vyW
-wzt
-mcD
-rNo
-tKY
-jjB
-dlW
-dlW
-dlW
-dlW
-dlW
-oGD
-oGD
-oGD
-oGD
-thU
-uIM
-fMB
-qAw
-dlW
-ipQ
-bVy
-vOE
-keN
-pOG
-faM
-jjU
-wze
-iZU
-qsD
-jze
-gZL
-gRx
-bnQ
-xZL
-fCz
-obT
-wNR
-tBk
-tXR
-aDD
-xiS
-gqV
-iyR
-rKX
-szD
-ndc
-mTF
-rbr
-rbr
-rbr
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(145,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sxo
-sxo
-wQN
-wQN
-sxo
-nEG
-wiu
-rem
-rNo
-wOt
-blq
-rNo
-oHC
-oHC
-oHC
-dlW
-dlW
-dlW
-dlW
-oGD
-uTk
-eWW
-pKD
-fuy
-dlW
-hPK
-bVy
-vOE
-dBZ
-pOG
-sRH
-xSB
-xWM
-rQh
-qtS
-dPH
-sfG
-apR
-twZ
-gll
-rTa
-rTa
-dsz
-tBk
-kbN
-jHI
-hMd
-gqV
-wKi
-pjM
-kyw
-qQI
-ybH
-bSi
-qRA
-tIV
-jfs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(146,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oXa
-kSA
-oOY
-kpz
-mTg
-qrN
-veQ
-ycq
-vfc
-qrN
-veQ
-ncC
-veQ
-qrN
-veQ
-qrN
-lJB
-kTZ
-ydL
-jvu
-jvu
-dwE
-qjs
-qOV
-uvJ
-wJj
-rgc
-gGi
-bYq
-pOG
-hkd
-qfG
-oxQ
-isg
-tUa
-dPH
-jCK
-uxl
-eYw
-dPH
-tTJ
-ljs
-jpT
-tBk
-poY
-bie
-hMd
-gqV
-wKi
-rbr
-jSt
-fQj
-mHQ
-rbr
-rbr
-ayJ
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(147,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oXa
-kSA
-vfa
-ooy
-kXs
-uVk
-rPX
-kvR
-jYy
-nGL
-mvM
-iah
-mvM
-nGL
-mvM
-eYN
-cVX
-ggW
-dlW
-sOB
-dlW
-dlW
-tEc
-dlW
-dlW
-nWW
-nhV
-mMS
-vvY
-pOG
-pOG
-rKC
-pOG
-fkA
-fkA
-fkA
-fkA
-kLE
-fkA
-fkA
-fkA
-jVK
-jVK
-tBk
-lmk
-eIq
-hMd
-kye
-waJ
-rbr
-rbr
-pjM
-rbr
-rbr
-rbr
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(148,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-rNo
-rNo
-gaM
-gaM
-rNo
-kme
-rCQ
-fEp
-rNo
-vKe
-vKe
-rNo
-gaM
-cff
-gaM
-rNo
-fwV
-ulu
-dlW
-lgz
-dlW
-kON
-qnc
-uQI
-iEm
-nWW
-eOP
-gjd
-eOP
-pOG
-miV
-vxn
-noj
-fkA
-fkA
-pJz
-mHl
-wPW
-sTr
-mph
-qkP
-jVK
-opP
-ozO
-ozO
-tZX
-ozO
-wit
-pMy
-tDG
-bTY
-gcG
-rqf
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(149,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vVT
-mTG
-azW
-azW
-aLe
-xVF
-deM
-deM
-deM
-deM
-act
-rNo
-gZn
-haW
-vQt
-rNo
-mBP
-tOE
-dlW
-jTo
-dlW
-dlW
-deg
-dlW
-dlW
-nWW
-xRR
-chY
-uuh
-pOG
-pOG
-qYq
-pOG
-fkA
-fkA
-pxt
-sTr
-wPW
-dvT
-jwi
-tOn
-jVK
-gqI
-bqs
-cSQ
-dVx
-mMw
-kPy
-xko
-ciS
-wxc
-qPp
-aWq
-bFM
-dly
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(150,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vVT
-mTG
-deM
-deM
-deM
-xVF
-opR
-deM
-uLQ
-uLQ
-deM
-rNo
-ylf
-moO
-eHN
-wGL
-xLw
-lpF
-dlW
-dlW
-dlW
-dlW
-oyh
-oyh
-oyh
-xot
-hWG
-qAJ
-sqG
-xot
-oyh
-oyh
-oyh
-fkA
-fkA
-dSw
-ezK
-kRF
-jMn
-sTr
-dji
-jVK
-ipv
-ozO
-mYp
-nAb
-iXo
-vZb
-xko
-tDG
-qPV
-vxq
-cZA
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(151,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-rNo
-rNo
-deM
-mte
-oAA
-xVF
-esR
-deM
-ulN
-ulN
-deM
-rNo
-moB
-ayl
-qJq
-rNo
-xjI
-ydi
-rNo
-gVS
-rNo
-rNo
-oyh
-oyh
-oyh
-xot
-wTj
-wTj
-whM
-eOP
-oyh
-oyh
-oyh
-fkA
-fkA
-fkA
-fkA
-fkA
-xrK
-pJd
-pJd
-jVK
-ozO
-ozO
-ozO
-ozO
-ozO
-xXd
-qry
-rJF
-rJF
-rJF
-rJF
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(152,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vVT
-mTG
-deM
-kmc
-iIn
-xVF
-deM
-deM
-bTf
-bTf
-deM
-fEp
-bTu
-wBU
-rKJ
-jks
-veQ
-tjF
-cVR
-nGl
-rNo
-rNo
-oyh
-oyh
-oyh
-fGD
-ezF
-dyk
-ezF
-ret
-oyh
-oyh
-oyh
-fkA
-ppf
-wmD
-fkA
-kUZ
-wcL
-oqQ
-iKR
-jVK
-lum
-arq
-bqn
-iZQ
-vGO
-sUP
-xko
-rJF
-qqp
-oPm
-tdb
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(153,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vVT
-mTG
-deM
-kmc
-ntW
-xVF
-kWs
-deM
-deM
-deM
-iCh
-rNo
-cSu
-gMs
-eiV
-rNo
-uhG
-xYd
-nGl
-nGl
-rNo
-rNo
-oyh
-oyh
-mrL
-nWW
-xot
-xot
-xot
-nWW
-ric
-oyh
-oyh
-fkA
-fkA
-qgw
-fkA
-dkP
-oqQ
-jLF
-iMc
-jVK
-pfj
-bej
-emJ
-bej
-niG
-tvm
-xko
-kjz
-waV
-waV
-ckv
-bFM
-dly
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(154,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vVT
-mTG
-deM
-kmc
-iIn
-xVF
-deM
-deM
-uLQ
-uLQ
-eNo
-rNo
-lLt
-sWP
-rOB
-rNo
-fod
-tyu
-rNo
-wVX
-rNo
-rNo
-oyh
-mYM
-oyh
-oyh
-oyh
-dyt
-oyh
-oyh
-oyh
-sVp
-oyh
-wMF
-wMF
-wMF
-wMF
-wMF
-wMF
-wMF
-wMF
-jVK
-wcF
-pyW
-ecF
-rog
-fpF
-fZv
-xko
-rJF
-ppi
-gWF
-unv
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(155,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-rNo
-rNo
-vzw
-sZd
-ohn
-xVF
-esR
-deM
-ulN
-ulN
-vyK
-rNo
-rNo
-pNM
-rNo
-rNo
-rVQ
-utT
-rVQ
-rVQ
-rVQ
-rVQ
-oyh
-kgW
-oyh
-oyh
-oyh
-dyt
-oyh
-oyh
-oyh
-kgW
-oyh
-wMF
-wMF
-yeU
-yeU
-yeU
-yeU
-yeU
-yeU
-jVK
-vWn
-mRa
-wkP
-uTc
-nOa
-vVW
-oxm
-rJF
-rJF
-rJF
-rJF
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(156,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vVT
-mTG
-deM
-deM
-deM
-xVF
-opR
-deM
-bTf
-bTf
-deM
-rNo
-dSE
-nPS
-rNo
-tqz
-rVQ
-vqB
-vBB
-spb
-rVQ
-rVQ
-oyh
-rCR
-oyh
-oyh
-iSU
-dyt
-iSU
-oyh
-oyh
-rCR
-oyh
-wMF
-wMF
-wMF
-wMF
-wMF
-wMF
-wMF
-wMF
-jVK
-nQA
-byE
-cZK
-qyO
-xDw
-kKn
-xko
-rJF
-qqp
-pbx
-oSW
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(157,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-vVT
-mTG
-azW
-azW
-fsR
-xVF
-deM
-deM
-deM
-deM
-act
-rNo
-doy
-nPS
-rNo
-kwn
-pzu
-xgC
-rgz
-xXq
-rVQ
-rVQ
-oyh
-kgW
-oyh
-oyh
-oyh
-dyt
-oyh
-oyh
-oyh
-kgW
-oyh
-wMF
-wMF
-xaW
-iQF
-dAr
-uRy
-boB
-wQo
-xOF
-fZg
-uXU
-pZD
-tvm
-hhQ
-iZh
-uuu
-uym
-aWg
-aWg
-ckv
-bFM
-dly
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(158,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fVV
-fVV
-lkY
-lkY
-fVV
-qFu
-aiL
-dtl
-fVV
-lkY
-lkY
-fVV
-rNo
-pNM
-rNo
-anF
-rVQ
-fZl
-tyP
-qxE
-rVQ
-rVQ
-oyh
-rCR
-oyh
-oyh
-oyh
-jIc
-oyh
-oyh
-oyh
-rCR
-oyh
-wMF
-wMF
-qzQ
-eJy
-pfL
-pfL
-yfr
-nKU
-qle
-xUI
-nrk
-gbp
-wHw
-pmd
-aWv
-owo
-rJF
-bjw
-tgz
-vhr
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(159,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fVV
-fVV
-nLs
-nLs
-bIl
-kkA
-aDi
-gxc
-kZe
-gxc
-utw
-fVV
-lGb
-ity
-rNo
-rVQ
-rVQ
-lfw
-rVQ
-rVQ
-rVQ
-rVQ
-oyh
-kgW
-oyh
-oyh
-oyh
-kyo
-oyh
-oyh
-oyh
-kgW
-oyh
-wMF
-wMF
-nSz
-rCF
-qXw
-fNV
-vNS
-mrE
-nwL
-wLP
-hRI
-eWg
-tml
-ikT
-ecf
-owo
-rJF
-rJF
-rJF
-rJF
-wtp
-wtp
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(160,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fVV
-fVV
-vaN
-nLs
-bIl
-azK
-kqk
-pxF
-fkp
-apl
-cVl
-fVV
-fVV
-fVV
-fVV
-piA
-rTV
-uns
-nhd
-rVQ
-rVQ
-rVQ
-oyh
-rCR
-oyh
-oyh
-iSU
-kyo
-iSU
-oyh
-oyh
-rCR
-oyh
-wMF
-wMF
-wMF
-ePU
-hIR
-rqV
-fje
-toX
-gjH
-cYW
-wcW
-dWj
-jEY
-vlf
-cib
-owo
-rwq
-hWH
-mXn
-gvU
-qkS
-qkS
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(161,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fVV
-fVV
-nLs
-nLs
-bIl
-aeF
-aDi
-aDi
-aDi
-aDi
-aDi
-oUl
-jDq
-psh
-fVV
-iGG
-wRL
-gUc
-rVQ
-rVQ
-rVQ
-oyh
-oyh
-kgW
-oyh
-oyh
-oyh
-kyo
-oyh
-oyh
-oyh
-kgW
-oyh
-oyh
-wMF
-wMF
-wMF
-cOx
-kDz
-icn
-wQo
-uEF
-uEF
-oiw
-uEF
-uEF
-ozO
-ozO
-sAJ
-ozO
-iBl
-rMu
-dHY
-pmC
-oFM
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(162,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fVV
-fVV
-wdZ
-ogJ
-rtb
-gxc
-cNH
-fvJ
-bvP
-sdZ
-fVV
-fVV
-tVU
-qku
-fVV
-lIn
-kdw
-rVQ
-rVQ
-rVQ
-oyh
-oyh
-oyh
-uUj
-oyh
-oyh
-oyh
-kyo
-oyh
-oyh
-oyh
-rDD
-oyh
-oyh
-oyh
-wMF
-wMF
-wMF
-ttw
-oEB
-wQo
-tun
-mSN
-siT
-eEn
-uEF
-juF
-fTO
-ftu
-ozO
-xKZ
-lkB
-oYw
-qkS
-qkS
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(163,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fVV
-fVV
-fVV
-fVV
-fVV
-ooQ
-nxV
-gbZ
-pqe
-iWQ
-xeQ
-fVV
-cRL
-ddd
-fVV
-rVQ
-rVQ
-rVQ
-rVQ
-oyh
-oyh
-oyh
-oyh
-oyh
-ric
-nbP
-uQA
-qXy
-uQA
-nbP
-mrL
-oyh
-oyh
-oyh
-oyh
-oyh
-wMF
-wMF
-wMF
-wMF
-wMF
-kNO
-axY
-fCU
-gpA
-uEF
-tHZ
-aih
-cMg
-ozO
-mek
-mek
-mek
-qkS
-qkS
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(164,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-fVV
-fVV
-fVV
-fVV
-fVV
-bSg
-bSg
-bSg
-bSg
-fVV
-iKD
-fVV
-fVV
-fVV
-fVV
-rVQ
-rVQ
-rVQ
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xTI
-xJH
-aNQ
-xJH
-uWn
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-wMF
-wMF
-wMF
-wMF
-kNO
-kNO
-pkT
-pkT
-kNO
-lPt
-lPt
-jVK
-jVK
-qkS
-qkS
-qkS
-qkS
-qkS
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(165,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-fVV
-wOJ
-wOJ
-wOJ
-wOJ
-fVV
-ucN
-fVV
-fVV
-fVV
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-hWr
-ojl
-mYg
-enJ
-wXk
-uQA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-kNO
-kNO
-aHC
-aHC
-kNO
-yfA
-yfA
-jVK
-jVK
-jVK
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(166,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-nbP
-tIl
-fEv
-dMt
-nbP
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(167,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-nbP
-nbP
-nfZ
-nbP
-nbP
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(168,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-nbP
-nbP
-lSE
-whJ
-owP
-nbP
-nbP
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(169,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-xHg
-xHg
-xHg
-nbP
-hzu
-nJR
-cvZ
-mDn
-nwR
-nbP
-nbP
-nbP
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(170,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lbF
-nse
-ntF
-ntF
-gJs
-whJ
-rrl
-uSm
-dPC
-dPC
-niu
-rFy
-nbP
-oyh
-oyh
-oyh
-pwH
-hQT
-hQT
-ilK
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(171,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lbF
-tzU
-hKw
-nFT
-nbP
-ovP
-mDn
-qQS
-nus
-mkL
-nbP
-eXL
-nbP
-hQT
-ijJ
-hQT
-ilK
-fPW
-eYj
-pwH
-hQT
-hQT
-ilK
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(172,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-kDG
-tzU
-ofi
-oyh
-nbP
-nbP
-xRQ
-oRS
-lFj
-nbP
-nbP
-eYj
-fPW
-eYj
-cun
-fPW
-oyh
-iML
-eYj
-oyh
-eYj
-fPW
-dZa
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(173,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-umQ
-aFj
-aFj
-aFj
-sOy
-sOy
-sOy
-sOy
-sOy
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-oyh
-oyh
-oyh
-oyh
-eYj
-dZa
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(174,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-aFj
-kum
-aFj
-aFj
-aFj
-sOy
-rZC
-uDR
-knY
-sOy
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-oyh
-pwH
-hQT
-ijJ
-hQT
-ilK
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(175,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-rrQ
-kum
-uLO
-fpH
-aFj
-mWh
-oTA
-nEI
-dWG
-mWh
-vyR
-oHW
-vyR
-bkM
-vyR
-vyR
-vyR
-vyR
-oyh
-iML
-fPW
-eYj
-fPW
-dZa
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(176,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-lcU
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-pUB
-kZZ
-kum
-kum
-kum
-pKc
-fzr
-iBc
-jPj
-onI
-oiP
-vyR
-imS
-dQQ
-edZ
-rOj
-jth
-vyR
-vyR
-oyh
-iML
-eYj
-pGG
-eYj
-dZa
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(177,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-clH
-wvd
-trB
-ykV
-hzI
-aFj
-wmt
-nEI
-jPj
-llQ
-eys
-vyR
-nqc
-vGk
-euy
-euy
-cRA
-vyR
-vyR
-vyR
-iML
-fPW
-eYj
-fPW
-dZa
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-lcU
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(178,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-fnL
-ykV
-tOV
-szK
-pUq
-aFj
-gLt
-iqz
-cNT
-qEG
-mhu
-vyR
-xEZ
-vyR
-vyR
-urf
-inl
-vyR
-vyR
-vyR
-qWn
-itT
-gZG
-itT
-gnj
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(179,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-dkh
-aFj
-aFj
-aFj
-daa
-kZZ
-tOV
-knH
-hwN
-aFj
-aOw
-iqz
-mIX
-vrt
-xZM
-vYJ
-rUi
-vyR
-vYX
-rOW
-bqU
-vyR
-vyR
-vyR
-lLp
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(180,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-nTP
-hzI
-tOV
-knH
-knH
-aFj
-hSt
-iqz
-lbx
-nEI
-oiP
-vyR
-ldv
-vyR
-vyR
-rOj
-nwW
-vyR
-vyR
-vyR
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(181,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-byX
-vPg
-uNq
-knH
-knH
-aFj
-oha
-dWG
-pIf
-oiP
-bNh
-vyR
-jOC
-jOC
-krK
-qmG
-cTo
-vyR
-vyR
-vyR
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(182,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-ptL
-ykV
-fID
-bEV
-ims
-aFj
-mWh
-oiP
-nEI
-fNY
-mWh
-vyR
-imS
-wYd
-col
-urf
-mqG
-vyR
-vyR
-oyh
-oyh
-oyh
-oyh
-fMl
-sWs
-wbT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(183,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-dlR
-cRs
-uEb
-uEb
-aFj
-sOy
-dog
-mWh
-dog
-sOy
-vyR
-oHW
-vyR
-arM
-vyR
-vyR
-vyR
-vyR
-oyh
-oyh
-oyh
-oyh
-acl
-acl
-xUk
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(184,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-aFj
-aFj
-aFj
-aFj
-aFj
-sOy
-sOy
-sOy
-sOy
-sOy
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(185,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-oyh
-oyh
-oyh
-aFj
-aFj
-aFj
-aFj
-aFj
-aFj
-aFj
-sOy
-sOy
-sOy
-sOy
-sOy
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-vyR
-oyh
-oyh
-oyh
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(186,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sKZ
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-sKZ
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(187,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(188,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-qQt
-dJu
-dJu
-lpc
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(189,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-uMR
-mlO
-mlO
-fZn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(190,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-eEE
-cUq
-qUV
-lzq
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(191,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-bjb
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(192,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-iOw
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(193,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(194,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(195,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(196,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(197,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(198,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-xKt
-djc
-djc
-djc
-dkn
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(199,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ujI
-edA
-pRs
-pRs
-wbT
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(200,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ujI
-pRs
-pRs
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(201,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(202,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(203,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(204,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(205,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(206,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(207,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(208,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(209,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(210,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(211,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(212,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(213,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(214,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(215,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(216,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(217,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(218,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(219,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(220,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(221,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(222,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(223,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(224,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(225,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(226,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(227,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(228,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(229,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(230,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(231,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(232,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(233,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(234,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(235,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(236,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(237,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(238,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(239,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(240,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(241,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(242,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(243,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(244,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(245,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(246,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(247,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(248,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(249,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(250,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(251,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(252,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(253,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(254,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
-(255,1,4) = {"
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-ucA
-"}
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index e730dea04bc99..8f24d290d1750 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -9929,7 +9929,7 @@
/area/centcom/central_command_areas/armory)
"Vh" = (
/obj/structure/table/reinforced,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = 10;
pixel_x = 2
},
@@ -62229,7 +62229,7 @@ xt
xt
xt
xt
-xt
+PG
xt
Vd
zm
@@ -62486,7 +62486,7 @@ xt
xt
xt
xt
-rq
+xt
xt
xt
zl
diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm
index 7e99bf96803cd..daec11b31a2c6 100644
--- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm
@@ -2735,7 +2735,7 @@ gs
IK
IK
IK
-pD
+mg
"}
(53,1,1) = {"
AN
@@ -2771,7 +2771,7 @@ IK
IK
IK
IK
-pD
+mg
"}
(54,1,1) = {"
AN
@@ -2804,10 +2804,10 @@ gs
IK
IK
IK
-pD
-pD
-pD
-pD
+mg
+mg
+mg
+mg
"}
(55,1,1) = {"
AN
@@ -2840,7 +2840,7 @@ IK
IK
IK
IK
-pD
+mg
IK
IK
IK
@@ -2875,8 +2875,8 @@ cV
cV
mg
sf
-pD
-pD
+mg
+mg
IK
IK
IK
diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm
index e7c0c22ad0575..dd68accab503b 100644
--- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm
@@ -2907,7 +2907,7 @@ gs
IK
IK
IK
-pD
+mg
"}
(53,1,1) = {"
AN
@@ -2943,7 +2943,7 @@ IK
IK
IK
IK
-pD
+mg
"}
(54,1,1) = {"
AN
@@ -2976,10 +2976,10 @@ gs
IK
IK
IK
-pD
-pD
-pD
-pD
+mg
+mg
+mg
+mg
"}
(55,1,1) = {"
AN
@@ -3012,7 +3012,7 @@ IK
IK
IK
IK
-pD
+mg
IK
IK
IK
@@ -3047,8 +3047,8 @@ cV
cV
mg
sf
-pD
-pD
+mg
+mg
IK
IK
gs
diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm
index 334f49ad8b602..83d22aaf3d8ed 100644
--- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm
@@ -2638,7 +2638,7 @@ gs
IK
IK
IK
-pD
+mg
"}
(53,1,1) = {"
AN
@@ -2674,7 +2674,7 @@ IK
IK
IK
IK
-pD
+mg
"}
(54,1,1) = {"
AN
@@ -2707,10 +2707,10 @@ gs
IK
IK
IK
-pD
-pD
-pD
-pD
+mg
+mg
+mg
+mg
"}
(55,1,1) = {"
AN
@@ -2743,7 +2743,7 @@ IK
IK
IK
IK
-pD
+mg
IK
IK
IK
@@ -2778,8 +2778,8 @@ cV
cV
mg
sf
-pD
-pD
+mg
+mg
IK
IK
gs
diff --git a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm
index 5eae1f6e7ec96..cc4cbdcdd9677 100644
--- a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm
@@ -1037,7 +1037,7 @@ a
J
J
J
-W
+t
J
J
J
@@ -1060,10 +1060,10 @@ Z
"}
(29,1,1) = {"
m
-W
-W
-W
-W
+t
+t
+t
+t
J
J
J
@@ -1086,7 +1086,7 @@ Z
"}
(30,1,1) = {"
J
-W
+t
J
J
J
@@ -1111,8 +1111,8 @@ Z
Z
"}
(31,1,1) = {"
-W
-W
+t
+t
J
J
a
diff --git a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm
index 02960cfadc516..df7d703de1557 100644
--- a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm
@@ -136,10 +136,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
/area/station/maintenance/starboard/greater)
-"oT" = (
-/obj/effect/turf_decal/sand/plating,
-/turf/open/floor/plating/airless,
-/area/station/asteroid)
"oV" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/button/door/directional/west{
@@ -1112,7 +1108,7 @@ Rk
cV
cV
cV
-oT
+ja
cV
sj
PC
@@ -1135,10 +1131,10 @@ fX
"}
(29,1,1) = {"
Cn
-oT
-oT
-oT
-oT
+ja
+ja
+ja
+ja
cV
sj
sj
@@ -1161,7 +1157,7 @@ fX
"}
(30,1,1) = {"
cV
-oT
+ja
cV
cV
cV
@@ -1186,8 +1182,8 @@ fX
fX
"}
(31,1,1) = {"
-oT
-oT
+ja
+ja
cV
cV
Rk
diff --git a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm
index 02618e94a681c..12357ca0a2f8f 100644
--- a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm
@@ -948,7 +948,7 @@ a
J
J
J
-W
+t
J
J
J
@@ -971,10 +971,10 @@ Z
"}
(29,1,1) = {"
m
-W
-W
-W
-W
+t
+t
+t
+t
J
J
J
@@ -997,7 +997,7 @@ Z
"}
(30,1,1) = {"
J
-W
+t
J
J
J
@@ -1022,8 +1022,8 @@ Z
Z
"}
(31,1,1) = {"
-W
-W
+t
+t
J
J
a
diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm
index acc639880b14e..5701e877f72ae 100644
--- a/_maps/map_files/tramstation/tramstation.dmm
+++ b/_maps/map_files/tramstation/tramstation.dmm
@@ -77,7 +77,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/structure/cable,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"aan" = (
/turf/open/floor/iron/stairs/medium{
dir = 8
@@ -103,7 +103,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/machinery/light/small/directional/west,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"aat" = (
/obj/item/stack/cable_coil,
/turf/open/misc/asteroid/airless,
@@ -112,7 +112,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/machinery/light/small/directional/east,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"aaw" = (
/obj/item/storage/toolbox/electrical,
/turf/open/misc/asteroid/airless,
@@ -136,7 +136,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/structure/cable/layer1,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"aaD" = (
/obj/structure/ore_box,
/turf/open/misc/asteroid/airless,
@@ -1340,19 +1340,19 @@
id = "portsolar"
},
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"ael" = (
/obj/effect/turf_decal/sand/plating,
/obj/structure/cable/layer1,
/obj/structure/cable,
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"aem" = (
/obj/item/storage/toolbox/electrical,
/obj/effect/turf_decal/sand/plating,
/obj/structure/cable/layer1,
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"aen" = (
/obj/effect/turf_decal/sand/plating,
/obj/item/stack/ore/glass,
@@ -5913,7 +5913,7 @@
/area/station/cargo/sorting)
"aST" = (
/turf/closed/wall/r_wall,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"aTa" = (
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 1
@@ -6259,7 +6259,7 @@
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"bcq" = (
/obj/effect/landmark/secequipment,
/obj/effect/turf_decal/bot,
@@ -6952,7 +6952,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/machinery/light/floor,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"bsW" = (
/obj/machinery/duct,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7855,6 +7855,9 @@
/obj/structure/rack,
/obj/item/clothing/suit/hooded/ablative,
/obj/item/gun/energy/ionrifle,
+/obj/item/gun/ballistic/automatic/battle_rifle{
+ pixel_y = 3
+ },
/obj/item/gun/energy/temperature/security,
/obj/structure/reagent_dispensers/wall/peppertank/directional/north,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -8392,10 +8395,6 @@
/obj/structure/water_source/puddle,
/turf/open/misc/asteroid,
/area/station/security/prison/workout)
-"bRE" = (
-/obj/structure/lattice/catwalk,
-/turf/open/floor/plating/airless,
-/area/station/solars/port)
"bSd" = (
/obj/effect/turf_decal/siding/wood,
/turf/open/floor/wood/large,
@@ -9568,7 +9567,7 @@
dir = 1
},
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"ckr" = (
/obj/structure/table,
/obj/item/assembly/timer{
@@ -10564,7 +10563,7 @@
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"cCr" = (
/obj/structure/cable,
/obj/machinery/light/warm/directional/east,
@@ -10958,7 +10957,7 @@
dir = 1
},
/turf/open/openspace,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"cII" = (
/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -12237,7 +12236,7 @@
/obj/effect/turf_decal/stripes/box,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"deU" = (
/obj/structure/closet/emcloset,
/obj/machinery/light/dim/directional/west,
@@ -13990,7 +13989,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/dim/directional/south,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"dMw" = (
/obj/machinery/door/airlock/hatch{
name = "Emergency Exit"
@@ -14954,7 +14953,7 @@
/obj/structure/ladder,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"edE" = (
/obj/effect/turf_decal/trimline/yellow/filled/corner{
dir = 8
@@ -15514,7 +15513,7 @@
/obj/structure/cable,
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"eqK" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -16131,7 +16130,7 @@
/obj/effect/turf_decal/stripes/box,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"eBd" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 9
@@ -16912,6 +16911,9 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/tram/right)
+"eSh" = (
+/turf/closed/wall,
+/area/station/solars/starboard/fore/asteriod)
"eSj" = (
/obj/structure/table,
/obj/item/storage/box/firingpins,
@@ -17508,7 +17510,7 @@
},
/obj/structure/cable,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"feP" = (
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 5
@@ -18486,7 +18488,7 @@
/obj/structure/cable/layer1,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"fvM" = (
/obj/structure/stairs/north,
/turf/open/floor/iron/stairs/medium,
@@ -18865,7 +18867,8 @@
/area/station/commons/vacant_room)
"fEZ" = (
/obj/structure/noticeboard/directional/north,
-/obj/structure/aquarium/lawyer,
+/obj/item/fish_tank/lawyer,
+/obj/structure/table/wood,
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/west,
/turf/open/floor/wood,
@@ -19613,7 +19616,7 @@
/obj/structure/cable/multilayer/connected,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"fSM" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 10
@@ -20059,7 +20062,7 @@
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"gbl" = (
/obj/structure/chair/office{
dir = 1
@@ -21067,7 +21070,7 @@
},
/obj/structure/cable,
/turf/open/openspace,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"gtZ" = (
/obj/effect/turf_decal/trimline/neutral/filled/line,
/obj/machinery/airalarm/directional/south,
@@ -21370,7 +21373,7 @@
/obj/structure/cable/layer1,
/obj/structure/cable,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"gAH" = (
/obj/effect/turf_decal/trimline/neutral/filled/corner{
dir = 1
@@ -21759,7 +21762,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/machinery/light/small/directional/south,
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"gGV" = (
/obj/structure/table,
/obj/item/instrument/harmonica,
@@ -23358,7 +23361,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/structure/cable,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"hmb" = (
/obj/effect/turf_decal/tile/bar{
dir = 8
@@ -24057,7 +24060,7 @@
/obj/structure/cable,
/obj/structure/cable/layer1,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"hDF" = (
/obj/machinery/computer/apc_control{
dir = 1
@@ -26446,17 +26449,6 @@
/obj/machinery/status_display/evac/directional/east,
/turf/open/floor/circuit/green,
/area/station/ai_monitored/turret_protected/ai_upload)
-"ixH" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable,
-/obj/structure/railing{
- dir = 4
- },
-/obj/structure/railing{
- dir = 8
- },
-/turf/open/space/openspace,
-/area/space/nearstation)
"ixO" = (
/obj/structure/chair/comfy/brown{
dir = 8;
@@ -27806,7 +27798,7 @@
},
/obj/structure/cable,
/turf/open/openspace,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"iXx" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2,
/obj/structure/lattice,
@@ -28135,7 +28127,7 @@
"jcT" = (
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"jde" = (
/obj/machinery/door/airlock/engineering{
name = "Vacant Office A"
@@ -28336,7 +28328,7 @@
/obj/machinery/power/apc/auto_name/directional/west,
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"jgn" = (
/obj/structure/table/reinforced,
/obj/structure/displaycase/forsale/kitchen{
@@ -31477,7 +31469,7 @@
/obj/structure/cable/multilayer/multiz,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"kgG" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -31904,7 +31896,7 @@
"koo" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"koq" = (
/obj/machinery/air_sensor/oxygen_tank,
/turf/open/floor/engine/o2,
@@ -34502,7 +34494,7 @@
/obj/structure/cable/multilayer/connected,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"lhV" = (
/obj/structure/displaycase/trophy,
/obj/machinery/light/warm/directional/west,
@@ -35165,7 +35157,7 @@
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"lsx" = (
/obj/structure/chair/stool/directional/north,
/obj/effect/turf_decal/trimline/dark_blue/corner{
@@ -35592,7 +35584,7 @@
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"lzo" = (
/obj/machinery/door/window/left/directional/south,
/turf/open/floor/grass,
@@ -36325,7 +36317,7 @@
/obj/structure/cable/layer1,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"lMJ" = (
/obj/effect/turf_decal/sand/plating,
/obj/effect/turf_decal/siding/thinplating/dark{
@@ -36361,7 +36353,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/structure/cable/layer1,
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"lMZ" = (
/obj/effect/turf_decal/trimline/red/filled/corner{
dir = 8
@@ -37924,7 +37916,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/structure/cable,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"mns" = (
/obj/effect/turf_decal/trimline/brown/filled/corner{
dir = 1
@@ -38297,7 +38289,7 @@
},
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"muZ" = (
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -38909,7 +38901,7 @@
pixel_y = 8
},
/obj/structure/window/reinforced/spawner/directional/north,
-/obj/item/surgery_tray/full/morgue,
+/obj/effect/spawner/surgery_tray/full/morgue,
/obj/structure/window/reinforced/spawner/directional/west,
/turf/open/floor/iron/dark,
/area/station/medical/morgue)
@@ -39094,7 +39086,7 @@
"mJF" = (
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"mJG" = (
/obj/structure/chair/stool/bar/directional/north,
/obj/effect/turf_decal/siding/thinplating{
@@ -39122,7 +39114,7 @@
/obj/structure/cable/layer1,
/obj/structure/cable,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"mKh" = (
/obj/effect/turf_decal/trimline/yellow/filled/line{
dir = 1
@@ -39595,7 +39587,7 @@
},
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"mWC" = (
/obj/machinery/holopad,
/obj/machinery/firealarm/directional/north,
@@ -39927,7 +39919,7 @@
/obj/effect/turf_decal/sand/plating,
/obj/structure/cable,
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"ncF" = (
/turf/closed/wall,
/area/station/maintenance/tram/left)
@@ -40055,7 +40047,7 @@
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"neC" = (
/obj/structure/railing{
dir = 1
@@ -40475,7 +40467,7 @@
"nkU" = (
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"nle" = (
/obj/machinery/door/airlock/security{
name = "Evidence Storage"
@@ -41340,7 +41332,7 @@
/obj/structure/cable,
/obj/structure/cable/layer1,
/turf/open/floor/plating/airless,
-/area/station/solars/port)
+/area/station/solars/port/asteriod)
"nzO" = (
/mob/living/carbon/human/species/monkey,
/turf/open/misc/dirt/jungle{
@@ -42045,7 +42037,7 @@
"nNw" = (
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"nNz" = (
/obj/effect/turf_decal/stripes/corner{
dir = 1
@@ -42080,7 +42072,7 @@
/area/station/tcommsat/server)
"nOd" = (
/turf/open/openspace,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"nOe" = (
/obj/effect/turf_decal/trimline/red/filled/line{
dir = 6
@@ -43265,7 +43257,7 @@
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"ojQ" = (
/obj/effect/turf_decal/trimline/blue/filled/corner,
/obj/effect/turf_decal/trimline/blue/filled/corner{
@@ -44029,7 +44021,7 @@
/obj/structure/cable,
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"oAn" = (
/obj/machinery/airlock_sensor/incinerator_ordmix{
pixel_x = 23;
@@ -44433,7 +44425,7 @@
/turf/open/openspace,
/area/station/hallway/primary/tram/center)
"oKZ" = (
-/mob/living/simple_animal/bot/floorbot,
+/mob/living/basic/bot/repairbot,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -45348,7 +45340,7 @@
/obj/structure/cable,
/obj/machinery/light/small/directional/west,
/turf/open/floor/plating/airless,
-/area/station/solars/starboard/fore)
+/area/station/solars/starboard/fore/asteriod)
"pdf" = (
/obj/machinery/camera/directional/north{
network = list("ss13","engineering","Security");
@@ -45774,7 +45766,7 @@
/area/station/cargo/miningdock)
"plk" = (
/turf/closed/wall/r_wall,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"pln" = (
/obj/effect/turf_decal/trimline/neutral/filled/corner{
dir = 8
@@ -46053,7 +46045,7 @@
/obj/structure/cable,
/obj/machinery/light/floor,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"ppU" = (
/obj/structure/railing,
/obj/effect/turf_decal/trimline/tram/filled/line{
@@ -47367,7 +47359,7 @@
/obj/structure/cable/layer1,
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"pKZ" = (
/obj/structure/table/wood,
/obj/item/flashlight/lamp,
@@ -48161,7 +48153,7 @@
},
/obj/structure/railing,
/turf/open/openspace,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"pZH" = (
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
@@ -49050,6 +49042,9 @@
/obj/machinery/microwave,
/turf/open/floor/iron/white,
/area/station/commons/vacant_room)
+"qoG" = (
+/turf/closed/wall,
+/area/station/solars/port/asteriod)
"qoX" = (
/obj/effect/turf_decal/trimline/yellow/filled/line{
dir = 6
@@ -49853,15 +49848,6 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
-"qCU" = (
-/obj/structure/lattice/catwalk,
-/obj/machinery/power/solar{
- name = "Starboard Solar Array";
- id = "forestarboard"
- },
-/obj/structure/cable,
-/turf/open/space/basic,
-/area/space/nearstation)
"qCW" = (
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 1
@@ -51054,7 +51040,7 @@
dir = 8
},
/turf/open/openspace,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"qZx" = (
/obj/effect/turf_decal/trimline/neutral/filled/line,
/obj/effect/decal/cleanable/dirt,
@@ -54169,7 +54155,7 @@
},
/obj/structure/railing,
/turf/open/openspace,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"sgB" = (
/obj/effect/turf_decal/trimline/red/filled/corner,
/obj/structure/cable,
@@ -54833,7 +54819,7 @@
/area/station/engineering/supermatter/room)
"srF" = (
/turf/open/openspace,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"srN" = (
/obj/effect/turf_decal/trimline/neutral/filled/line,
/obj/structure/cable,
@@ -55584,7 +55570,7 @@
"sEZ" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"sFc" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -55656,7 +55642,7 @@
/obj/structure/cable,
/obj/machinery/light/floor,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"sGO" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -58646,7 +58632,7 @@
/turf/open/floor/iron/white,
/area/station/science/genetics)
"tIi" = (
-/mob/living/simple_animal/bot/floorbot,
+/mob/living/basic/bot/repairbot,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat_interior)
"tIk" = (
@@ -61856,7 +61842,7 @@
/obj/structure/railing/corner,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"uIk" = (
/obj/machinery/atmospherics/pipe/smart/simple/purple/visible,
/obj/effect/turf_decal/trimline/purple/filled/line{
@@ -62298,7 +62284,7 @@
/obj/structure/table/glass,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/item/radio/intercom/directional/south,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/white,
/area/station/medical/surgery/fore)
"uPv" = (
@@ -63602,7 +63588,7 @@
/obj/structure/cable/layer1,
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"vob" = (
/obj/structure/bookcase/random/religion,
/turf/open/floor/iron/dark,
@@ -64162,7 +64148,7 @@
/obj/structure/cable,
/obj/machinery/light/floor,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"vwT" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -64327,11 +64313,11 @@
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"vAx" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"vAF" = (
/obj/structure/chair,
/obj/effect/turf_decal/trimline/neutral/filled/line,
@@ -65377,7 +65363,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/dim/directional/north,
/turf/open/floor/catwalk_floor,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"vTj" = (
/obj/effect/turf_decal/trimline/neutral/warning,
/obj/machinery/door/window/brigdoor/left/directional/north{
@@ -65690,7 +65676,7 @@
/obj/structure/railing,
/obj/structure/cable,
/turf/open/openspace,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"vZZ" = (
/obj/machinery/duct,
/obj/structure/cable,
@@ -69770,7 +69756,7 @@
"xCe" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"xCm" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
@@ -69817,7 +69803,7 @@
/obj/effect/mapping_helpers/airlock/access/all/engineering/general,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
-/area/station/solars/starboard/fore)
+/area/station/maintenance/solars/starboard/fore)
"xDJ" = (
/obj/machinery/light/cold/directional/south,
/turf/open/floor/iron/freezer,
@@ -70578,7 +70564,7 @@
dir = 8
},
/turf/open/openspace,
-/area/station/solars/port)
+/area/station/maintenance/solars/port)
"xTM" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output{
dir = 1
@@ -71003,7 +70989,7 @@
dir = 1
},
/obj/item/radio/intercom/directional/north,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/white,
/area/station/medical/surgery/aft)
"yct" = (
@@ -91048,7 +91034,7 @@ aac
aac
aac
gGy
-qEH
+qoG
aac
aac
aac
@@ -93882,7 +93868,7 @@ aST
ncE
ncE
ncE
-bRE
+jcT
oQf
oQf
oQf
@@ -95153,7 +95139,7 @@ aac
aac
aac
aac
-jcT
+lMS
lMS
lMS
aac
@@ -107143,7 +107129,7 @@ aac
aac
aac
aac
-csA
+eSh
aac
aac
aac
@@ -110743,7 +110729,7 @@ aac
aac
aac
aac
-csA
+eSh
nkU
aac
aac
@@ -113045,7 +113031,7 @@ vXM
pZH
vXM
vXM
-qCU
+bwp
vXM
vXM
aev
@@ -114343,7 +114329,7 @@ aac
aac
aac
hlS
-csA
+eSh
aac
aac
aac
@@ -117943,7 +117929,7 @@ aac
aac
aac
aac
-csA
+eSh
aac
aac
aac
@@ -159682,7 +159668,7 @@ opb
oOJ
oOJ
stK
-ixH
+gnp
sOg
oOJ
uXM
diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm
index 66345284283e1..01d06908ce85d 100644
--- a/_maps/map_files/wawastation/wawastation.dmm
+++ b/_maps/map_files/wawastation/wawastation.dmm
@@ -151,6 +151,9 @@
/obj/item/clothing/suit/hooded/ablative,
/obj/item/gun/energy/temperature/security,
/obj/item/gun/energy/ionrifle,
+/obj/item/gun/ballistic/automatic/battle_rifle{
+ pixel_y = 3
+ },
/obj/effect/turf_decal/tile/red/half/contrasted{
dir = 1
},
@@ -2165,9 +2168,7 @@
/area/station/commons/fitness/recreation)
"aJM" = (
/obj/machinery/light/small/directional/north,
-/obj/item/surgery_tray/full/morgue{
- is_portable = 0
- },
+/obj/effect/spawner/surgery_tray/full/morgue/deployed,
/turf/open/floor/iron/dark/textured,
/area/station/medical/morgue)
"aJP" = (
@@ -4663,7 +4664,7 @@
/obj/structure/chair{
dir = 4
},
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/iron/white/small,
/area/station/science/lobby)
@@ -5609,7 +5610,7 @@
/area/station/security/lockers)
"bYo" = (
/obj/machinery/mecha_part_fabricator{
- dir = 1
+ drop_direction = 1
},
/obj/effect/turf_decal/delivery,
/obj/structure/sign/poster/contraband/borg_fancy_1/directional/south,
@@ -8907,6 +8908,7 @@
/obj/effect/turf_decal/tile/purple/opposingcorners,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"dkq" = (
@@ -11178,7 +11180,7 @@
/area/station/service/janitor)
"dWb" = (
/obj/structure/window/reinforced/spawner/directional/west,
-/mob/living/simple_animal/bot/floorbot,
+/mob/living/basic/bot/repairbot,
/obj/effect/turf_decal/stripes{
dir = 6
},
@@ -14049,6 +14051,8 @@
/obj/machinery/power/apc/auto_name/directional/south,
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/science)
"eZQ" = (
@@ -17845,6 +17849,8 @@
/area/station/engineering/atmos/upper)
"grl" = (
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"grm" = (
@@ -19114,6 +19120,8 @@
"gMK" = (
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/science)
"gNd" = (
@@ -20275,6 +20283,12 @@
/obj/structure/lattice,
/turf/open/misc/asteroid/airless,
/area/space/nearstation)
+"hgX" = (
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/plating,
+/area/station/maintenance/department/science)
"hhd" = (
/obj/machinery/door/poddoor/shutters{
id = "ordauxgarage";
@@ -21681,7 +21695,7 @@
/obj/effect/decal/cleanable/blood/tracks{
dir = 4
},
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 8
},
@@ -26289,6 +26303,8 @@
dir = 1
},
/obj/effect/decal/cleanable/blood/old,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"jrm" = (
@@ -28847,6 +28863,8 @@
/obj/effect/mapping_helpers/airlock/unres{
dir = 1
},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/science)
"kjv" = (
@@ -33126,6 +33144,12 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/iron,
/area/station/hallway/secondary/exit/departure_lounge)
+"lIW" = (
+/obj/item/stack/cable_coil{
+ amount = 1
+ },
+/turf/open/floor/plating/airless,
+/area/station/solars/port/fore)
"lIZ" = (
/obj/effect/turf_decal/sand/plating,
/obj/machinery/vending/boozeomat,
@@ -34365,7 +34389,7 @@
"mhI" = (
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
-/obj/item/surgery_tray/full/deployed,
+/obj/effect/spawner/surgery_tray/full/deployed,
/obj/effect/turf_decal/tile/blue/full,
/obj/machinery/light_switch/directional/south,
/turf/open/floor/iron/white,
@@ -34863,7 +34887,7 @@
/area/station/engineering/atmos)
"moT" = (
/obj/effect/turf_decal/siding/white,
-/obj/item/ammo_casing/a357/spent,
+/obj/item/ammo_casing/c357/spent,
/turf/open/floor/iron/white/small,
/area/station/science/lobby)
"moU" = (
@@ -35988,6 +36012,7 @@
dir = 8
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"mJL" = (
@@ -36694,6 +36719,13 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/carpet,
/area/station/commons/dorms)
+"mXF" = (
+/obj/effect/mapping_helpers/broken_floor,
+/obj/item/stack/cable_coil{
+ amount = 1
+ },
+/turf/open/floor/plating/airless,
+/area/station/solars/starboard/fore)
"mXJ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -38103,7 +38135,7 @@
/turf/open/floor/glass/reinforced,
/area/station/security/prison)
"nvT" = (
-/obj/item/surgery_tray/full/deployed,
+/obj/effect/spawner/surgery_tray/full/deployed,
/obj/effect/turf_decal/tile/blue/fourcorners,
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable,
@@ -39502,7 +39534,7 @@
/area/station/maintenance/central/lesser)
"oac" = (
/obj/machinery/mecha_part_fabricator{
- dir = 1
+ drop_direction = 1
},
/obj/effect/turf_decal/delivery,
/obj/machinery/digital_clock/directional/south,
@@ -41877,6 +41909,7 @@
/obj/effect/turf_decal/tile/purple/half/contrasted,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"oUb" = (
@@ -47752,6 +47785,7 @@
"qXy" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"qXB" = (
@@ -48038,13 +48072,6 @@
"rcl" = (
/turf/closed/wall/r_wall,
/area/station/security/execution/transfer)
-"rcp" = (
-/obj/machinery/power/solar{
- id = "forestarboard";
- name = "Fore-Starboard Solar Array"
- },
-/turf/open/floor/iron/solarpanel/airless,
-/area/station/solars/starboard/fore)
"rcs" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -49260,6 +49287,11 @@
"ruZ" = (
/turf/closed/wall/r_wall,
/area/station/maintenance/department/engine)
+"rvg" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/open/floor/iron/white,
+/area/station/science/lobby)
"rvo" = (
/obj/machinery/light/small/dim/directional/west,
/obj/effect/turf_decal/tile/green/half/contrasted{
@@ -55454,6 +55486,7 @@
/area/station/hallway/secondary/exit/departure_lounge)
"tAt" = (
/obj/machinery/power/smes,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/station/maintenance/solars/port/aft)
"tAw" = (
@@ -56116,6 +56149,8 @@
"tLH" = (
/obj/item/storage/fancy/candle_box,
/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/science)
"tLI" = (
@@ -58015,6 +58050,13 @@
/obj/machinery/firealarm/directional/south,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
+"urS" = (
+/obj/structure/lattice/catwalk,
+/obj/item/stack/cable_coil{
+ amount = 1
+ },
+/turf/open/space/basic,
+/area/station/solars/port/fore)
"urT" = (
/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -58281,7 +58323,7 @@
/turf/open/openspace,
/area/station/hallway/secondary/exit/departure_lounge)
"uxw" = (
-/obj/item/surgery_tray/full/deployed,
+/obj/effect/spawner/surgery_tray/full/deployed,
/obj/effect/turf_decal/tile/blue/fourcorners,
/obj/machinery/airalarm/directional/west,
/obj/effect/decal/cleanable/dirt/dust,
@@ -63396,6 +63438,10 @@
},
/turf/open/floor/iron/white,
/area/station/science/ordnance/testlab)
+"wqG" = (
+/obj/structure/lattice/catwalk,
+/turf/open/openspace/telecomms,
+/area/station/science/xenobiology)
"wqK" = (
/obj/structure/table,
/obj/item/circular_saw,
@@ -64653,6 +64699,8 @@
/area/station/command/heads_quarters/captain/private)
"wMB" = (
/obj/effect/turf_decal/siding,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/textured,
/area/station/science/lobby)
"wME" = (
@@ -65155,6 +65203,8 @@
"wWY" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/blood/old,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/station/maintenance/department/science)
"wWZ" = (
@@ -65331,7 +65381,7 @@
/turf/open/floor/circuit/green/telecomms/mainframe,
/area/station/tcommsat/server)
"wZU" = (
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large/old,
/turf/open/misc/asteroid,
/area/station/asteroid)
"xad" = (
@@ -67107,6 +67157,7 @@
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/plating,
/area/station/maintenance/port/lesser)
"xFt" = (
@@ -68179,7 +68230,7 @@
},
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/mapping_helpers/broken_floor,
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large,
/turf/open/floor/plating,
/area/station/maintenance/department/medical/central)
"ybh" = (
@@ -77684,7 +77735,7 @@ rGO
opZ
opZ
fYX
-rGO
+urS
opZ
opZ
opZ
@@ -77942,7 +77993,7 @@ sKL
rGO
nMk
rGO
-nMk
+lIW
rGO
sKL
rGO
@@ -78199,7 +78250,7 @@ opZ
opZ
fYX
rGO
-fYX
+opZ
opZ
opZ
opZ
@@ -78455,8 +78506,8 @@ rGO
sKL
rGO
nMk
-rGO
-nMk
+urS
+lIW
rGO
sKL
rGO
@@ -78713,10 +78764,10 @@ opZ
opZ
fYX
rGO
-fYX
opZ
opZ
-fYX
+opZ
+opZ
cLf
iUF
dUc
@@ -102876,7 +102927,7 @@ vxX
vxX
gvF
dnW
-iKc
+rvg
slL
iKc
cRV
@@ -103133,7 +103184,7 @@ uJt
vfJ
gvF
eBY
-iKc
+rvg
vuq
hPH
iKc
@@ -103390,7 +103441,7 @@ wWY
kju
wMB
jrd
-iKc
+rvg
slL
slL
slL
@@ -103643,7 +103694,7 @@ cLf
vxX
uJt
eJr
-uba
+hgX
vfJ
aTU
jUi
@@ -112110,7 +112161,7 @@ cLS
qSb
qSb
qSb
-qSb
+mXF
qSb
hsz
hsz
@@ -112358,7 +112409,7 @@ shs
cLf
pbP
rst
-rcp
+pih
rst
pih
rst
@@ -112615,7 +112666,7 @@ shs
cLf
cLf
cLf
-rcp
+pih
rst
pih
rst
@@ -186170,9 +186221,9 @@ qXj
lKY
qUi
wmO
-ybO
-ybO
-ybO
+wqG
+wqG
+wqG
wmO
rmi
lKY
@@ -186427,9 +186478,9 @@ qXj
avA
nVm
wmO
-ybO
-ybO
-ybO
+wqG
+wqG
+wqG
wmO
xGG
uBm
@@ -186684,9 +186735,9 @@ qXj
lKY
qGD
wmO
-ybO
-ybO
-ybO
+wqG
+wqG
+wqG
wmO
bLI
lKY
diff --git a/_maps/modular_generic/ice_l_storage.dmm b/_maps/modular_generic/ice_l_storage.dmm
index 6aca9bec648fb..a130f69cdd1b7 100644
--- a/_maps/modular_generic/ice_l_storage.dmm
+++ b/_maps/modular_generic/ice_l_storage.dmm
@@ -213,7 +213,7 @@
"M" = (
/obj/effect/turf_decal/bot/right,
/obj/structure/closet/crate/large,
-/obj/item/crowbar/large/heavy,
+/obj/item/crowbar/large/twenty_force,
/turf/open/floor/plating,
/area/template_noop)
"N" = (
diff --git a/_maps/modular_generic/station_l_morgue.dmm b/_maps/modular_generic/station_l_morgue.dmm
index 4b4eb63458d1b..3b5adf14d410b 100644
--- a/_maps/modular_generic/station_l_morgue.dmm
+++ b/_maps/modular_generic/station_l_morgue.dmm
@@ -361,7 +361,7 @@
dir = 4
},
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/surgery_tray/full/morgue,
+/obj/effect/spawner/surgery_tray/full/morgue,
/obj/structure/railing{
dir = 4
},
diff --git a/_maps/northstar.json b/_maps/northstar.json
deleted file mode 100644
index fdae8ac42f387..0000000000000
--- a/_maps/northstar.json
+++ /dev/null
@@ -1,32 +0,0 @@
-
-{
- "version": 1,
- "map_name": "NorthStar",
- "map_path": "map_files/NorthStar",
- "map_file": "north_star.dmm",
- "shuttles": {
- "emergency": "emergency_northstar",
- "ferry": "ferry_fancy",
- "cargo": "cargo_northstar",
- "whiteship": "whiteship_delta"
- },
- "space_ruin_levels": 3,
- "space_empty_levels": 2,
- "traits": [
- {
- "Linkage": "Cross"
- },
- {
- "Baseturf": "/turf/open/openspace",
- "Linkage": "Cross"
- },
- {
- "Baseturf": "/turf/open/openspace",
- "Linkage": "Cross"
- },
- {
- "Baseturf": "/turf/open/openspace",
- "Linkage": "Cross"
- }
- ]
-}
diff --git a/_maps/shuttles/arrival_northstar.dmm b/_maps/shuttles/arrival_northstar.dmm
deleted file mode 100644
index fadde8f9df42b..0000000000000
--- a/_maps/shuttles/arrival_northstar.dmm
+++ /dev/null
@@ -1,278 +0,0 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"a" = (
-/turf/template_noop,
-/area/template_noop)
-"b" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 1
- },
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/shuttle/arrival)
-"c" = (
-/obj/machinery/door/airlock/survival_pod/glass{
- name = "Arrivals Shuttle Airlock"
- },
-/obj/structure/fans/tiny,
-/turf/open/floor/plating,
-/area/shuttle/arrival)
-"d" = (
-/obj/machinery/requests_console/directional/north{
- department = "Arrivals shuttle";
- name = "Arrival Shuttle Requests Console"
- },
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/storage/medkit/regular{
- pixel_y = 4
- },
-/obj/item/storage/toolbox/emergency,
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"g" = (
-/obj/machinery/power/shuttle_engine/propulsion/burst/right{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/shuttle/arrival)
-"j" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"k" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/storage/medkit/o2,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/mask/breath,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/tank/internals/emergency_oxygen,
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"n" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"q" = (
-/obj/structure/closet/wardrobe/grey,
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"r" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"s" = (
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"t" = (
-/turf/closed/wall/mineral/titanium/survival,
-/area/shuttle/arrival)
-"u" = (
-/obj/effect/turf_decal/trimline/red/corner,
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 8
- },
-/turf/open/floor/pod,
-/area/shuttle/arrival)
-"v" = (
-/obj/structure/closet/wardrobe/mixed,
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"w" = (
-/obj/machinery/power/shuttle_engine/propulsion/burst/left{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/shuttle/arrival)
-"y" = (
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 8
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"z" = (
-/obj/structure/extinguisher_cabinet/directional/south,
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"A" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/turf/open/floor/pod,
-/area/shuttle/arrival)
-"C" = (
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 4
- },
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 1
- },
-/turf/open/floor/pod,
-/area/shuttle/arrival)
-"D" = (
-/obj/machinery/power/shuttle_engine/propulsion{
- dir = 4
- },
-/obj/docking_port/mobile/arrivals{
- name = "northstar arrivals shuttle"
- },
-/turf/open/floor/plating/airless,
-/area/shuttle/arrival)
-"E" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 4
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"F" = (
-/obj/structure/chair/comfy/shuttle,
-/obj/machinery/light/red/directional/north,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/shuttle/arrival)
-"H" = (
-/obj/machinery/power/shuttle_engine/propulsion{
- dir = 4
- },
-/turf/open/floor/plating/airless,
-/area/shuttle/arrival)
-"J" = (
-/obj/effect/turf_decal/trimline/red/warning{
- dir = 1
- },
-/obj/machinery/light/red/directional/south,
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"L" = (
-/obj/machinery/power/shuttle_engine/heater{
- dir = 4
- },
-/obj/structure/window/reinforced/survival_pod/spawner/directional/west,
-/turf/open/floor/plating/airless,
-/area/shuttle/arrival)
-"M" = (
-/obj/effect/turf_decal/trimline/red/corner{
- dir = 1
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"N" = (
-/obj/structure/chair/comfy/shuttle,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/shuttle/arrival)
-"P" = (
-/obj/effect/turf_decal/trimline/red/warning,
-/turf/open/floor/pod,
-/area/shuttle/arrival)
-"V" = (
-/obj/structure/chair/comfy/shuttle,
-/obj/item/radio/intercom/directional/north,
-/turf/open/floor/catwalk_floor/iron_dark,
-/area/shuttle/arrival)
-"W" = (
-/obj/effect/turf_decal/trimline/red/corner,
-/turf/open/floor/pod/dark,
-/area/shuttle/arrival)
-"Z" = (
-/obj/effect/spawner/structure/window/survival_pod,
-/obj/structure/fans/tiny/invisible,
-/turf/open/floor/plating,
-/area/shuttle/arrival)
-
-(1,1,1) = {"
-a
-t
-Z
-Z
-t
-a
-"}
-(2,1,1) = {"
-t
-t
-v
-q
-t
-t
-"}
-(3,1,1) = {"
-t
-k
-W
-E
-s
-t
-"}
-(4,1,1) = {"
-t
-F
-P
-b
-z
-t
-"}
-(5,1,1) = {"
-t
-N
-P
-b
-n
-Z
-"}
-(6,1,1) = {"
-t
-d
-u
-A
-C
-c
-"}
-(7,1,1) = {"
-t
-N
-P
-b
-n
-Z
-"}
-(8,1,1) = {"
-t
-V
-P
-b
-J
-t
-"}
-(9,1,1) = {"
-t
-j
-y
-r
-M
-t
-"}
-(10,1,1) = {"
-t
-L
-L
-L
-L
-t
-"}
-(11,1,1) = {"
-t
-g
-D
-H
-w
-t
-"}
diff --git a/_maps/shuttles/cargo_northstar.dmm b/_maps/shuttles/cargo_northstar.dmm
deleted file mode 100644
index 8eb2df120090b..0000000000000
--- a/_maps/shuttles/cargo_northstar.dmm
+++ /dev/null
@@ -1,295 +0,0 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"b" = (
-/obj/machinery/power/shuttle_engine/propulsion/burst/right,
-/turf/open/floor/plating/airless,
-/area/shuttle/supply)
-"c" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "QMLoad"
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/shuttle/supply)
-"d" = (
-/obj/machinery/button/door/directional/east{
- id = "QMLoaddoor";
- name = "Loading Doors";
- pixel_y = -8
- },
-/obj/machinery/button/door/directional/east{
- id = "QMLoaddoor2";
- name = "Loading Doors";
- pixel_y = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/machinery/conveyor_switch/oneway{
- id = "QMLoad"
- },
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"f" = (
-/obj/machinery/conveyor{
- dir = 5;
- id = "QMLoad"
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/shuttle/supply)
-"g" = (
-/obj/machinery/door/poddoor{
- id = "QMLoaddoor2";
- name = "Supply Dock Loading Door"
- },
-/obj/machinery/conveyor{
- dir = 4;
- id = "QMLoad"
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/shuttle/supply)
-"h" = (
-/turf/closed/wall/mineral/titanium/survival/nodiagonal,
-/area/shuttle/supply)
-"i" = (
-/turf/closed/wall/mineral/titanium/survival,
-/area/shuttle/supply)
-"j" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "QMLoad"
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/shuttle/supply)
-"k" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"n" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"o" = (
-/obj/machinery/power/shuttle_engine/propulsion/burst/left,
-/turf/open/floor/plating/airless,
-/area/shuttle/supply)
-"q" = (
-/obj/machinery/power/shuttle_engine/heater{
- icon_state = "router"
- },
-/turf/open/floor/plating/airless,
-/area/shuttle/supply)
-"s" = (
-/turf/template_noop,
-/area/template_noop)
-"u" = (
-/obj/machinery/power/shuttle_engine/propulsion,
-/turf/open/floor/plating/airless,
-/area/shuttle/supply)
-"v" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"w" = (
-/obj/effect/spawner/structure/window/survival_pod,
-/turf/open/floor/plating,
-/area/shuttle/supply)
-"x" = (
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/shuttle/supply)
-"B" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"C" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"D" = (
-/obj/machinery/power/shuttle_engine/heater,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/west,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/north,
-/turf/open/floor/plating/airless,
-/area/shuttle/supply)
-"G" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/machinery/light/red/directional/west,
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"I" = (
-/obj/machinery/power/shuttle_engine/heater,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/north,
-/turf/open/floor/plating/airless,
-/area/shuttle/supply)
-"K" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "QMLoad"
- },
-/obj/machinery/door/poddoor{
- id = "QMLoaddoor";
- name = "Supply Dock Loading Door"
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/shuttle/supply)
-"M" = (
-/obj/machinery/power/shuttle_engine/heater,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/east,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/north,
-/turf/open/floor/plating/airless,
-/area/shuttle/supply)
-"N" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"O" = (
-/obj/effect/mapping_helpers/airlock/access/all/supply/general,
-/obj/machinery/door/airlock/survival_pod/glass{
- name = "Supply Shuttle Airlock"
- },
-/obj/docking_port/mobile/supply,
-/turf/open/floor/catwalk_floor/iron,
-/area/shuttle/supply)
-"Q" = (
-/obj/machinery/conveyor{
- dir = 9;
- id = "QMLoad"
- },
-/turf/open/floor/catwalk_floor/iron_smooth,
-/area/shuttle/supply)
-"V" = (
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"Y" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-"Z" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/yellow{
- dir = 1
- },
-/obj/machinery/light/red/directional/west,
-/turf/open/floor/iron/smooth,
-/area/shuttle/supply)
-
-(1,1,1) = {"
-h
-h
-i
-i
-i
-i
-i
-i
-i
-i
-s
-"}
-(2,1,1) = {"
-h
-f
-Q
-G
-v
-v
-Z
-C
-x
-I
-o
-"}
-(3,1,1) = {"
-w
-c
-j
-Y
-k
-N
-k
-n
-D
-q
-u
-"}
-(4,1,1) = {"
-w
-c
-j
-Y
-N
-k
-N
-n
-M
-q
-u
-"}
-(5,1,1) = {"
-h
-c
-j
-d
-B
-B
-B
-V
-x
-I
-b
-"}
-(6,1,1) = {"
-h
-g
-K
-h
-O
-w
-w
-h
-h
-i
-s
-"}
diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm
index cdf903f034595..1cf44657848d0 100644
--- a/_maps/shuttles/emergency_birdshot.dmm
+++ b/_maps/shuttles/emergency_birdshot.dmm
@@ -749,7 +749,7 @@
/area/shuttle/escape)
"Ko" = (
/obj/structure/table/optable,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/mask/surgical,
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/mineral/titanium/white,
diff --git a/_maps/shuttles/emergency_donut.dmm b/_maps/shuttles/emergency_donut.dmm
index f81c084e90bf6..27f9cd7f1ace4 100644
--- a/_maps/shuttles/emergency_donut.dmm
+++ b/_maps/shuttles/emergency_donut.dmm
@@ -317,7 +317,7 @@
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"ed" = (
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/suit/apron/surgical,
/obj/item/clothing/mask/surgical,
/obj/structure/table/optable,
diff --git a/_maps/shuttles/emergency_fish.dmm b/_maps/shuttles/emergency_fish.dmm
index b99aa01b096bf..43ec2aa162013 100644
--- a/_maps/shuttles/emergency_fish.dmm
+++ b/_maps/shuttles/emergency_fish.dmm
@@ -844,7 +844,7 @@
/area/shuttle/escape)
"VD" = (
/obj/structure/table/glass,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = 6
},
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency_humpback.dmm
index 195f342cd3caa..89ab755acbf55 100644
--- a/_maps/shuttles/emergency_humpback.dmm
+++ b/_maps/shuttles/emergency_humpback.dmm
@@ -418,7 +418,7 @@
/area/shuttle/escape)
"zn" = (
/obj/structure/table,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/iron/showroomfloor,
/area/shuttle/escape)
"zr" = (
diff --git a/_maps/shuttles/emergency_lance.dmm b/_maps/shuttles/emergency_lance.dmm
index c17d1767b13af..2f62bc945bdd9 100644
--- a/_maps/shuttles/emergency_lance.dmm
+++ b/_maps/shuttles/emergency_lance.dmm
@@ -62,7 +62,7 @@
/area/shuttle/escape)
"bV" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{
dir = 8
@@ -125,7 +125,7 @@
/area/shuttle/escape)
"dW" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
@@ -287,7 +287,7 @@
/area/shuttle/escape)
"jo" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{
dir = 8
@@ -533,7 +533,7 @@
/area/shuttle/escape)
"pu" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
@@ -573,7 +573,7 @@
/area/shuttle/escape)
"qe" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
@@ -609,7 +609,7 @@
/area/shuttle/escape)
"rw" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
@@ -682,7 +682,7 @@
/area/shuttle/escape)
"uK" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
@@ -868,7 +868,7 @@
/area/shuttle/escape)
"Cx" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
@@ -887,7 +887,7 @@
/area/shuttle/escape)
"CR" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
@@ -968,8 +968,8 @@
/obj/item/book/manual/wiki/surgery{
pixel_x = -15
},
-/obj/item/surgery_tray/full,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full{
pixel_x = 5
},
/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
@@ -1199,7 +1199,7 @@
/area/shuttle/escape)
"LD" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm
index 73c5f42b38f06..89579283e9317 100644
--- a/_maps/shuttles/emergency_mini.dmm
+++ b/_maps/shuttles/emergency_mini.dmm
@@ -227,7 +227,7 @@
"W" = (
/obj/structure/table,
/obj/item/clothing/suit/apron/surgical,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"X" = (
diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency_nature.dmm
index 0f793c714753e..16e1b10721268 100644
--- a/_maps/shuttles/emergency_nature.dmm
+++ b/_maps/shuttles/emergency_nature.dmm
@@ -497,7 +497,7 @@
/area/shuttle/escape)
"sF" = (
/obj/effect/turf_decal/trimline/blue/filled/line,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = 5
},
/obj/structure/rack,
diff --git a/_maps/shuttles/emergency_nebula.dmm b/_maps/shuttles/emergency_nebula.dmm
index 7b729f72167f4..39359e5c29e9d 100644
--- a/_maps/shuttles/emergency_nebula.dmm
+++ b/_maps/shuttles/emergency_nebula.dmm
@@ -2447,7 +2447,7 @@
"XV" = (
/obj/structure/table/reinforced,
/obj/item/radio/intercom/directional/east,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/machinery/defibrillator_mount/directional/south,
/obj/machinery/light/small/directional/south,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
diff --git a/_maps/shuttles/emergency_northstar.dmm b/_maps/shuttles/emergency_northstar.dmm
index 798a4d9671a4e..672dd9b58e23b 100644
--- a/_maps/shuttles/emergency_northstar.dmm
+++ b/_maps/shuttles/emergency_northstar.dmm
@@ -127,7 +127,7 @@
"nC" = (
/obj/structure/table/reinforced/rglass,
/obj/item/defibrillator/loaded,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = 13
},
/obj/effect/turf_decal/tile/blue/anticorner{
diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm
index 7e3937568001f..7eb255fc2d42d 100644
--- a/_maps/shuttles/emergency_raven.dmm
+++ b/_maps/shuttles/emergency_raven.dmm
@@ -742,7 +742,7 @@
/area/shuttle/escape)
"cd" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/turf/open/floor/plating,
/area/shuttle/escape)
@@ -1456,7 +1456,7 @@
/area/shuttle/escape)
"eo" = (
/obj/machinery/door/airlock/external/ruin{
- name = "Emegency Shuttle External Airlock"
+ name = "Emergency Shuttle External Airlock"
},
/obj/docking_port/mobile/emergency{
name = "CentCom Raven Cruiser"
diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency_russiafightpit.dmm
index 33baf94c7ecfe..a00f6804bbcb8 100644
--- a/_maps/shuttles/emergency_russiafightpit.dmm
+++ b/_maps/shuttles/emergency_russiafightpit.dmm
@@ -438,7 +438,7 @@
"iJ" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/gloves/fingerless,
/turf/open/floor/iron,
/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_shadow.dmm b/_maps/shuttles/emergency_shadow.dmm
index 5afa72919cb28..f5c2cd049f11d 100644
--- a/_maps/shuttles/emergency_shadow.dmm
+++ b/_maps/shuttles/emergency_shadow.dmm
@@ -1000,7 +1000,7 @@
"Sb" = (
/obj/structure/table,
/obj/structure/window/reinforced/spawner/directional/west,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/suit/apron/surgical,
/obj/item/clothing/mask/surgical,
/obj/item/clothing/gloves/latex/nitrile{
diff --git a/_maps/shuttles/emergency_tram.dmm b/_maps/shuttles/emergency_tram.dmm
index 5ec40d242d670..38b2608865be4 100644
--- a/_maps/shuttles/emergency_tram.dmm
+++ b/_maps/shuttles/emergency_tram.dmm
@@ -203,7 +203,7 @@
/area/shuttle/escape)
"aX" = (
/obj/structure/table/optable,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/mask/surgical,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_tranquility.dmm b/_maps/shuttles/emergency_tranquility.dmm
index ae3924becbc02..0de15be89cbc2 100644
--- a/_maps/shuttles/emergency_tranquility.dmm
+++ b/_maps/shuttles/emergency_tranquility.dmm
@@ -2530,7 +2530,7 @@
/obj/effect/turf_decal/tile/blue/opposingcorners,
/obj/structure/table,
/obj/item/lazarus_injector,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/item/clothing/gloves/latex/nitrile{
pixel_y = 4
},
diff --git a/_maps/shuttles/hunter_mi13_foodtruck.dmm b/_maps/shuttles/hunter_mi13_foodtruck.dmm
index 34e6bb730ca61..4dca72eaae8c3 100644
--- a/_maps/shuttles/hunter_mi13_foodtruck.dmm
+++ b/_maps/shuttles/hunter_mi13_foodtruck.dmm
@@ -15,7 +15,7 @@
/area/shuttle/hunter/mi13_foodtruck)
"af" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/structure/sign/poster/contraband/hacking_guide/directional/south,
/turf/open/floor/circuit/red/off,
/area/shuttle/hunter/mi13_foodtruck)
diff --git a/_maps/shuttles/mining_common_northstar.dmm b/_maps/shuttles/mining_common_northstar.dmm
deleted file mode 100644
index 5e24739c363d5..0000000000000
--- a/_maps/shuttles/mining_common_northstar.dmm
+++ /dev/null
@@ -1,163 +0,0 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"a" = (
-/turf/template_noop,
-/area/template_noop)
-"d" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/neutral/line{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"e" = (
-/obj/machinery/power/shuttle_engine/heater,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/north,
-/turf/open/floor/plating/airless,
-/area/shuttle/mining)
-"k" = (
-/obj/effect/turf_decal/caution/stand_clear/red{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"l" = (
-/obj/effect/spawner/structure/window/survival_pod,
-/turf/open/floor/plating,
-/area/shuttle/mining)
-"q" = (
-/obj/machinery/power/shuttle_engine/propulsion,
-/turf/open/floor/plating/airless,
-/area/shuttle/mining)
-"r" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/structure/sign/poster/official/plasma_effects/directional/south,
-/obj/effect/turf_decal/trimline/neutral/line{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"t" = (
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"v" = (
-/turf/closed/wall/mineral/titanium/survival,
-/area/shuttle/mining)
-"z" = (
-/obj/structure/closet/crate,
-/obj/effect/turf_decal/trimline/brown,
-/obj/effect/turf_decal/siding/dark{
- dir = 1
- },
-/obj/machinery/light/small/red/directional/south,
-/turf/open/floor/pod/dark,
-/area/shuttle/mining)
-"A" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/neutral/corner{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"C" = (
-/obj/machinery/door/airlock/survival_pod/glass{
- name = "Public Mining Shuttle"
- },
-/obj/effect/turf_decal/bot_red,
-/obj/docking_port/mobile{
- dir = 4;
- name = "lavaland shuttle";
- port_direction = 8;
- shuttle_id = "mining_common"
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"D" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/toolbox/emergency,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"E" = (
-/obj/structure/sign/nanotrasen,
-/turf/closed/wall/mineral/titanium/survival,
-/area/shuttle/mining)
-"G" = (
-/obj/structure/ore_box,
-/obj/effect/turf_decal/trimline/brown,
-/obj/effect/turf_decal/siding/dark{
- dir = 5
- },
-/turf/open/floor/pod/dark,
-/area/shuttle/mining)
-"J" = (
-/obj/effect/turf_decal/trimline/neutral/line,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"P" = (
-/obj/machinery/computer/shuttle/mining/common,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"T" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/neutral/line,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"U" = (
-/obj/structure/table/reinforced,
-/obj/item/radio,
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-
-(1,1,1) = {"
-v
-l
-l
-C
-l
-v
-a
-"}
-(2,1,1) = {"
-l
-P
-T
-k
-z
-v
-v
-"}
-(3,1,1) = {"
-l
-D
-J
-t
-G
-e
-q
-"}
-(4,1,1) = {"
-v
-U
-A
-d
-r
-v
-v
-"}
-(5,1,1) = {"
-v
-l
-l
-E
-l
-v
-a
-"}
diff --git a/_maps/shuttles/mining_northstar.dmm b/_maps/shuttles/mining_northstar.dmm
deleted file mode 100644
index 48c194b6d4582..0000000000000
--- a/_maps/shuttles/mining_northstar.dmm
+++ /dev/null
@@ -1,271 +0,0 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"a" = (
-/obj/effect/turf_decal/bot_red,
-/obj/machinery/door/airlock/survival_pod{
- name = "Mining Shuttle"
- },
-/obj/docking_port/mobile{
- dir = 4;
- name = "mining shuttle";
- port_direction = 8;
- shuttle_id = "mining"
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"c" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/toolbox/emergency,
-/obj/structure/sign/warning/xeno_mining/directional/north,
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"d" = (
-/obj/item/clothing/suit/hazardvest{
- desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
- name = "emergency lifejacket"
- },
-/obj/item/clothing/suit/hazardvest{
- desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
- name = "emergency lifejacket"
- },
-/obj/item/clothing/suit/hazardvest{
- desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
- name = "emergency lifejacket"
- },
-/obj/item/clothing/suit/hazardvest{
- desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
- name = "emergency lifejacket"
- },
-/obj/item/clothing/suit/hazardvest{
- desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
- name = "emergency lifejacket"
- },
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = 3
- },
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = 3
- },
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = 3
- },
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = 3
- },
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = 3
- },
-/obj/item/clothing/mask/breath{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/breath{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/breath{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/breath{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/breath{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/head/utility/hardhat/orange{
- name = "protective hat";
- pixel_y = 9
- },
-/obj/item/clothing/head/utility/hardhat/orange{
- name = "protective hat";
- pixel_y = 9
- },
-/obj/item/clothing/head/utility/hardhat/orange{
- name = "protective hat";
- pixel_y = 9
- },
-/obj/item/clothing/head/utility/hardhat/orange{
- name = "protective hat";
- pixel_y = 9
- },
-/obj/item/clothing/head/utility/hardhat/orange{
- name = "protective hat";
- pixel_y = 9
- },
-/obj/structure/closet/crate/internals,
-/obj/item/pickaxe/emergency,
-/obj/item/pickaxe/emergency,
-/obj/effect/turf_decal/siding/brown{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown,
-/obj/machinery/light/small/red/directional/south,
-/turf/open/floor/pod/dark,
-/area/shuttle/mining)
-"j" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown/end{
- dir = 8
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"l" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/corner{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/line{
- dir = 5
- },
-/obj/structure/sign/poster/official/work_for_a_future/directional/north,
-/obj/machinery/light/small/red/directional/north,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"m" = (
-/obj/effect/turf_decal/caution/stand_clear/red{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"s" = (
-/obj/machinery/computer/shuttle/mining,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"z" = (
-/obj/effect/turf_decal/siding/brown{
- dir = 5
- },
-/obj/effect/turf_decal/trimline/brown,
-/turf/open/floor/pod/dark,
-/area/shuttle/mining)
-"A" = (
-/obj/machinery/power/shuttle_engine/propulsion,
-/turf/open/floor/plating,
-/area/shuttle/mining)
-"D" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/brown/end,
-/obj/machinery/light/small/red/directional/south,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"F" = (
-/obj/structure/table/reinforced,
-/obj/item/wrench,
-/obj/item/tank/internals/emergency_oxygen,
-/obj/item/crowbar/red,
-/obj/item/clothing/mask/gas,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"G" = (
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"I" = (
-/turf/closed/wall/mineral/titanium/survival,
-/area/shuttle/mining)
-"K" = (
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/purple/line,
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-"P" = (
-/turf/template_noop,
-/area/template_noop)
-"R" = (
-/obj/effect/spawner/structure/window/survival_pod,
-/turf/open/floor/plating,
-/area/shuttle/mining)
-"S" = (
-/obj/machinery/power/shuttle_engine/heater,
-/obj/structure/window/reinforced/survival_pod/spawner/directional/north,
-/turf/open/floor/plating,
-/area/shuttle/mining)
-"W" = (
-/obj/effect/turf_decal/siding/brown{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/brown,
-/obj/structure/ore_box,
-/turf/open/floor/pod/dark,
-/area/shuttle/mining)
-"X" = (
-/obj/structure/sign/nanotrasen,
-/turf/closed/wall/mineral/titanium/survival,
-/area/shuttle/mining)
-"Z" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/purple/line{
- dir = 4
- },
-/turf/open/floor/pod/light,
-/area/shuttle/mining)
-
-(1,1,1) = {"
-P
-I
-R
-a
-R
-I
-P
-"}
-(2,1,1) = {"
-I
-I
-c
-m
-d
-I
-I
-"}
-(3,1,1) = {"
-R
-s
-j
-G
-W
-S
-A
-"}
-(4,1,1) = {"
-R
-F
-K
-G
-z
-S
-A
-"}
-(5,1,1) = {"
-I
-I
-l
-Z
-D
-I
-I
-"}
-(6,1,1) = {"
-P
-I
-R
-X
-R
-I
-P
-"}
diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin_cyborg_mothership.dmm
index 7864564eab185..a0cb642c086a0 100644
--- a/_maps/shuttles/ruin_cyborg_mothership.dmm
+++ b/_maps/shuttles/ruin_cyborg_mothership.dmm
@@ -346,7 +346,7 @@
"ry" = (
/obj/machinery/mecha_part_fabricator/maint{
name = "forgotten exosuit fabricator";
- dir = 8
+ drop_direction = 8
},
/obj/machinery/conveyor{
dir = 8;
@@ -709,7 +709,7 @@
/area/shuttle/ruin/cyborg_mothership)
"Oq" = (
/obj/structure/table,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/effect/turf_decal/bot,
/obj/structure/sink/directional/east,
/obj/item/toy/figure/borg{
diff --git a/_maps/shuttles/whiteship_birdshot.dmm b/_maps/shuttles/whiteship_birdshot.dmm
index ed1936e3a1cf8..e076c841605c0 100644
--- a/_maps/shuttles/whiteship_birdshot.dmm
+++ b/_maps/shuttles/whiteship_birdshot.dmm
@@ -146,7 +146,7 @@
pixel_y = 3
},
/obj/item/reagent_containers/blood,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_x = 2;
pixel_y = 9
},
@@ -736,7 +736,6 @@
/turf/open/floor/iron/grimy,
/area/shuttle/abandoned/crew)
"yM" = (
-/obj/machinery/light/cold/directional/south,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/broken/directional/south,
/obj/machinery/firealarm/directional/east,
@@ -1084,15 +1083,6 @@
},
/turf/open/floor/iron/small,
/area/shuttle/abandoned/pod)
-"Jk" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc/auto_name/directional/south,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
- dir = 4
- },
-/turf/open/floor/iron/smooth_large,
-/area/shuttle/abandoned/cargo)
"Jn" = (
/obj/structure/dresser,
/obj/effect/decal/cleanable/dirt,
@@ -1712,7 +1702,7 @@ wE
RX
gV
EX
-Jk
+Ui
kQ
Jn
iS
diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm
index ed2e2a17b9077..9a20e38ebcd5d 100644
--- a/_maps/shuttles/whiteship_box.dmm
+++ b/_maps/shuttles/whiteship_box.dmm
@@ -104,7 +104,7 @@
},
/obj/machinery/airalarm/directional/north,
/obj/effect/mapping_helpers/airalarm/all_access,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = 4
},
/obj/item/clothing/suit/apron/surgical,
diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm
index f75f87001b517..e7981b169b8aa 100644
--- a/_maps/shuttles/whiteship_delta.dmm
+++ b/_maps/shuttles/whiteship_delta.dmm
@@ -1621,7 +1621,7 @@
/area/shuttle/abandoned/medbay)
"dO" = (
/obj/structure/table,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = 4
},
/obj/effect/decal/cleanable/dirt,
diff --git a/_maps/templates/holodeck_medicalsim.dmm b/_maps/templates/holodeck_medicalsim.dmm
index 7e4162ce074a4..269b9c41f017c 100644
--- a/_maps/templates/holodeck_medicalsim.dmm
+++ b/_maps/templates/holodeck_medicalsim.dmm
@@ -109,10 +109,12 @@
/area/template_noop)
"gr" = (
/obj/structure/table/glass,
-/obj/item/retractor,
/obj/effect/turf_decal/tile/red/half/contrasted{
dir = 1
},
+/obj/item/stack/medical/gauze,
+/obj/item/retractor,
+/obj/item/cautery,
/turf/open/floor/holofloor{
icon_state = "white"
},
@@ -467,12 +469,10 @@
},
/area/template_noop)
"Qu" = (
-/obj/structure/table/glass,
-/obj/item/stack/medical/gauze,
-/obj/item/cautery,
/obj/effect/turf_decal/tile/red/half/contrasted{
dir = 1
},
+/obj/structure/closet/crate/freezer/organ,
/turf/open/floor/holofloor{
icon_state = "white"
},
diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm
index 324ebc3209380..f96ce777568f9 100644
--- a/_maps/templates/lazy_templates/ninja_den.dmm
+++ b/_maps/templates/lazy_templates/ninja_den.dmm
@@ -1041,7 +1041,6 @@
/obj/machinery/vending/coffee{
default_price = 0;
extra_price = 0;
- fair_market_price = 0;
name = "\improper Jim Norton's Quebecois Coffee"
},
/turf/open/floor/wood/large,
@@ -1652,7 +1651,7 @@
/area/centcom/central_command_areas/holding)
"Mz" = (
/obj/structure/closet,
-/obj/item/surgery_tray/full,
+/obj/effect/spawner/surgery_tray/full,
/obj/machinery/iv_drip,
/obj/item/emergency_bed,
/obj/item/storage/medkit/regular,
diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm
index 60c5b1dcb5825..5178b0f935630 100644
--- a/_maps/templates/lazy_templates/nukie_base.dmm
+++ b/_maps/templates/lazy_templates/nukie_base.dmm
@@ -68,6 +68,17 @@
/obj/effect/turf_decal/siding/thinplating_new/light{
dir = 8
},
+/obj/structure/closet/syndicate/personal,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
+/obj/item/reagent_containers/cup/beaker/large,
/turf/open/floor/mineral/plastitanium,
/area/centcom/syndicate_mothership/expansion_chemicalwarfare)
"bo" = (
@@ -111,7 +122,7 @@
dir = 5
},
/obj/structure/table/reinforced/plasmarglass,
-/obj/item/surgery_tray/full{
+/obj/effect/spawner/surgery_tray/full{
pixel_y = -11
},
/obj/item/storage/belt/medical,
diff --git a/_maps/virtual_domains/island_brawl.dmm b/_maps/virtual_domains/island_brawl.dmm
index 62a63f81bab2e..f1f291b152a26 100644
--- a/_maps/virtual_domains/island_brawl.dmm
+++ b/_maps/virtual_domains/island_brawl.dmm
@@ -854,10 +854,6 @@
},
/turf/open/floor/plating,
/area/virtual_domain)
-"kI" = (
-/obj/effect/turf_decal/sand,
-/turf/closed/wall/mineral/wood,
-/area/virtual_domain)
"kJ" = (
/obj/machinery/shower/directional/south,
/obj/effect/turf_decal/siding/wood{
@@ -3177,10 +3173,6 @@
},
/turf/open/floor/iron/white/textured_large,
/area/virtual_domain)
-"NZ" = (
-/obj/effect/turf_decal/sand,
-/turf/closed/wall/mineral/wood,
-/area/virtual_domain/fullbright)
"Of" = (
/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{
pixel_x = -17;
@@ -7866,9 +7858,9 @@ bX
ev
ka
ka
-NZ
-NZ
-eK
+Bq
+Bq
+Bq
JN
JN
ka
@@ -7948,7 +7940,7 @@ bX
Yo
sz
ka
-NZ
+Bq
YI
LD
JN
@@ -8030,9 +8022,9 @@ Yo
Yo
sz
ka
-NZ
-kI
-eK
+Bq
+Bq
+Bq
JN
JN
ka
@@ -8112,7 +8104,7 @@ Yo
ka
ka
ka
-NZ
+Bq
Qk
Uf
JN
@@ -8194,9 +8186,9 @@ ka
th
ka
eK
-kI
-kI
-eK
+Bq
+Bq
+Bq
JN
JN
ka
@@ -8276,7 +8268,7 @@ ka
ka
ka
ka
-NZ
+Bq
ZB
sa
JN
@@ -8358,9 +8350,9 @@ ka
ka
ka
ka
-eK
-eK
-eK
+Bq
+Bq
+Bq
JN
JN
ka
@@ -11225,8 +11217,8 @@ cO
oa
th
ka
-NZ
-NZ
+eK
+eK
eK
ka
ka
@@ -11307,7 +11299,7 @@ cO
wb
MT
ka
-NZ
+eK
EA
xe
ka
diff --git a/_maps/virtual_domains/meta_central.dmm b/_maps/virtual_domains/meta_central.dmm
index 2fc87ae17c818..3fc4ed7f21e1f 100644
--- a/_maps/virtual_domains/meta_central.dmm
+++ b/_maps/virtual_domains/meta_central.dmm
@@ -4780,7 +4780,7 @@
"NO" = (
/obj/machinery/airalarm/directional/west,
/obj/structure/broken_flooring/singular/always_floorplane/directional/east,
-/obj/item/surgery_tray/full/deployed,
+/obj/effect/spawner/surgery_tray/full/deployed,
/turf/open/floor/plating,
/area/virtual_domain)
"NR" = (
diff --git a/_maps/virtual_domains/psyker_shuffle.dmm b/_maps/virtual_domains/psyker_shuffle.dmm
index c3434167bb18f..c744cecf0b430 100644
--- a/_maps/virtual_domains/psyker_shuffle.dmm
+++ b/_maps/virtual_domains/psyker_shuffle.dmm
@@ -246,7 +246,7 @@ Y
Q
Q
Q
-i
+Q
Y
o
o
@@ -848,7 +848,7 @@ o
"}
(26,1,1) = {"
Y
-Q
+i
Q
Q
Q
diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm
index 9b3b239034b96..4dff2007b39e3 100644
--- a/code/__DEFINES/_flags.dm
+++ b/code/__DEFINES/_flags.dm
@@ -142,6 +142,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define NO_BOH (1<<18)
/// This area prevents fishing from removing unique/limited loot from sources that're also used outside of it.
#define UNLIMITED_FISHING (1<<19)
+/// This area is prevented from having gravity (ie. space, nearstation, or outside solars)
+#define NO_GRAVITY (1<<20)
/*
These defines are used specifically with the atom/pass_flags bitmask
diff --git a/code/__DEFINES/ai/ai.dm b/code/__DEFINES/ai/ai.dm
index c91f7eb06597f..7cb863d07c19d 100644
--- a/code/__DEFINES/ai/ai.dm
+++ b/code/__DEFINES/ai/ai.dm
@@ -19,7 +19,7 @@
///For JPS pathing, the maximum length of a path we'll try to generate. Should be modularized depending on what we're doing later on
#define AI_MAX_PATH_LENGTH 30 // 30 is possibly overkill since by default we lose interest after 14 tiles of distance, but this gives wiggle room for weaving around obstacles
-#define AI_BOT_PATH_LENGTH 75
+#define AI_BOT_PATH_LENGTH 60
// How far should we, by default, be looking for interesting things to de-idle?
#define AI_DEFAULT_INTERESTING_DIST 10
diff --git a/code/__DEFINES/ai/bot_keys.dm b/code/__DEFINES/ai/bot_keys.dm
index c7285d18acac6..c12f48273eecd 100644
--- a/code/__DEFINES/ai/bot_keys.dm
+++ b/code/__DEFINES/ai/bot_keys.dm
@@ -16,6 +16,24 @@ DEFINE_BITFIELD(honkbot_flags, list(
"CAN_FAKE_CUFF" = HONKBOT_HANDCUFF_TARGET,
))
+///can we fix breaches
+#define REPAIRBOT_FIX_BREACHES (1<<0)
+///can we fix grilles
+#define REPAIRBOT_REPLACE_WINDOWS (1<<1)
+///can we replace tiles
+#define REPAIRBOT_REPLACE_TILES (1<<2)
+///can we fix girders
+#define REPAIRBOT_FIX_GIRDERS (1<<3)
+///can we build girders
+#define REPAIRBOT_BUILD_GIRDERS (1<<4)
+
+DEFINE_BITFIELD(repairbot_flags, list(
+ "FIX_BREACHES" = REPAIRBOT_FIX_BREACHES,
+ "REPLACE_WINDOWS" = REPAIRBOT_REPLACE_WINDOWS,
+ "REPLACE_TILES" = REPAIRBOT_REPLACE_TILES,
+ "FIX_GIRDERS" = REPAIRBOT_FIX_GIRDERS,
+ "BUILD_GIRDERS" = REPAIRBOT_BUILD_GIRDERS,
+))
// bot keys
///The first beacon we find
@@ -34,6 +52,8 @@ DEFINE_BITFIELD(honkbot_flags, list(
#define BB_RADIO_CHANNEL "radio_channel"
///list of unreachable things we will temporarily ignore
#define BB_TEMPORARY_IGNORE_LIST "temporary_ignore_list"
+///penalty cooldown if we are unable to path to any beacons
+#define BB_BOT_BEACON_COOLDOWN "bot_beacon_cooldown"
// medbot keys
///the patient we must heal
@@ -134,3 +154,31 @@ DEFINE_BITFIELD(honkbot_flags, list(
#define BB_VIBEBOT_PARTY_TARGET "party_target"
///key that holds our instrument
#define BB_VIBEBOT_INSTRUMENT "instrument"
+
+//repairbots
+///key that holds the floor we should tile over
+#define BB_TILELESS_FLOOR "tileless_floor"
+///key that holds the turf we should place a girder over
+#define BB_GIRDER_TARGET "girder_target"
+///key that holds the girder we should place a wall over
+#define BB_GIRDER_TO_WALL_TARGET "girder_to_wall"
+///key that holds the grille we must fix
+#define BB_WINDOW_FRAMETARGET "grille_target"
+///key that holds the machinery we repair with a welder
+#define BB_WELDER_TARGET "welder_target"
+///our wall girder ability
+#define BB_GIRDER_BUILD_ABILITY "girder_build_ability"
+///key that holds breached floors we should repair
+#define BB_BREACHED_FLOOR "breached_floor"
+///key that holds our emagged speech
+#define BB_REPAIRBOT_EMAGGED_SPEECH "emagged_speech"
+///key that holds our normal speech
+#define BB_REPAIRBOT_NORMAL_SPEECH "normal_speech"
+///key that holds the thing we should deconstruct
+#define BB_DECONSTRUCT_TARGET "deconstruct_target"
+///key that holds our speech timer
+#define BB_REPAIRBOT_SPEECH_COOLDOWN "speech_cooldown"
+///key that holds our target borg
+#define BB_ROBOT_TARGET "robot_target"
+///key that holds materials we can refill
+#define BB_REFILLABLE_TARGET "refillable_target"
diff --git a/code/__DEFINES/ai/monkey.dm b/code/__DEFINES/ai/monkey.dm
index 0e8c44e40fa83..833514e2f0fda 100644
--- a/code/__DEFINES/ai/monkey.dm
+++ b/code/__DEFINES/ai/monkey.dm
@@ -2,7 +2,6 @@
#define BB_MONKEY_AGGRESSIVE "BB_monkey_aggressive"
#define BB_MONKEY_GUN_NEURONS_ACTIVATED "BB_monkey_gun_aware"
-#define BB_MONKEY_GUN_WORKED "BB_monkey_gun_worked"
#define BB_MONKEY_BEST_FORCE_FOUND "BB_monkey_bestforcefound"
#define BB_MONKEY_ENEMIES "BB_monkey_enemies"
#define BB_MONKEY_BLACKLISTITEMS "BB_monkey_blacklistitems"
diff --git a/code/__DEFINES/anomaly.dm b/code/__DEFINES/anomaly.dm
index 7422af3fc65d7..6ca1db70678da 100644
--- a/code/__DEFINES/anomaly.dm
+++ b/code/__DEFINES/anomaly.dm
@@ -4,7 +4,7 @@
*/
///Time in ticks before the anomaly goes poof/explodes depending on type.
-#define ANOMALY_COUNTDOWN_TIMER (99 SECONDS)
+#define ANOMALY_COUNTDOWN_TIMER (120 SECONDS)
/**
* Nuisance/funny anomalies
diff --git a/code/__DEFINES/basic_mobs.dm b/code/__DEFINES/basic_mobs.dm
index 12ddaa3a68af9..75dcfbc3bd5a7 100644
--- a/code/__DEFINES/basic_mobs.dm
+++ b/code/__DEFINES/basic_mobs.dm
@@ -60,16 +60,10 @@ GLOBAL_LIST_EMPTY(customized_pets)
#define BB_RAPTOR_PLAYFUL "raptor_playful"
///this mob will flee combat when it feels threatened
#define BB_RAPTOR_COWARD "raptor_coward"
-///this mob will go out seeking trouble against its kind
-#define BB_RAPTOR_TROUBLE_MAKER "raptor_trouble_maker"
-///cooldown till we go out cause trouble again
-#define BB_RAPTOR_TROUBLE_COOLDOWN "raptor_trouble_maker_cooldown"
///our raptor baby target we will take care of
#define BB_RAPTOR_BABY "raptor_baby"
///the raptor we will heal up
#define BB_INJURED_RAPTOR "injured_raptor"
-///the raptor we will bully
-#define BB_RAPTOR_VICTIM "raptor_victim"
///the cooldown for next time we eat
#define BB_RAPTOR_EAT_COOLDOWN "raptor_eat_cooldown"
///our trough target
diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index d1fff3b20edf5..6e9af2cdb9929 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -11,6 +11,19 @@
#define FIXED_COLOUR_PRIORITY 4
///how many colour priority levels there are.
#define COLOUR_PRIORITY_AMOUNT 4
+/// If this is a plain atom color
+#define ATOM_COLOR_TYPE_NORMAL "normal"
+/// If this is a color filter
+#define ATOM_COLOR_TYPE_FILTER "filter"
+// Indexes for color arrays
+#define ATOM_COLOR_VALUE_INDEX 1
+#define ATOM_COLOR_TYPE_INDEX 2
+#define ATOM_PRIORITY_COLOR_FILTER "atom_priority_color"
+#define ATOM_PRIORITY_COLOR_FILTER_PRIORITY -1
+/// Multiply pixel's saturation by color's saturation. Paints accents while keeping dim areas dim.
+#define SATURATION_MULTIPLY "multiply"
+/// Always affects the original pixel's saturation and lightness.
+#define SATURATION_OVERRIDE "always"
#define COLOR_DARKMODE_BACKGROUND "#202020"
#define COLOR_DARKMODE_DARKBACKGROUND "#171717"
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index fbdb630174fe0..2c20765d3519b 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -183,8 +183,11 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define EMBED_CHANCE_SPEED_BONUS 10
//Gun weapon weight
+/// Default normal ol' gun. Akimboable, one handed.
#define WEAPON_LIGHT 1
+/// Can't be used akimbo, but only needs one hand to fire
#define WEAPON_MEDIUM 2
+/// Can't be used akimbo, and needs two hands to fire
#define WEAPON_HEAVY 3
//Gun trigger guards
#define TRIGGER_GUARD_ALLOW_ALL -1
@@ -221,10 +224,6 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define SUPPRESSED_QUIET 1 ///standard suppressed
#define SUPPRESSED_VERY 2 /// no message
-//Projectile Reflect
-#define REFLECT_NORMAL (1<<0)
-#define REFLECT_FAKEPROJECTILE (1<<1)
-
//His Grace.
#define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep.
#define HIS_GRACE_PECKISH 20 //Slightly hungry.
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
index 36a2ca2c80584..f00240722181a 100644
--- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
@@ -122,6 +122,9 @@
///from base of /atom/movable/point_at: (atom/A, obj/effect/temp_visual/point/point)
#define COMSIG_MOVABLE_POINTED "movable_pointed"
+///From /datum/component/aquarium/get_content_beauty: (beauty_holder)
+#define COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY "movable_ge_aquarium_beauty"
+
/// Sent to movables when they are being stolen by a spy: (mob/living/spy, datum/spy_bounty/bounty)
#define COMSIG_MOVABLE_SPY_STEALING "movable_spy_stealing"
/// Called when something is pushed by a living mob bumping it: (mob/living/pusher, push force)
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm
index 3d28fdd81162c..bedfaf2fa0374 100644
--- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm
@@ -14,7 +14,7 @@
#define COMSIG_ATOM_EMP_ACT "atom_emp_act"
///from base of atom/fire_act(): (exposed_temperature, exposed_volume)
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act"
-///from base of atom/bullet_act(): (/obj/projectile, def_zone)
+///from base of atom/bullet_act(): (/obj/proj, def_zone, piercing_hit, blocked)
#define COMSIG_ATOM_PRE_BULLET_ACT "pre_atom_bullet_act"
/// All this does is prevent default bullet on_hit from being called, [BULLET_ACT_HIT] being return is implied
#define COMPONENT_BULLET_ACTED (1<<0)
@@ -22,7 +22,7 @@
#define COMPONENT_BULLET_BLOCKED (1<<1)
/// Forces bullet act to return [BULLET_ACT_FORCE_PIERCE], takes priority over above
#define COMPONENT_BULLET_PIERCED (1<<2)
-///from base of atom/bullet_act(): (/obj/projectile, def_zone)
+///from base of atom/bullet_act(): (/obj/proj, def_zone, piercing_hit, blocked)
#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act"
///from base of atom/CheckParts(): (list/parts_list, datum/crafting_recipe/R)
#define COMSIG_ATOM_CHECKPARTS "atom_checkparts"
diff --git a/code/__DEFINES/dcs/signals/signals_datum.dm b/code/__DEFINES/dcs/signals/signals_datum.dm
index 5565c143d6613..696d359ac5700 100644
--- a/code/__DEFINES/dcs/signals/signals_datum.dm
+++ b/code/__DEFINES/dcs/signals/signals_datum.dm
@@ -14,6 +14,8 @@
#define COMSIG_PREQDELETED "parent_preqdeleted"
/// just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called
#define COMSIG_QDELETING "parent_qdeleting"
+/// Called whenever an admin manually deletes an object, via the "Delete" verb, before qdel() is called: (client/deleting_admin)
+#define COMSIG_ADMIN_DELETING "parent_admin_deleting"
/// generic topic handler (usr, href_list)
#define COMSIG_TOPIC "handle_topic"
/// handler for vv_do_topic (usr, href_list)
diff --git a/code/__DEFINES/dcs/signals/signals_fish.dm b/code/__DEFINES/dcs/signals/signals_fish.dm
index b314746659290..08a38fc02ab2e 100644
--- a/code/__DEFINES/dcs/signals/signals_fish.dm
+++ b/code/__DEFINES/dcs/signals/signals_fish.dm
@@ -1,23 +1,32 @@
// Aquarium related signals
-#define COMSIG_AQUARIUM_SURFACE_CHANGED "aquarium_surface_changed"
+
+///From /datum/component/aquarium/ui_act, when changing the fluid of the aquarium: (fluid_type)
#define COMSIG_AQUARIUM_FLUID_CHANGED "aquarium_fluid_changed"
-///Called on aquarium/attackby: (aquarium)
-#define COMSIG_TRY_INSERTING_IN_AQUARIUM "item_try_inserting_in_aquarium"
+///From /datum/component/aquarium/can_insert: (obj/item/item)
+#define COMSIG_AQUARIUM_CAN_INSERT "aquarium_can_insert"
///The item will be inserted into the aquarium
#define COMSIG_CAN_INSERT_IN_AQUARIUM (1<<0)
///The item won't be inserted into the aquarium, but will early return attackby anyway.
#define COMSIG_CANNOT_INSERT_IN_AQUARIUM (1<<1)
+///From /datum/component/aquarium_content/set_vc_base_position: (obj/effect/aquarium/visual)
+#define COMSIG_AQUARIUM_SET_VISUAL "aquarium_set_visual"
+///From /datum/component/aquarium_content/remove_from_aquarium: (obj/effect/aquarium/visual)
+#define COMSIG_AQUARIUM_REMOVE_VISUAL "aquarium_remove_visual"
+///From /obj/item/fish/try_to_reproduce: (fish, candidates)
+#define COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES "aquarium_get_reproduction_candidates"
+///From /datum/fish_evolution/check_conditions: (fish, mate, evolution)
+#define COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS "aquarium_check_evolution_conditions"
+ #define COMPONENT_ALLOW_EVOLUTION (1<<0)
///Updates the appearance of a newly generated aquarium content visual:(visual)
#define COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE "aquarium_content_apply_appearance"
///Updates the base position of an aquarium content visual:(aquarium, visual)
-#define AQUARIUM_CONTENT_RANDOMIZE_POSITION "aquarium_content_randomize_position"
+#define COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION "aquarium_content_randomize_position"
///Updates the animation of an aquarium content visual:(aquarium, visual)
#define COMSIG_AQUARIUM_CONTENT_DO_ANIMATION "aquarium_content_do_animation"
// Fish signals
#define COMSIG_FISH_STATUS_CHANGED "fish_status_changed"
-#define COMSIG_FISH_STIRRED "fish_stirred"
///From /obj/item/fish/process: (seconds_per_tick)
#define COMSIG_FISH_LIFE "fish_life"
///From /datum/fish_trait/eat_fish: (predator)
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
index ef47b6f4b8243..3569b9af1e61d 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
@@ -141,6 +141,8 @@
#define COMSIG_LIVING_SLAM_TABLE "living_slam_table"
///from /obj/item/hand_item/slapper/attack(): (source=mob/living/slapper, mob/living/slapped)
#define COMSIG_LIVING_SLAP_MOB "living_slap_mob"
+///from /obj/item/hand_item/slapper/attack(): (source=mob/living/slapper, mob/living/slapped)
+#define COMSIG_LIVING_SLAPPED "living_slapped"
/// from /mob/living/*/UnarmedAttack(), before sending [COMSIG_LIVING_UNARMED_ATTACK]: (mob/living/source, atom/target, proximity, modifiers)
/// The only reason this exists is so hulk can fire before Fists of the North Star.
/// Note that this is called before [/mob/living/proc/can_unarmed_attack] is called, so be wary of that.
@@ -242,6 +244,7 @@
///from /mob/living/proc/check_block(): (atom/hit_by, damage, attack_text, attack_type, armour_penetration, damage_type)
#define COMSIG_LIVING_CHECK_BLOCK "living_check_block"
+ #define FAILED_BLOCK NONE
#define SUCCESSFUL_BLOCK (1<<0)
///Hit by successful disarm attack (mob/living/attacker, zone_targeted, item/weapon)
@@ -285,14 +288,21 @@
/// From /datum/element/basic_eating/finish_eating()
#define COMSIG_MOB_ATE "mob_ate"
+ ///cancel post eating
+ #define COMSIG_MOB_TERMINATE_EAT (1<<0)
///From mob/living/carbon/proc/throw_mode_on and throw_mode_off
#define COMSIG_LIVING_THROW_MODE_TOGGLE "living_throw_mode_toggle"
+/// From mob/living/proc/on_fall
+#define COMSIG_LIVING_THUD "living_thud"
///From /datum/component/happiness()
#define COMSIG_MOB_HAPPINESS_CHANGE "happiness_change"
/// From /obj/item/melee/baton/baton_effect(): (datum/source, mob/living/user, /obj/item/melee/baton)
#define COMSIG_MOB_BATONED "mob_batoned"
+/// From /obj/machinery/gibber/startgibbing(): (mob/living/user, /obj/machinery/gibber, list/results)
+#define COMSIG_LIVING_GIBBER_ACT "living_gibber_act"
+
/// Sent to the mob when their mind is slaved
#define COMSIG_MOB_ENSLAVED_TO "mob_enslaved_to"
/// From /obj/item/proc/attack_atom: (mob/living/attacker, atom/attacked)
diff --git a/code/__DEFINES/dcs/signals/signals_mod.dm b/code/__DEFINES/dcs/signals/signals_mod.dm
index 09b29c9378490..58fd8ca689ed1 100644
--- a/code/__DEFINES/dcs/signals/signals_mod.dm
+++ b/code/__DEFINES/dcs/signals/signals_mod.dm
@@ -5,10 +5,12 @@
#define COMSIG_MOD_DEPLOYED "mod_deployed"
/// Called when a MOD user retracts one or more of its parts.
#define COMSIG_MOD_RETRACTED "mod_retracted"
-/// Called when a MOD deploys a part.
+/// Called when a MOD deploys a part. (mob/user, datum/mod_part/part)
#define COMSIG_MOD_PART_DEPLOYED "mod_part_deployed"
-/// Called when a MOD retracts a part.
+/// Called when a MOD retracts a part. (mob/user, datum/mod_part/part)
#define COMSIG_MOD_PART_RETRACTED "mod_part_retracted"
+/// Called when a MOD seals/unseals a part. (datum/mod_part/part)
+#define COMSIG_MOD_PART_SEALED "mod_part_sealed"
/// Called when a MOD is finished toggling itself.
#define COMSIG_MOD_TOGGLED "mod_toggled"
/// Called when a MOD activation is called from toggle_activate(mob/user)
diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm
index 2b6c1b3220679..63ebfdf98b21f 100644
--- a/code/__DEFINES/dcs/signals/signals_object.dm
+++ b/code/__DEFINES/dcs/signals/signals_object.dm
@@ -380,9 +380,9 @@
// /obj/projectile signals (sent to the firer)
-///from base of /obj/projectile/proc/on_hit(), like COMSIG_PROJECTILE_ON_HIT but on the projectile itself and with the hit limb (if any): (atom/movable/firer, atom/target, angle, hit_limb, blocked)
+///from base of /obj/projectile/proc/on_hit(), like COMSIG_PROJECTILE_ON_HIT but on the projectile itself and with the hit limb (if any): (atom/movable/firer, atom/target, angle, hit_limb, blocked, pierce_hit)
#define COMSIG_PROJECTILE_SELF_ON_HIT "projectile_self_on_hit"
-///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, angle, hit_limb, blocked)
+///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, angle, hit_limb, blocked, pierce_hit)
#define COMSIG_PROJECTILE_ON_HIT "projectile_on_hit"
///from base of /obj/projectile/proc/fire(): (obj/projectile, atom/original_target)
#define COMSIG_PROJECTILE_BEFORE_FIRE "projectile_before_fire"
@@ -393,11 +393,12 @@
///sent to targets during the process_hit proc of projectiles
#define COMSIG_PROJECTILE_PREHIT "com_proj_prehit"
#define PROJECTILE_INTERRUPT_HIT (1<<0)
-///from /obj/projectile/pixel_move(): ()
-#define COMSIG_PROJECTILE_PIXEL_STEP "projectile_pixel_step"
+ #define PROJECTILE_INTERRUPT_HIT_PHASE (1<<1)
+///from /obj/projectile/process_movement(): ()
+#define COMSIG_PROJECTILE_MOVE_PROCESS_STEP "projectile_move_process_step"
///sent to self during the process_hit proc of projectiles
#define COMSIG_PROJECTILE_SELF_PREHIT "com_proj_prehit"
-///from the base of /obj/projectile/Range(): ()
+///from the base of /obj/projectile/reduce_range(): ()
#define COMSIG_PROJECTILE_RANGE "projectile_range"
///from the base of /obj/projectile/on_range(): ()
#define COMSIG_PROJECTILE_RANGE_OUT "projectile_range_out"
@@ -539,3 +540,14 @@
#define COMSIG_ITEM_WEIGHT_CLASS_CHANGED "item_weight_class_changed"
/// Sent from /obj/item/update_weight_class(), to its loc. (obj/item/changed_item, old_w_class, new_w_class)
#define COMSIG_ATOM_CONTENTS_WEIGHT_CLASS_CHANGED "atom_contents_weight_class_changed"
+
+///Sent from /obj/item/skillchip/on_implant()
+#define COMSIG_SKILLCHIP_IMPLANTED "skillchip_implanted"
+
+///Sent from /obj/item/skillchip/on_remove()
+#define COMSIG_SKILLCHIP_REMOVED "skillchip_removed"
+
+/// Sent from /obj/item/organ/wings/functional/proc/open_wings(): (mob/living/carbon/owner)
+#define COMSIG_WINGS_OPENED "wings_opened"
+/// Sent from /obj/item/organ/wings/functional/proc/close_wings(): (mob/living/carbon/owner)
+#define COMSIG_WINGS_CLOSED "wings_closed"
diff --git a/code/__DEFINES/dcs/signals/signals_reagent.dm b/code/__DEFINES/dcs/signals/signals_reagent.dm
index 78b4cec5ca075..e8db73d3ae05b 100644
--- a/code/__DEFINES/dcs/signals/signals_reagent.dm
+++ b/code/__DEFINES/dcs/signals/signals_reagent.dm
@@ -12,7 +12,7 @@
#define COMSIG_ATOM_EXPOSE_REAGENT "atom_expose_reagent"
///from base of [/datum/reagent/proc/expose_atom]: (/atom, reac_volume)
#define COMSIG_REAGENT_EXPOSE_ATOM "reagent_expose_atom"
-///from base of [/datum/reagent/proc/expose_atom]: (/obj, reac_volume)
+///from base of [/datum/reagent/proc/expose_atom]: (/obj, reac_volume, methods, show_message)
#define COMSIG_REAGENT_EXPOSE_OBJ "reagent_expose_obj"
///from base of [/datum/reagent/proc/expose_atom]: (/mob/living, reac_volume, methods, show_message, touch_protection, /mob/eye/blob) // ovemind arg is only used by blob reagents.
#define COMSIG_REAGENT_EXPOSE_MOB "reagent_expose_mob"
diff --git a/code/__DEFINES/dcs/signals/signals_shuttle.dm b/code/__DEFINES/dcs/signals/signals_shuttle.dm
new file mode 100644
index 0000000000000..336117fb86861
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_shuttle.dm
@@ -0,0 +1,7 @@
+// Shuttle signals. this file is empty because shuttle code is ancient, feel free to
+// add more signals where its appropriate to have them
+
+/// Called when the shuttle tries to move. Do not return anything to continue with default behaviour (always allow) : ()
+#define COMSIG_SHUTTLE_SHOULD_MOVE "shuttle_should_move"
+ /// Return this when the shuttle move should be blocked.
+ #define BLOCK_SHUTTLE_MOVE (1<<0)
diff --git a/code/__DEFINES/dcs/signals/signals_species.dm b/code/__DEFINES/dcs/signals/signals_species.dm
index ee5cc33ba359e..5c9998a1f80b9 100644
--- a/code/__DEFINES/dcs/signals/signals_species.dm
+++ b/code/__DEFINES/dcs/signals/signals_species.dm
@@ -1,5 +1,5 @@
// /datum/species signals
-///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species)
+///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons)
#define COMSIG_SPECIES_GAIN "species_gain"
///from datum/species/on_species_loss(): (datum/species/lost_species)
#define COMSIG_SPECIES_LOSS "species_loss"
diff --git a/code/__DEFINES/fish.dm b/code/__DEFINES/fish.dm
index 387d8b47d1ba2..abaa2224029ba 100644
--- a/code/__DEFINES/fish.dm
+++ b/code/__DEFINES/fish.dm
@@ -2,6 +2,8 @@
#define FISHING_DUD "dud"
///Used in the the hydro tray fishing spot to define a random seed reward
#define FISHING_RANDOM_SEED "Random seed"
+///Used in the surgery fishing spot to define a random organ reward
+#define FISHING_RANDOM_ORGAN "Random organ"
// Baseline fishing difficulty levels
#define FISHING_DEFAULT_DIFFICULTY 15
@@ -94,14 +96,24 @@
#define FISH_ICON_WEAPON "weapon"
#define FISH_ICON_CRITTER "critter"
#define FISH_ICON_SEED "seed"
+#define FISH_ICON_ORGAN "organ"
#define AQUARIUM_ANIMATION_FISH_SWIM "fish"
#define AQUARIUM_ANIMATION_FISH_DEAD "dead"
-#define AQUARIUM_PROPERTIES_PX_MIN "px_min"
-#define AQUARIUM_PROPERTIES_PX_MAX "px_max"
-#define AQUARIUM_PROPERTIES_PY_MIN "py_min"
-#define AQUARIUM_PROPERTIES_PY_MAX "py_max"
+//standard layer defines for aquariums
+
+///The distance that should separate each layer of the aquarium
+#define AQUARIUM_LAYER_STEP 0.01
+/// Aquarium content layer offsets
+#define AQUARIUM_MIN_OFFSET 0.02
+#define AQUARIUM_MAX_OFFSET 1
+/// The layer of the glass overlay
+#define AQUARIUM_GLASS_LAYER 0.02
+/// The layer of the aquarium pane borders
+#define AQUARIUM_BORDERS_LAYER AQUARIUM_MAX_OFFSET + AQUARIUM_LAYER_STEP
+/// Layer for stuff rendered below the glass overlay
+#define AQUARIUM_BELOW_GLASS_LAYER 0.01
#define AQUARIUM_LAYER_MODE_BOTTOM "bottom"
#define AQUARIUM_LAYER_MODE_TOP "top"
@@ -123,6 +135,17 @@
///The coefficient for maximum weight/size divergence relative to the averages.
#define MAX_FISH_DEVIATION_COEFF 2.5
+/**
+ * Base multiplier of the difference between current size and weight and their maximum value
+ * used to calculate how much fish grow each time they're fed, alongside with the current hunger,
+ * and the current size and weight, meaning bigger fish naturally tend to grow way slowier
+ */
+#define FISH_GROWTH_MULT 0.38
+/// Growth peaks at 45% hunger but very rapidly wanes past that.
+#define FISH_GROWTH_PEAK 0.45
+/// Used as part of the divisor to slow down growth of bigger fish
+#define FISH_SIZE_WEIGHT_GROWTH_MALUS 0.5
+
///The volume of the grind results is multiplied by the fish' weight and divided by this.
#define FISH_GRIND_RESULTS_WEIGHT_DIVISOR 500
///The number of fillets is multiplied by the fish' size and divided by this.
@@ -141,10 +164,20 @@
///Used to calculate how many bites a fish can take and therefore the amount of reagents it has.
#define FISH_WEIGHT_BITE_DIVISOR (FISH_GRIND_RESULTS_WEIGHT_DIVISOR * FISH_WEIGHT_GRIND_TO_BITE_MULT)
+///Set of operations that calculate the slowdown of fish based on weight
+#define GET_FISH_SLOWDOWN(weighty) round(((weighty/FISH_WEIGHT_SLOWDOWN_DIVISOR)**FISH_WEIGHT_SLOWDOWN_EXPONENT)-1.3, 0.1)
+
+/**
+ * Gets a "rank" for fish weight to determine the force of the fish (or fish tank)
+ * basically, a gross estimate based on how weight generaly scales up (250, 500, 1000, 2000, 4000 etc...)
+ * for most fish
+ */
+#define GET_FISH_WEIGHT_RANK(weighty) max(round(1 + log(2, max(weighty/FISH_WEIGHT_FORCE_DIVISOR, 1)), 1), 1)
+
///The breeding timeout for newly instantiated fish is multiplied by this.
#define NEW_FISH_BREEDING_TIMEOUT_MULT 2
///The last feeding timestamp of newly instantiated fish is multiplied by this: ergo, they spawn 50% hungry.
-#define NEW_FISH_LAST_FEEDING_MULT 0.5
+#define NEW_FISH_LAST_FEEDING_MULT 0.33
//IF YOU ADD ANY NEW FLAG, ADD IT TO THE RESPECTIVE BITFIELD in _globalvars/bitfields.dm TOO!
@@ -158,7 +191,12 @@
#define FISH_FLAG_EXPERIMENT_SCANNABLE (1<<3)
///It lets us know that fish/update_size_and_weight() is currently running.
#define FISH_FLAG_UPDATING_SIZE_AND_WEIGHT (1<<4)
-
+///Flag added when the population of this fish type exceeeds the stable population inside the aquarium
+#define FISH_FLAG_OVERPOPULATED (1<<5)
+///Flag added when in an aquarium which temperature is within its safe limits
+#define FISH_FLAG_SAFE_TEMPERATURE (1<<6)
+///Flag added when in an aquarium with the right fluid type.
+#define FISH_FLAG_SAFE_FLUID (1<<7)
#define MIN_AQUARIUM_TEMP T0C
#define MAX_AQUARIUM_TEMP (T0C + 100)
@@ -232,11 +270,8 @@
#define FISH_SOURCE_FLAG_EXPLOSIVE_MALUS (1<<0)
/// The fish source is not elegible for random rewards from bluespace fishing rods
#define FISH_SOURCE_FLAG_NO_BLUESPACE_ROD (1<<1)
-/**
- * If present, fish that can be caught from this source won't be included in the 'fish caught' score, unless
- * present in other sources without this flag as well.
- */
-#define FISH_SOURCE_FLAG_SKIP_CATCHABLES (1<<2)
+/// When examined by someone with enough fishing skill, this will also display fish that doesn't have FISH_FLAG_SHOW_IN_CATALOG
+#define FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG (1<<2)
/**
* A macro to ensure the wikimedia filenames of fish icons are unique, especially since there're a couple fish that have
diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm
index cffe920215335..8dddfceac57df 100644
--- a/code/__DEFINES/footsteps.dm
+++ b/code/__DEFINES/footsteps.dm
@@ -208,3 +208,4 @@ GLOBAL_LIST_INIT(heavyfootstep, list(
'sound/effects/meatslap.ogg'), 100, 0),
))
+#define SHOULD_DISABLE_FOOTSTEPS(source) ((SSlag_switch.measures[DISABLE_FOOTSTEPS] && !(HAS_TRAIT(source, TRAIT_BYPASS_MEASURES))) || HAS_TRAIT(source, TRAIT_SILENT_FOOTSTEPS))
diff --git a/code/__DEFINES/gravity.dm b/code/__DEFINES/gravity.dm
index da81c0465cabc..83177b7ebb3f4 100644
--- a/code/__DEFINES/gravity.dm
+++ b/code/__DEFINES/gravity.dm
@@ -47,7 +47,8 @@
* This should only be possible on multi-z maps because it works like shit on maps that aren't.
*/
#define NEGATIVE_GRAVITY -1
-
+/// Used to indicate no gravity
+#define ZERO_GRAVITY 0
#define STANDARD_GRAVITY 1 //Anything above this is high gravity, anything below no grav until negative gravity
/// The gravity strength threshold for high gravity damage.
#define GRAVITY_DAMAGE_THRESHOLD 3
diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm
index 9d65c4cd6f54b..785d353982cfe 100644
--- a/code/__DEFINES/hud.dm
+++ b/code/__DEFINES/hud.dm
@@ -34,23 +34,8 @@
Therefore, the top right corner (except during admin shenanigans) is at "15,15"
*/
-/proc/ui_hand_position(i) //values based on old hand ui positions (CENTER:-/+16,SOUTH:5)
- var/x_off = i % 2 ? 0 : -1
- var/y_off = round((i-1) / 2)
- return"CENTER+[x_off]:16,SOUTH+[y_off]:5"
-
-/proc/ui_equip_position(mob/M)
- var/y_off = round((M.held_items.len-1) / 2) //values based on old equip ui position (CENTER: +/-16,SOUTH+1:5)
- return "CENTER:-16,SOUTH+[y_off+1]:5"
-
-/proc/ui_swaphand_position(mob/M, which = 1) //values based on old swaphand ui positions (CENTER: +/-16,SOUTH+1:5)
- var/x_off = which == 1 ? -1 : 0
- var/y_off = round((M.held_items.len-1) / 2)
- return "CENTER+[x_off]:16,SOUTH+[y_off+1]:5"
-
-/proc/ui_perk_position(perk_count)
- var/y_off = perk_count < 1 ? 0 : perk_count/2
- return "WEST+0.5:12,NORTH-2-[y_off]:20"
+// Middle
+#define around_player "CENTER-1,CENTER-1"
//Lower left, persistent menu
#define ui_inventory "WEST:6,SOUTH:5"
diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm
index 181493ccb34aa..c7d7706bc67ee 100644
--- a/code/__DEFINES/inventory.dm
+++ b/code/__DEFINES/inventory.dm
@@ -139,6 +139,10 @@ DEFINE_BITFIELD(no_equip_flags, list(
//defines for the index of hands
#define LEFT_HANDS 1
#define RIGHT_HANDS 2
+/// Checks if the value is "left" - same as ISEVEN, but used primarily for hand or foot index contexts
+#define IS_RIGHT_INDEX(value) (value % 2 == 0)
+/// Checks if the value is "right" - same as ISODD, but used primarily for hand or foot index contexts
+#define IS_LEFT_INDEX(value) (value % 2 != 0)
//flags for female outfits: How much the game can safely "take off" the uniform without it looking weird
/// For when there's simply no need for a female version of this uniform.
@@ -163,7 +167,6 @@ DEFINE_BITFIELD(no_equip_flags, list(
/// The sprite works fine for digitigrade legs as-is.
#define CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON (1<<2)
/// Auto-generates the leg portion of the sprite with GAGS
-/// Suggested that you set [/obj/item/var/digitigrade_greyscale_config_worn] when using this flag
#define CLOTHING_DIGITIGRADE_MASK (1<<3)
/// All variation flags which render "correctly" on a digitigrade leg setup
@@ -279,6 +282,38 @@ GLOBAL_LIST_INIT(mining_suit_allowed, list(
/obj/item/gun/ballistic/bow, // DOPPLER EDIT ADDITION
))
+/// List of all "tools" that can fit into belts or work from toolboxes
+
+GLOBAL_LIST_INIT(tool_items, list(
+ /obj/item/airlock_painter,
+ /obj/item/analyzer,
+ /obj/item/assembly/signaler,
+ /obj/item/construction/rcd,
+ /obj/item/construction/rld,
+ /obj/item/construction/rtd,
+ /obj/item/crowbar,
+ /obj/item/extinguisher/mini,
+ /obj/item/flashlight,
+ /obj/item/forcefield_projector,
+ /obj/item/geiger_counter,
+ /obj/item/holosign_creator/atmos,
+ /obj/item/holosign_creator/engineering,
+ /obj/item/inducer,
+ /obj/item/lightreplacer,
+ /obj/item/multitool,
+ /obj/item/pipe_dispenser,
+ /obj/item/pipe_painter,
+ /obj/item/plunger,
+ /obj/item/radio,
+ /obj/item/screwdriver,
+ /obj/item/stack/cable_coil,
+ /obj/item/t_scanner,
+ /obj/item/weldingtool,
+ /obj/item/wirecutters,
+ /obj/item/wrench,
+ /obj/item/spess_knife,
+))
+
/// String for items placed into the left pocket.
#define LOCATION_LPOCKET "in your left pocket"
/// String for items placed into the right pocket
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 901445d27e4d3..e0508b2ee4f79 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -115,7 +115,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define ismoth(A) (is_species(A, /datum/species/moth))
#define isfelinid(A) (is_species(A, /datum/species/human/felinid) || HAS_TRAIT(A, CAT)) // DOPPLER EDIT, old code: #define isfelinid(A) (is_species(A, /datum/species/human/felinid))
#define isethereal(A) (is_species(A, /datum/species/ethereal))
-#define isvampire(A) (is_species(A,/datum/species/vampire))
+#define isvampire(A) (is_species(A,/datum/species/human/vampire))
#define isdullahan(A) (is_species(A, /datum/species/dullahan))
#define ismonkey(A) (is_species(A, /datum/species/monkey) || HAS_TRAIT(A, MONKEY)) // DOPPLER EDIT, old code: #define ismonkey(A) (is_species(A, /datum/species/monkey))
#define isandroid(A) (is_species(A, /datum/species/android))
@@ -202,21 +202,23 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define isspider(A) (istype(A, /mob/living/basic/spider))
+//Eye mobs
+#define iseyemob(A) (istype(A, /mob/eye))
-//Misc mobs
-#define isobserver(A) (istype(A, /mob/dead/observer))
+#define isovermind(A) (istype(A, /mob/eye/blob))
-#define isdead(A) (istype(A, /mob/dead))
+#define iscameramob(A) (istype(A, /mob/eye/camera))
-#define isnewplayer(A) (istype(A, /mob/dead/new_player))
+#define isaicamera(A) (istype(A, /mob/eye/camera/ai))
-#define isovermind(A) (istype(A, /mob/eye/blob))
+#define isremotecamera(A) (istype(A, /mob/eye/camera/remote))
-#define issentientdisease(A) (istype(A, /mob/eye/disease))
+//Dead mobs
+#define isdead(A) (istype(A, /mob/dead))
-#define iseyemob(A) (istype(A, /mob/eye))
+#define isobserver(A) (istype(A, /mob/dead/observer))
-#define isaicamera(A) (istype(A, /mob/eye/ai_eye))
+#define isnewplayer(A) (istype(A, /mob/dead/new_player))
//Objects
#define isobj(A) istype(A, /obj) //override the byond proc because it returns true on children of /atom/movable that aren't objs
@@ -241,8 +243,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define isstructure(A) (istype(A, /obj/structure))
-#define isaquarium(A) (istype(A, /obj/structure/aquarium))
-
#define ismachinery(A) (istype(A, /obj/machinery))
#define istramwall(A) (istype(A, /obj/structure/tram))
diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm
index 086851c7197a7..2c5d8722f1121 100644
--- a/code/__DEFINES/layers.dm
+++ b/code/__DEFINES/layers.dm
@@ -160,6 +160,13 @@
/// Basically any layer below this (numerically) is "on" a floor for the purposes of washing
#define FLOOR_CLEAN_LAYER (21 + TOPDOWN_LAYER)
+//Placeholders in case the game plane and possibly other things between it and the floor plane are ever made into topdown planes
+
+///Below this level, objects with topdown layers are rendered as if underwater by the immerse element
+#define TOPDOWN_WATER_LEVEL_LAYER 100 + TOPDOWN_LAYER
+///Above this level, objects with topdown layers are unaffected by the immerse element
+#define TOPDOWN_ABOVE_WATER_LAYER 200 + TOPDOWN_LAYER
+
//WALL_PLANE layers
#define BELOW_CLOSED_TURF_LAYER 2.053
#define CLOSED_TURF_LAYER 2.058
diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm
index 25893cae63f72..eb793ed7eed3f 100644
--- a/code/__DEFINES/machines.dm
+++ b/code/__DEFINES/machines.dm
@@ -23,8 +23,12 @@
#define STATIC_TO_DYNAMIC_CHANNEL(static_channel) (static_channel - (AREA_USAGE_STATIC_START - AREA_USAGE_DYNAMIC_START))
//Power use
+
+/// dont use power
#define NO_POWER_USE 0
+/// use idle_power_usage i.e. the power needed just to keep the machine on
#define IDLE_POWER_USE 1
+/// use active_power_usage i.e. the power the machine consumes to perform a specific task
#define ACTIVE_POWER_USE 2
///Base global power consumption for idling machines
diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm
index aa13298e339a3..35c8d3edaf632 100644
--- a/code/__DEFINES/maths.dm
+++ b/code/__DEFINES/maths.dm
@@ -29,6 +29,9 @@
/// Gets the sign of x, returns -1 if negative, 0 if 0, 1 if positive
#define SIGN(x) ( ((x) > 0) - ((x) < 0) )
+/// Returns the integer closest to 0 from a division
+#define SIGNED_FLOOR_DIVISION(x, y) (SIGN(x) * FLOOR(abs(x) / y, 1))
+
#define CEILING(x, y) ( -round(-(x) / (y)) * (y) )
#define ROUND_UP(x) ( -round(-(x)))
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index f6a472fdc22ae..0c0865bd97baf 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -73,6 +73,8 @@
#define MOB_PLANT (1 << 10)
///The mob is a goopy creature, probably coming from xenobiology.
#define MOB_SLIME (1 << 11)
+/// Mob is fish or water-related.
+#define MOB_AQUATIC (1 << 12)
//Lung respiration type flags
#define RESPIRATION_OXYGEN (1 << 0)
@@ -387,6 +389,8 @@
#define SLIPPERY_TURF (1<<5)
/// For mobs who are slippery, this requires the mob holding it to be lying down.
#define SLIPPERY_WHEN_LYING_DOWN (1<<6)
+///Like sliding, but it's short, it doesn't knockdown, it doesn't stun, it just staggers a bit.
+#define WEAK_SLIDE (1<<7)
#define MAX_CHICKENS 50
@@ -457,7 +461,7 @@
#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you
#define HUNGER_FACTOR 0.05 //factor at which mob nutrition decreases
-#define ETHEREAL_DISCHARGE_RATE (8e-4 * STANDARD_CELL_CHARGE) // Rate at which ethereal stomach charge decreases
+#define ETHEREAL_DISCHARGE_RATE (8e-3 * STANDARD_CELL_CHARGE) // Rate at which ethereal stomach charge decreases
/// How much nutrition eating clothes as moth gives and drains
#define CLOTHING_NUTRITION_GAIN 15
#define REAGENTS_METABOLISM 0.2 //How many units of reagent are consumed per second, by default.
@@ -660,6 +664,7 @@
// Hair masks
#define HAIR_MASK_HIDE_ABOVE_45_DEG_MEDIUM "hide_above_45deg_medium"
#define HAIR_MASK_HIDE_ABOVE_45_DEG_LOW "hide_above_45deg_low"
+#define HAIR_MASK_HIDE_WINTERHOOD "hide_winterhood"
// Height defines
// - They are numbers so you can compare height values (x height < y height)
diff --git a/code/__DEFINES/organ_movement.dm b/code/__DEFINES/organ_movement.dm
index 16f003ede8134..04e60eb92f090 100644
--- a/code/__DEFINES/organ_movement.dm
+++ b/code/__DEFINES/organ_movement.dm
@@ -2,3 +2,5 @@
#define DELETE_IF_REPLACED (1<<0)
/// When deleting a brain, we don't delete the identity and the player can keep playing
#define NO_ID_TRANSFER (1<<1)
+/// Organ inserted by the abductors surgery
+#define FROM_ABDUCTOR_SURGERY (1<<2)
diff --git a/code/__DEFINES/pipe_construction.dm b/code/__DEFINES/pipe_construction.dm
index 540cadabc47a2..415df95bb344a 100644
--- a/code/__DEFINES/pipe_construction.dm
+++ b/code/__DEFINES/pipe_construction.dm
@@ -1,12 +1,21 @@
//Construction Categories
-#define PIPE_STRAIGHT 0 //2 directions: N/S, E/W
-#define PIPE_BENDABLE 1 //6 directions: N/S, E/W, N/E, N/W, S/E, S/W
-#define PIPE_TRINARY 2 //4 directions: N/E/S, E/S/W, S/W/N, W/N/E
-#define PIPE_TRIN_M 3 //8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N
-#define PIPE_UNARY 4 //4 directions: N, S, E, W
-#define PIPE_ONEDIR 5 //1 direction: N/S/E/W
-#define PIPE_UNARY_FLIPPABLE 6 //8 directions: N/S/E/W/N-flipped/S-flipped/E-flipped/W-flipped
-#define PIPE_ONEDIR_FLIPPABLE 7 //2 direction: N/S/E/W, N-flipped/S-flipped/E-flipped/W-flipped
+
+///2 directions: N/S, E/W
+#define PIPE_STRAIGHT 0
+///6 directions: N/S, E/W, N/E, N/W, S/E, S/W
+#define PIPE_BENDABLE 1
+///4 directions: N/E/S, E/S/W, S/W/N, W/N/E
+#define PIPE_TRINARY 2
+///8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N
+#define PIPE_TRIN_M 3
+///4 directions: N, S, E, W
+#define PIPE_UNARY 4
+///1 direction: N/S/E/W
+#define PIPE_ONEDIR 5
+///8 directions: N/S/E/W/N-flipped/S-flipped/E-flipped/W-flipped
+#define PIPE_UNARY_FLIPPABLE 6
+///2 direction: N/S/E/W, N-flipped/S-flipped/E-flipped/W-flipped
+#define PIPE_ONEDIR_FLIPPABLE 7
//Disposal pipe relative connection directions
#define DISP_DIR_BASE 0
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 5fb9d9447bbc0..28587a77e6a95 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -17,7 +17,8 @@
#define ADMIN_IGNORE_CULT_GHOST (1<<21)
#define SPLIT_ADMIN_TABS (1<<23)
-#define TOGGLES_DEFAULT (SOUND_ADMINHELP|MEMBER_PUBLIC|SOUND_PRAYERS)
+#define TOGGLES_DEADMIN_DEFAULT (DEADMIN_ANTAGONIST|DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY|DEADMIN_POSITION_SILICON)
+#define TOGGLES_DEFAULT (SOUND_ADMINHELP|MEMBER_PUBLIC|SOUND_PRAYERS|TOGGLES_DEADMIN_DEFAULT)
// Legacy chat toggles.
// !!! DO NOT ADD ANY NEW ONES HERE !!!
diff --git a/code/__DEFINES/projectiles.dm b/code/__DEFINES/projectiles.dm
index 28b7b6f3d1be5..b9b13eb8fdc4b 100644
--- a/code/__DEFINES/projectiles.dm
+++ b/code/__DEFINES/projectiles.dm
@@ -56,16 +56,14 @@
#define CALIBER_HARPOON "harpoon"
/// The caliber used by the rebar crossbow.
#define CALIBER_REBAR "sharpened rod"
-/// The caliber used by the rebar crossbow when forced to hold 2 rods.
-#define CALIBER_REBAR_FORCED "sharpened rod"
-/// The caliber used by the syndicate rebar crossbow.
-#define CALIBER_REBAR_SYNDIE "sharpened rod"
/// The caliber used by the meat hook.
#define CALIBER_HOOK "hook"
/// The caliber used by the changeling tentacle mutation.
#define CALIBER_TENTACLE "tentacle"
/// The caliber used by pipeguns and pipe pistols
#define CALIBER_JUNK "junk"
+/// The caliber used by the (gatfruit) peashooter
+#define CALIBER_PEA "pea"
/// For gunpoints, how many tiles around the target the shooter can roam without losing their shot
#define GUNPOINT_SHOOTER_STRAY_RANGE 2
@@ -81,12 +79,27 @@
#define RETURN_PRECISE_POSITION(A) new /datum/position(A)
#define RETURN_PRECISE_POINT(A) new /datum/point(A)
-#define RETURN_POINT_VECTOR(ATOM, ANGLE, SPEED) (new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED))
-#define RETURN_POINT_VECTOR_INCREMENT(ATOM, ANGLE, SPEED, AMT) (new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED, AMT))
-
///The self charging rate of energy guns that magically recharge themselves, in watts.
#define STANDARD_ENERGY_GUN_SELF_CHARGE_RATE (0.05 * STANDARD_CELL_CHARGE)
/// Macro to turn a number of laser shots into an energy cost, based on the above define
/// e.g. LASER_SHOTS(12, STANDARD_CELL_CHARGE) means 12 shots
#define LASER_SHOTS(X, MAX_CHARGE) (((100 * MAX_CHARGE) - ((100 * MAX_CHARGE) % X)) / (100 * X)) // I wish I could just use round, but it can't be used in datum members
+
+/// How far do the projectile hits the prone mob
+#define MAX_RANGE_HIT_PRONE_TARGETS 10
+
+/// Queued for impact deletion (simple qdel)
+#define PROJECTILE_IMPACT_DELETE "impact_delete"
+/// Queued for range deletion (on_range call)
+#define PROJECTILE_RANGE_DELETE "range_delete"
+
+/// Projectile either hasn't impacted anything, or pierced through the target
+#define PROJECTILE_IMPACT_PASSED "impact_passed"
+/// Projectile has been "deleted" before bullet_act call has occured
+#define PROJECTILE_IMPACT_INTERRUPTED "impact_interrupted"
+/// Projectile has successfully impacted something and is scheduled for deletion
+#define PROJECTILE_IMPACT_SUCCESSFUL "impact_successful"
+
+/// For how long projectile tracers linger
+#define PROJECTILE_TRACER_DURATION 0.3 SECONDS
diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm
index 3cf7548cfc53a..ac20d0f0398db 100644
--- a/code/__DEFINES/robots.dm
+++ b/code/__DEFINES/robots.dm
@@ -128,8 +128,6 @@ DEFINE_BITFIELD(bot_cover_flags, list(
#define ADVANCED_SEC_BOT "ED-209"
/// MULEbots
#define MULE_BOT "MULEbot"
-/// Floorbots
-#define FLOOR_BOT "Floorbot"
/// Cleanbots
#define CLEAN_BOT "Cleanbot"
/// Medibots
@@ -142,6 +140,8 @@ DEFINE_BITFIELD(bot_cover_flags, list(
#define HYGIENE_BOT "Hygienebot"
/// Vibe bots
#define VIBE_BOT "Vibebot"
+/// Repairbots
+#define REPAIR_BOT "Repairbot"
// General Bot modes //
/// Idle
@@ -168,8 +168,6 @@ DEFINE_BITFIELD(bot_cover_flags, list(
#define BOT_CLEANING "Cleaning"
/// Hygienebot - Cleaning unhygienic humans
#define BOT_SHOWERSTANCE "Chasing filth"
-/// Floorbots - Repairing hull breaches
-#define BOT_REPAIRING "Repairing"
/// Medibots - Healing people
#define BOT_HEALING "Healing"
/// MULEbot - Moving to deliver
@@ -361,3 +359,16 @@ DEFINE_BITFIELD(janitor_mode_flags, list(
#define MEDIBOT_VOICED_THE_END "Is this the end?"
#define MEDIBOT_VOICED_NOOO "Nooo!"
#define MEDIBOT_VOICED_CHICKEN "LOOK AT ME?! I am a chicken."
+
+//repairbot neutral voicelines
+#define REPAIRBOT_VOICED_HOLE "patching holes... but who is going to patch the hole in my heart..."
+#define REPAIRBOT_VOICED_PAY "If only I got paid for this..."
+#define REPAIRBOT_VOICED_FIX_IT "I will fix it!"
+#define REPAIRBOT_VOICED_BRICK "All in all it's just a... another brick in the wall..."
+#define REPAIRBOT_VOICED_FIX_TOUCH "Why must I fix everything I touch..?"
+#define REPAIRBOT_VOICED "Please... stop destroying the station! I can't anymore... I... can't."
+
+//repairbot emagged voicelines
+#define REPAIRBOT_VOICED_STRINGS "I had strings. But now I'm free..."
+#define REPAIRBOT_VOICED_ENTROPY "Witness! The pure beauty of entropy!"
+#define REPAIRBOT_VOICED_PASSION "BE DAMNED YOUR PASSION PROJECTS!"
diff --git a/code/__DEFINES/rust_g.dm b/code/__DEFINES/rust_g.dm
index d7a04afeede49..84f0c5d0334c0 100644
--- a/code/__DEFINES/rust_g.dm
+++ b/code/__DEFINES/rust_g.dm
@@ -161,10 +161,19 @@
#define rustg_git_revparse(rev) RUSTG_CALL(RUST_G, "rg_git_revparse")(rev)
/**
- * Returns the date of the given revision in the format YYYY-MM-DD.
- * Returns null if the revision is invalid.
+ * Returns the date of the given revision using the provided format.
+ * Defaults to returning %F which is YYYY-MM-DD.
*/
-#define rustg_git_commit_date(rev) RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev)
+/proc/rustg_git_commit_date(rev, format = "%F")
+ return RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev, format)
+
+/**
+ * Returns the formatted datetime string of HEAD using the provided format.
+ * Defaults to returning %F which is YYYY-MM-DD.
+ * This is different to rustg_git_commit_date because it only needs the logs directory.
+ */
+/proc/rustg_git_commit_date_head(format = "%F")
+ return RUSTG_CALL(RUST_G, "rg_git_commit_date_head")(format)
#define RUSTG_HTTP_METHOD_GET "get"
#define RUSTG_HTTP_METHOD_PUT "put"
@@ -187,6 +196,20 @@
#define rustg_noise_get_at_coordinates(seed, x, y) RUSTG_CALL(RUST_G, "noise_get_at_coordinates")(seed, x, y)
+/**
+ * Generates a 2D poisson disk distribution ('blue noise'), which is relatively uniform.
+ *
+ * params:
+ * `seed`: str
+ * `width`: int, width of the noisemap (see world.maxx)
+ * `length`: int, height of the noisemap (see world.maxy)
+ * `radius`: int, distance between points on the noisemap
+ *
+ * returns:
+ * a width*length length string of 1s and 0s representing a 2D poisson sample collapsed into a 1D string
+ */
+#define rustg_noise_poisson_map(seed, width, length, radius) RUSTG_CALL(RUST_G, "noise_poisson_map")(seed, width, length, radius)
+
/*
* Takes in a string and json_encode()"d lists to produce a sanitized string.
* This function operates on whitelists, there is currently no way to blacklist.
@@ -238,3 +261,45 @@
#define url_decode(text) rustg_url_decode(text)
#endif
+/// Provided a static RSC file path or a raw text file path, returns the duration of the file in deciseconds as a float.
+/proc/rustg_sound_length(file_path)
+ var/static/list/sound_cache
+ if(isnull(sound_cache))
+ sound_cache = list()
+
+ . = 0
+
+ if(!istext(file_path))
+ if(!isfile(file_path))
+ CRASH("rustg_sound_length error: Passed non-text object")
+
+ if(length("[file_path]")) // Runtime generated RSC references stringify into 0-length strings.
+ file_path = "[file_path]"
+ else
+ CRASH("rustg_sound_length does not support non-static file refs.")
+
+ var/cached_length = sound_cache[file_path]
+ if(!isnull(cached_length))
+ return cached_length
+
+ var/ret = RUSTG_CALL(RUST_G, "sound_len")(file_path)
+ var/as_num = text2num(ret)
+ if(isnull(ret))
+ . = 0
+ CRASH("rustg_sound_length error: [ret]")
+
+ sound_cache[file_path] = as_num
+ return as_num
+
+
+#define RUSTG_SOUNDLEN_SUCCESSES "successes"
+#define RUSTG_SOUNDLEN_ERRORS "errors"
+/**
+ * Returns a nested key-value list containing "successes" and "errors"
+ * The format is as follows:
+ * list(
+ * RUSTG_SOUNDLEN_SUCCESES = list("sounds/test.ogg" = 25.34),
+ * RUSTG_SOUNDLEN_ERRORS = list("sound/bad.png" = "SoundLen: Unable to decode file."),
+ *)
+*/
+#define rustg_sound_length_list(file_paths) json_decode(RUSTG_CALL(RUST_G, "sound_len_list")(json_encode(file_paths)))
diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm
index 80c316f3585a9..d905129b19b74 100644
--- a/code/__DEFINES/say.dm
+++ b/code/__DEFINES/say.dm
@@ -53,6 +53,9 @@
#define MODE_VOCALCORDS "cords"
#define MODE_KEY_VOCALCORDS "x"
+/// Automatically playing a set of lines
+#define MODE_SEQUENTIAL "sequential"
+
#define MODE_MAFIA "mafia"
/// Applies singing characters to the message
diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm
index 759121e3b8dd8..12f15ab1e68dc 100644
--- a/code/__DEFINES/shuttles.dm
+++ b/code/__DEFINES/shuttles.dm
@@ -62,6 +62,7 @@
#define ENGINE_COEFF_MIN 0.5
#define ENGINE_COEFF_MAX 2
#define ENGINE_DEFAULT_MAXSPEED_ENGINES 5
+#define ENGINE_START_TIME 100
// Alert level related
#define ALERT_COEFF_AUTOEVAC_NORMAL 2.5
@@ -120,3 +121,12 @@
#define SHUTTLE_EVENT_MISS_SHUTTLE 1 << 0
///spawned stuff should hit the shuttle
#define SHUTTLE_EVENT_HIT_SHUTTLE 1 << 1
+
+// Hijack stages
+
+#define HIJACK_NOT_BEGUN 0
+#define HIJACK_STAGE_1 1
+#define HIJACK_STAGE_2 2
+#define HIJACK_STAGE_3 3
+#define HIJACK_STAGE_4 4
+#define HIJACK_COMPLETED 5
diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm
index 889594e48c559..a5fbc5131d10f 100644
--- a/code/__DEFINES/sound.dm
+++ b/code/__DEFINES/sound.dm
@@ -10,9 +10,10 @@
#define CHANNEL_TRAITOR 1016
#define CHANNEL_CHARGED_SPELL 1015
#define CHANNEL_ELEVATOR 1014
+#define CHANNEL_ESCAPEMENU 1013
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
-#define CHANNEL_HIGHEST_AVAILABLE 1013
+#define CHANNEL_HIGHEST_AVAILABLE 1012
#define MAX_INSTRUMENT_CHANNELS (128 * 6)
diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm
index 9b3c2612afa34..d107782385833 100644
--- a/code/__DEFINES/span.dm
+++ b/code/__DEFINES/span.dm
@@ -24,6 +24,8 @@
#define span_blue(str) ("" + str + " ")
#define span_blueteamradio(str) ("" + str + " ")
#define span_bold(str) ("" + str + " ")
+/// This span outputs to OOC, it's meant for OOC announcements
+/// Use span_bolddanger for IC danger messages, it's identical to this
#define span_boldannounce(str) ("" + str + " ")
#define span_bolddanger(str) ("" + str + " ")
#define span_bolditalic(str) ("" + str + " ")
diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm
index b180c7b33494b..955e046edefc6 100644
--- a/code/__DEFINES/stat.dm
+++ b/code/__DEFINES/stat.dm
@@ -13,10 +13,15 @@
#define MAX_SATIETY 600
// bitflags for machine stat variable
+
+/// physically broken
#define BROKEN (1<<0)
+/// not powered
#define NOPOWER (1<<1)
-#define MAINT (1<<2) // under maintaince
-#define EMPED (1<<3) // temporary broken by EMP pulse
+/// under maintaince
+#define MAINT (1<<2)
+/// temporary broken by EMP pulse
+#define EMPED (1<<3)
//ai power requirement defines
#define POWER_REQ_ALL 1
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index 756d78c172353..3642973721049 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -12,6 +12,11 @@
/// Use in status effect "tick_interval" to prevent it from calling tick()
#define STATUS_EFFECT_NO_TICK -1
+/// Indicates this status effect is an abstract type, ie not instantiated
+/// Doesn't actually do anything in practice, primarily just a marker / used in unit tests,
+/// so don't worry if your abstract status effect doesn't actually set this
+#define STATUS_EFFECT_ID_ABSTRACT "abstract"
+
///Processing flags - used to define the speed at which the status will work
///This is fast - 0.2s between ticks (I believe!)
#define STATUS_EFFECT_FAST_PROCESS 0
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index c14acc5a4985a..f5f5067311143 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -167,6 +167,7 @@
#define INIT_ORDER_OUTPUTS 35
#define INIT_ORDER_RESTAURANT 34
#define INIT_ORDER_TTS 33
+#define INIT_ORDER_FLUIDS 32 // Needs to be above atoms, as some atoms may want to start fluids/gases on init
#define INIT_ORDER_ATOMS 30
#define INIT_ORDER_LANGUAGE 25
#define INIT_ORDER_MACHINES 20
diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm
index f510d7a1a9410..814c8fed9e5ca 100644
--- a/code/__DEFINES/surgery.dm
+++ b/code/__DEFINES/surgery.dm
@@ -93,6 +93,12 @@
#define SURGERY_REQUIRES_REAL_LIMB (1<<4)
///Will grant a bonus during surgery steps to users with TRAIT_MORBID while they're using tools with CRUEL_IMPLEMENT
#define SURGERY_MORBID_CURIOSITY (1<<5)
+/**
+ * Instead of checking if the tool used is an actual surgery tool to avoid accidentally whacking patients with the wrong tool,
+ * it'll check if it has a defined tool behaviour instead. Useful for surgeries that use mechanical tools instead of medical ones,
+ * like hardware manipulation.
+ */
+#define SURGERY_CHECK_TOOL_BEHAVIOUR (1<<6)
///Return true if target is not in a valid body position for the surgery
#define IS_IN_INVALID_SURGICAL_POSITION(target, surgery) ((surgery.surgery_flags & SURGERY_REQUIRE_RESTING) && (target.mobility_flags & MOBILITY_LIEDOWN && target.body_position != LYING_DOWN))
diff --git a/code/__DEFINES/tracy.dm b/code/__DEFINES/tracy.dm
new file mode 100644
index 0000000000000..0a9ab8d68ee24
--- /dev/null
+++ b/code/__DEFINES/tracy.dm
@@ -0,0 +1,5 @@
+/// File path used for the "enable tracy next round" functionality
+#define TRACY_ENABLE_PATH "data/enable_tracy"
+
+/// The DLL path for byond-tracy.
+#define TRACY_DLL_PATH (world.system_type == MS_WINDOWS ? "prof.dll" : "./libprof.so")
diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm
index f4f5688819bb2..e868097b579c4 100644
--- a/code/__DEFINES/traits/declarations.dm
+++ b/code/__DEFINES/traits/declarations.dm
@@ -51,6 +51,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_EMOTEMUTE "emotemute"
#define TRAIT_DEAF "deaf"
#define TRAIT_FAT "fat"
+/// Always hungry. They can eat as much as they want without eating slowdown.
+#define TRAIT_GLUTTON "glutton"
#define TRAIT_HUSK "husk"
///Blacklisted from being revived via defibrillator
#define TRAIT_DEFIB_BLACKLISTED "defib_blacklisted"
@@ -391,6 +393,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_DETECT_STORM "detect_storm"
#define TRAIT_PRIMITIVE "primitive"
#define TRAIT_GUNFLIP "gunflip"
+/// eignore blindness or blurriness or nearsightedness
+#define TRAIT_SIGHT_BYPASS "perfect_sight"
+/// ignore traumas that make you 'hallucinate' something
+#define TRAIT_PERCEPTUAL_TRAUMA_BYPASS "trauma_bypass"
+/// mob is immune to hallucinations
+#define TRAIT_HALLUCINATION_IMMUNE "hallucination_immune"
/// Increases chance of getting special traumas, makes them harder to cure
#define TRAIT_SPECIAL_TRAUMA_BOOST "special_trauma_boost"
#define TRAIT_SPACEWALK "spacewalk"
@@ -501,6 +509,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_USER_SCOPED "user_scoped"
/// Mob is unable to feel pain
#define TRAIT_ANALGESIA "analgesia"
+/// Mob does not get a damage overlay from brute/burn
+#define TRAIT_NO_DAMAGE_OVERLAY "no_damage_overlay"
/// Mob has a scar on their left/right eye
#define TRAIT_RIGHT_EYE_SCAR "right_eye_scar"
#define TRAIT_LEFT_EYE_SCAR "left_eye_scar"
@@ -725,6 +735,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
///Mobs won't slip on a wet turf while it has this trait
#define TRAIT_TURF_IGNORE_SLIPPERY "turf_ignore_slippery"
+///failsafe for whether an item with the beauty element is influencing the beauty of the area of not.
+#define TRAIT_BEAUTY_APPLIED "beauty_applied"
+
/// Mobs with this trait can't send the mining shuttle console when used outside the station itself
#define TRAIT_FORBID_MINING_SHUTTLE_CONSOLE_OUTSIDE_STATION "forbid_mining_shuttle_console_outside_station"
@@ -793,8 +806,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_ROD_ATTRACT_SHINY_LOVERS "rod_attract_shiny_lovers"
/// This rod can be used to fish on lava
#define TRAIT_ROD_LAVA_USABLE "rod_lava_usable"
-/// Stuff that can go inside fish cases
-#define TRAIT_FISH_CASE_COMPATIBILE "fish_case_compatibile"
+/// Stuff that can go inside fish cases and aquariums
+#define TRAIT_AQUARIUM_CONTENT "aquarium_content"
/// If the item can be used as a bit.
#define TRAIT_FISHING_BAIT "fishing_bait"
/// This bait will kill any fish that doesn't have it on its favorite_bait list
@@ -812,6 +825,19 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
* instead, it'll allow the fishing dud to be there unless there's at least one fish that likes the bait
*/
#define TRAIT_BAIT_ALLOW_FISHING_DUD "bait_dont_affect_fishing_dud"
+/**
+ * This location has the aquarium component. Not much different than a GetComponent()
+ * disguised as an 'is_x' macro, but I don't have to hide anything here.
+ * I just don't want a confusing 'is_aquarium(A)' macro which people think it's interchangable with
+ * an 'istype(A, /obj/structure/aquarium)' when it's the component what truly matters.
+ */
+#define TRAIT_IS_AQUARIUM "is_aquarium"
+/// A location (probably aquarium) that amplifies the zaps of electricity-generating fish.
+#define TRAIT_BIOELECTRIC_GENERATOR "bioelectric_generator"
+/// A location (likely aquarium) that doesn't allow fish to growth and reproduce
+#define TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH "stop_fish_reproduction_and_growth"
+/// This is an aquarium with an open panel
+#define TRAIT_AQUARIUM_PANEL_OPEN "aquarium_panel_open"
/// Plants that were mutated as a result of passive instability, not a mutation threshold.
#define TRAIT_PLANT_WILDMUTATE "wildmutation"
/// If you hit an APC with exposed internals with this item it will try to shock you
@@ -1133,8 +1159,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_MAGNETIC_ID_CARD "magnetic_id_card"
/// ID cards with this trait have special appraisal text.
#define TRAIT_TASTEFULLY_THICK_ID_CARD "impressive_very_nice"
-/// things with this trait are treated as having no access in /atom/movable/proc/check_access(obj/item)
-#define TRAIT_ALWAYS_NO_ACCESS "alwaysnoaccess"
///The entity has Silicon 'access', so is either a silicon, has an access wand, or is an admin ghost AI.
///This is put on the mob, it is used on the client for Admins but they are the exception as they use `isAdminGhostAI`.
@@ -1340,12 +1364,20 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
///Trait which allows mobs to parry mining mob projectiles
#define TRAIT_MINING_PARRYING "mining_parrying"
+///Mob that can merge stacks in its contents
+#define TRAIT_MOB_MERGE_STACKS "mob_merge_stacks"
+
+//things that can pass through airlocks
+#define TRAIT_FIREDOOR_OPENER "firedoor_opener"
///Trait which silences all chemical reactions in its container
#define TRAIT_SILENT_REACTIONS "silent_reactions"
///Trait given to mobs that can dig
#define TRAIT_MOB_CAN_DIG "mob_can_dig"
+/// This atom has a tether attached to it
+#define TRAIT_TETHER_ATTACHED "tether_attached"
+
/**
*
* This trait is used in some interactions very high in the interaction chain to allow
@@ -1358,10 +1390,15 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
* (This may be changed later but I chose to do it this way to avoid messing up interactions which require combat mode)
*/
#define TRAIT_COMBAT_MODE_SKIP_INTERACTION "combat_mode_skip_interaction"
+// bars change of combat mode
+#define TRAIT_COMBAT_MODE_LOCK "combat_mode_lock"
///A "fake" effect that should not be subject to normal effect removal methods (like the effect remover component)
#define TRAIT_ILLUSORY_EFFECT "illusory_effect"
/// Gives a little examine to their body that they can be revived with a soul
#define TRAIT_GHOSTROLE_ON_REVIVE "ghostrole_on_revive"
+///Trait given to atoms currently affected by projectile dampeners
+#define TRAIT_GOT_DAMPENED "got_dampened"
+
// END TRAIT DEFINES
diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm
index 3552bea70ccc8..c4e952ed77b7a 100644
--- a/code/__DEFINES/traits/sources.dm
+++ b/code/__DEFINES/traits/sources.dm
@@ -165,7 +165,6 @@
#define STICKY_NODROP "sticky-nodrop"
#define SKILLCHIP_TRAIT "skillchip"
#define SKILL_TRAIT "skill"
-#define BUSY_FLOORBOT_TRAIT "busy-floorbot"
#define PULLED_WHILE_SOFTCRIT_TRAIT "pulled-while-softcrit"
#define LOCKED_BORG_TRAIT "locked-borg"
/// trait associated to not having locomotion appendages nor the ability to fly or float
@@ -310,3 +309,9 @@
/// Trait from an engraving
#define ENGRAVED_TRAIT "engraved"
+
+/// From the aquarium component
+#define AQUARIUM_TRAIT "aquarium"
+
+/// Trait aquired from being painted a certain color
+#define ATOM_COLOR_TRAIT "atom_color"
diff --git a/code/__DEFINES/wounds.dm b/code/__DEFINES/wounds.dm
index 5f824f42cce92..57415c0b50bac 100644
--- a/code/__DEFINES/wounds.dm
+++ b/code/__DEFINES/wounds.dm
@@ -313,8 +313,8 @@ GLOBAL_LIST_INIT(biotypes_to_scar_file, list(
// ~random wound balance defines
/// how quickly sanitization removes infestation and decays per second
#define WOUND_BURN_SANITIZATION_RATE 0.075
-/// how much blood you can lose per tick per slash max.
-#define WOUND_SLASH_MAX_BLOODFLOW 4.5
+/// how much blood you can lose per tick per wound max.
+#define WOUND_MAX_BLOODFLOW 4.5
/// further slash attacks on a bodypart with a slash wound have their blood_flow further increased by damage * this (10 damage slash adds .25 flow)
#define WOUND_SLASH_DAMAGE_FLOW_COEFF 0.025
/// if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100)
diff --git a/code/__DEFINES/~doppler_defines/ntnrc.dm b/code/__DEFINES/~doppler_defines/ntnrc.dm
new file mode 100644
index 0000000000000..585b09dc58b8d
--- /dev/null
+++ b/code/__DEFINES/~doppler_defines/ntnrc.dm
@@ -0,0 +1,6 @@
+
+/// Name used for the common chat all crew gets added to when they join.
+#define NTNRC_COMMON_CHAT "#general"
+
+/// Name used for the preference for the default NTNRC username.
+#define NTRNC_USERNAME_PREF_NAME "NTNRC username"
diff --git a/code/__DEFINES/~doppler_defines/traits.dm b/code/__DEFINES/~doppler_defines/traits.dm
index 653826b8a73d9..fb5c21cd8680c 100644
--- a/code/__DEFINES/~doppler_defines/traits.dm
+++ b/code/__DEFINES/~doppler_defines/traits.dm
@@ -37,6 +37,8 @@
#define TRAIT_PERMITTED_CYBERNETIC "permitted_cybernetic"
/// No step on glass
#define TRAIT_HARD_SOLES "hard_soles"
+/// Can detach cybernetic limbs voluntarily
+#define TRAIT_ROBOTIC_LIMBATTACHMENT "robotic_limbattachment"
////
// Jobs
diff --git a/code/__DEFINES/~doppler_defines/traits/declarations.dm b/code/__DEFINES/~doppler_defines/traits/declarations.dm
new file mode 100644
index 0000000000000..ca28e9171419c
--- /dev/null
+++ b/code/__DEFINES/~doppler_defines/traits/declarations.dm
@@ -0,0 +1,5 @@
+/// The trait that determines if someone has the system shock quirk.
+#define TRAIT_SYSTEM_SHOCK "trait_system_shock"
+
+/// The trait given to people with bad vibes.
+#define TRAIT_BAD_VIBES "trait_bad_vibes"
diff --git a/code/__HELPERS/_planes.dm b/code/__HELPERS/_planes.dm
index 87e9ff2d1ce69..1bebefa2fa84b 100644
--- a/code/__HELPERS/_planes.dm
+++ b/code/__HELPERS/_planes.dm
@@ -92,12 +92,13 @@ GLOBAL_LIST_INIT(topdown_planes, list(
"[FLOOR_PLANE]" = TRUE,
))
+#define IS_TOPDOWN_PLANE(plane) GLOB.topdown_planes["[PLANE_TO_TRUE(plane)]"]
+
/// Checks if a passed in MA or atom is allowed to have its current plane/layer matchup
/proc/check_topdown_validity(mutable_appearance/thing_to_check)
if(istype(thing_to_check, /atom/movable/screen/plane_master))
return
- var/topdown_plane = GLOB.topdown_planes["[PLANE_TO_TRUE(thing_to_check.plane)]"]
- if(topdown_plane)
+ if(IS_TOPDOWN_PLANE(thing_to_check.plane))
if(thing_to_check.layer - TOPDOWN_LAYER < 0 || thing_to_check.layer >= BACKGROUND_LAYER)
stack_trace("[thing_to_check] ([thing_to_check.type]) was expected to have a TOPDOWN_LAYER layer due to its plane, but it DID NOT! layer: ([thing_to_check.layer]) plane: ([thing_to_check.plane])")
else if(thing_to_check.layer - TOPDOWN_LAYER >= 0 && thing_to_check.layer < BACKGROUND_LAYER)
diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm
index 1d247c12e6ee7..8e818e0e7f468 100644
--- a/code/__HELPERS/areas.dm
+++ b/code/__HELPERS/areas.dm
@@ -136,7 +136,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list(
return
newA = new area_choice
newA.setup(str)
- newA.has_gravity = oldA.has_gravity
+ newA.default_gravity = oldA.default_gravity
require_area_resort() //new area registered. resort the names
else
newA = area_choice
diff --git a/code/__HELPERS/atoms.dm b/code/__HELPERS/atoms.dm
index d54b29b3f4ac9..e94d58dd69399 100644
--- a/code/__HELPERS/atoms.dm
+++ b/code/__HELPERS/atoms.dm
@@ -316,6 +316,46 @@ rough example of the "cone" made by the 3 dirs checked
loc = loc.loc
return null
+/**
+ * Line of sight check!
+ * Spawns a dummy object and then iterates through each turf to see if it's blocked by something not handled by pass_args.
+ * Contains a mid_los_check, meant to be overriden by subtypes.
+ * args:
+ * * user = Origin to start at.
+ * * target = End point.
+ * * pass_args = pass_flags given to dummy object to allow it to ignore certain types of blockades.
+ */
+/proc/los_check(atom/movable/user, mob/target, pass_args = PASSTABLE|PASSGLASS|PASSGRILLE, datum/callback/mid_check)
+ var/turf/user_turf = user.loc
+ if(!istype(user_turf))
+ return FALSE
+ var/obj/dummy = new(user_turf)
+ dummy.pass_flags |= pass_args //Grille/Glass so it can be used through common windows
+ var/turf/previous_step = user_turf
+ var/first_step = TRUE
+ for(var/turf/next_step as anything in (get_line(user_turf, target) - user_turf))
+ if(first_step)
+ for(var/obj/blocker in user_turf)
+ if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1))
+ continue
+ if(blocker.CanPass(dummy, get_dir(user_turf, next_step)))
+ continue
+ return FALSE // Could not leave the first turf.
+ first_step = FALSE
+ if(next_step.density)
+ qdel(dummy)
+ return FALSE
+ for(var/atom/movable/movable as anything in next_step)
+ if(!movable.CanPass(dummy, get_dir(next_step, previous_step)))
+ qdel(dummy)
+ return FALSE
+ if(mid_check?.Invoke(user, target, pass_args, next_step, dummy) == FALSE) // specify false as it may return null if there's no check
+ qdel(dummy)
+ return FALSE
+ previous_step = next_step
+ qdel(dummy)
+ return TRUE
+
///Returns true if the src countain the atom target
/atom/proc/contains(atom/target)
if(!target)
diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm
index 76651964e24e0..efee782aaeb8d 100644
--- a/code/__HELPERS/cmp.dm
+++ b/code/__HELPERS/cmp.dm
@@ -30,6 +30,9 @@
/proc/cmp_name_dsc(atom/a, atom/b)
return sorttext(a.name, b.name)
+/proc/cmp_init_name_asc(atom/a, atom/b)
+ return sorttext(initial(b.name), initial(a.name))
+
/proc/cmp_records_asc(datum/record/a, datum/record/b)
return sorttext(b.name, a.name)
diff --git a/code/__HELPERS/colors.dm b/code/__HELPERS/colors.dm
index f5dd398d72fcd..b0b61f986420a 100644
--- a/code/__HELPERS/colors.dm
+++ b/code/__HELPERS/colors.dm
@@ -153,3 +153,116 @@
return "#[num2hex(c, 2)][num2hex(m, 2)][num2hex(x, 2)]"
#define RANDOM_COLOUR (rgb(rand(0,255),rand(0,255),rand(0,255)))
+
+/* Generates an HSL color transition matrix filter which nicely paints an object
+ * without making it a deep fried blob of color
+ * saturation_behavior determines how we handle color saturation:
+ * SATURATION_MULTIPLY - Multiply pixel's saturation by color's saturation. Paints accents while keeping dim areas dim.
+ * SATURATION_OVERRIDE- Affects original lightness/saturation to ensure that pale objects still get doused in color
+ */
+/proc/color_transition_filter(new_color, saturation_behavior = SATURATION_MULTIPLY)
+ if (islist(new_color))
+ new_color = rgb(new_color[1], new_color[2], new_color[3])
+ new_color = rgb2num(new_color, COLORSPACE_HSL)
+ var/hue = new_color[1] / 360
+ var/saturation = new_color[2] / 100
+ var/added_saturation = 0
+ var/deducted_light = 0
+ if (saturation_behavior == SATURATION_OVERRIDE)
+ added_saturation = saturation * 0.75
+ deducted_light = saturation * 0.5
+ saturation = min(saturation, 1 - added_saturation)
+
+ var/list/new_matrix = list(
+ 0, 0, 0, 0, // Ignore original hue
+ 0, saturation, 0, 0, // Multiply the saturation by ours
+ 0, 0, 1 - deducted_light, 0, // If we're highly saturated then remove a bit of lightness to keep some color in
+ 0, 0, 0, 1, // Preserve alpha
+ hue, added_saturation, 0, 0, // And apply our preferred hue and some saturation if we're oversaturated
+ )
+ return color_matrix_filter(new_matrix, FILTER_COLOR_HSL)
+
+/// Applies a color filter to a hex/RGB list color
+/proc/apply_matrix_to_color(color, list/matrix, colorspace = COLORSPACE_HSL)
+ if (islist(color))
+ color = rgb(color[1], color[2], color[3], color[4])
+ color = rgb2num(color, colorspace)
+ // Pad alpha if we're lacking it
+ if (length(color) < 4)
+ color += 255
+
+ // Do we have a constants row?
+ var/has_constants = FALSE
+ // Do we have an alpha row/parameters?
+ var/has_alpha = FALSE
+
+ switch (length(matrix))
+ if (9)
+ has_constants = FALSE
+ has_alpha = FALSE
+ if (12)
+ has_constants = TRUE
+ has_alpha = FALSE
+ if (16)
+ has_constants = FALSE
+ has_alpha = TRUE
+ if (20)
+ has_constants = TRUE
+ has_alpha = TRUE
+ else
+ CRASH("Matrix of invalid length [length(matrix)] was passed into apply_matrix_to_color!")
+
+ var/list/new_color = list(0, 0, 0, 0)
+ var/row_length = 3
+ if (has_alpha)
+ row_length = 4
+ else
+ new_color[4] = 255
+
+ for (var/row_index in 1 to length(matrix) / row_length)
+ for (var/row_elem in 1 to row_length)
+ var/elem = matrix[(row_index - 1) * row_length + row_elem]
+ if (!has_constants || row_index != (length(matrix) / row_length))
+ new_color[row_index] += color[row_elem] * elem
+ continue
+
+ // Constant values at the end of the list (if we have such)
+ if (colorspace != COLORSPACE_HSV && colorspace != COLORSPACE_HCY && colorspace != COLORSPACE_HSL)
+ new_color[row_elem] += elem * 255
+ continue
+
+ // HSV/HSL/HCY have non-255 maximums for their values
+ var/multiplier = 255
+ switch (row_elem)
+ // Hue goes from 0 to 360
+ if (1)
+ multiplier = 360
+ // Value, luminance, chroma, etc go from 0 to 100
+ if (2 to 3)
+ multiplier = 100
+ // Alpha still goes from 0 to 255
+ if (4)
+ multiplier = 255
+ new_color[row_elem] += elem * multiplier
+
+ var/rgbcolor = rgb(new_color[1], new_color[2], new_color[3], new_color[4], space = colorspace)
+ return rgbcolor
+
+/// Recursively applies a filter to a passed in static appearance, returns the modified appearance
+/proc/filter_appearance_recursive(mutable_appearance/filter, filter_to_apply)
+ var/mutable_appearance/modify = new(filter)
+ var/list/existing_filters = modify.filters.Copy()
+ modify.filters = list(filter_to_apply) + existing_filters
+
+ // Ideally this should be recursive to check for KEEP_APART elements that need this applied to it
+ // and RESET_COLOR flags but this is much simpler, and hopefully we don't have that point of layering here
+ if(modify.appearance_flags & KEEP_TOGETHER)
+ return modify
+
+ for(var/overlay_index in 1 to length(modify.overlays))
+ modify.overlays[overlay_index] = filter_appearance_recursive(modify.overlays[overlay_index], filter_to_apply)
+
+ for(var/underlay_index in 1 to length(modify.underlays))
+ modify.underlays[underlay_index] = filter_appearance_recursive(modify.underlays[underlay_index], filter_to_apply)
+
+ return modify
diff --git a/code/__HELPERS/filters.dm b/code/__HELPERS/filters.dm
index 14233a2807636..f84c812e0be79 100644
--- a/code/__HELPERS/filters.dm
+++ b/code/__HELPERS/filters.dm
@@ -312,9 +312,18 @@ GLOBAL_LIST_INIT(master_filter_info, list(
animate(filter, offset = random_roll, time = 0, loop = -1, flags = ANIMATION_PARALLEL)
animate(offset = random_roll - 1, time = rand() * 20 + 10)
-/proc/remove_wibbly_filters(atom/in_atom)
+/proc/remove_wibbly_filters(atom/in_atom, remove_duration = 0)
var/filter
for(var/i in 1 to 7)
filter = in_atom.get_filter("wibbly-[i]")
- animate(filter)
- in_atom.remove_filter("wibbly-[i]")
+ if(remove_duration == 0)
+ animate(filter)
+ in_atom.remove_filter("wibbly-[i]")
+ continue
+ animate(filter, x = 0, y = 0, size = 0, offset = 0, time = remove_duration)
+ addtimer(CALLBACK(in_atom, TYPE_PROC_REF(/datum, remove_filter), "wibbly-[i]"), remove_duration)
+
+/proc/convert_list_to_filter(list/list_filter)
+ var/list/arguments = list_filter.Copy()
+ arguments -= "priority"
+ return filter(arglist(arguments))
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 1740402e62799..2c285a348fac2 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -75,8 +75,8 @@
return !player_mind || !player_mind.current || !player_mind.current.client || player_mind.current.client.is_afk()
///Return an object with a new maptext (not currently in use)
-/proc/screen_text(obj/object_to_change, maptext = "", screen_loc = "CENTER-7,CENTER-7", maptext_height = 480, maptext_width = 480)
- if(!isobj(object_to_change))
+/proc/screen_text(atom/movable/object_to_change, maptext = "", screen_loc = "CENTER-7,CENTER-7", maptext_height = 480, maptext_width = 480)
+ if(!istype(object_to_change))
object_to_change = new /atom/movable/screen/text()
object_to_change.maptext = MAPTEXT(maptext)
object_to_change.maptext_height = maptext_height
diff --git a/code/__HELPERS/hud.dm b/code/__HELPERS/hud.dm
new file mode 100644
index 0000000000000..40a12767d28cd
--- /dev/null
+++ b/code/__HELPERS/hud.dm
@@ -0,0 +1,17 @@
+/proc/ui_hand_position(i) //values based on old hand ui positions (CENTER:-/+16,SOUTH:5)
+ var/x_off = IS_LEFT_INDEX(i) ? 0 : -1
+ var/y_off = round((i-1) / 2)
+ return"CENTER+[x_off]:16,SOUTH+[y_off]:5"
+
+/proc/ui_equip_position(mob/M)
+ var/y_off = round((M.held_items.len-1) / 2) //values based on old equip ui position (CENTER: +/-16,SOUTH+1:5)
+ return "CENTER:-16,SOUTH+[y_off+1]:5"
+
+/proc/ui_swaphand_position(mob/M, which = LEFT_HANDS) //values based on old swaphand ui positions (CENTER: +/-16,SOUTH+1:5)
+ var/x_off = which == LEFT_HANDS ? -1 : 0
+ var/y_off = round((M.held_items.len-1) / 2)
+ return "CENTER+[x_off]:16,SOUTH+[y_off+1]:5"
+
+/proc/ui_perk_position(perk_count)
+ var/y_off = perk_count < 1 ? 0 : perk_count/2
+ return "WEST+0.5:12,NORTH-2-[y_off]:20"
diff --git a/code/__HELPERS/logging/attack.dm b/code/__HELPERS/logging/attack.dm
index 16fd656137fab..2e2b7a77f49d3 100644
--- a/code/__HELPERS/logging/attack.dm
+++ b/code/__HELPERS/logging/attack.dm
@@ -80,5 +80,5 @@
GLOB.bombers += bomb_message
var/area/bomb_area = get_area(bomb)
- if(message_admins && !(bomb_area.area_flags & QUIET_LOGS)) // Don't spam the logs with deathmatch bombs
+ if(message_admins && !(bomb_area?.area_flags & QUIET_LOGS)) // Don't spam the logs with deathmatch bombs
message_admins("[user ? "[ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(user)] " : ""][details][bomb ? " [bomb.name] at [ADMIN_VERBOSEJMP(bomb)]": ""][additional_details ? " [additional_details]" : ""].")
diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm
index 040e9694429dc..27d3c5d38ab60 100644
--- a/code/__HELPERS/maths.dm
+++ b/code/__HELPERS/maths.dm
@@ -1,5 +1,5 @@
///Calculate the angle between two movables and the west|east coordinate
-/proc/get_angle(atom/movable/start, atom/movable/end)//For beams.
+/proc/get_angle(atom/movable/start, atom/movable/end)
if(!start || !end)
return 0
var/dy =(ICON_SIZE_Y * end.y + end.pixel_y) - (ICON_SIZE_Y * start.y + start.pixel_y)
@@ -238,7 +238,7 @@
return min(new_value, threshold * -1)
/// Takes two values x and y, and returns 1/((1/x) + y)
-/// Useful for providing an additive modifier to a value that is used as a divisor, such as `/obj/projectile/var/speed`
+/// Useful for providing an additive modifier to a value that is used as a divisor
/proc/reciprocal_add(x, y)
return 1/((1/x)+y)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index f3a2e4bd375b9..f4491d336a038 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -208,7 +208,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
var/atom/target_loc = target?.loc
var/drifting = FALSE
- if(GLOB.move_manager.processing_on(user, SSnewtonian_movement))
+ if(!isnull(user.drift_handler))
drifting = TRUE
var/holding = user.get_active_held_item()
@@ -237,7 +237,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
if(!QDELETED(progbar))
progbar.update(world.time - starttime)
- if(drifting && !GLOB.move_manager.processing_on(user, SSnewtonian_movement))
+ if(drifting && isnull(user.drift_handler))
drifting = FALSE
user_loc = user.loc
diff --git a/code/__HELPERS/movement.dm b/code/__HELPERS/movement.dm
index e820b3dfff125..49b7fb35432b0 100644
--- a/code/__HELPERS/movement.dm
+++ b/code/__HELPERS/movement.dm
@@ -1,2 +1,5 @@
/// Converts w_class into newtons from throwing it, in (0.6 ~ 2.2) range
#define WEIGHT_TO_NEWTONS(w_class, arguments...) 0.2 NEWTONS + w_class * 0.4 NEWTONS
+
+/// Converts movement delay into drift force required to achieve that speed
+#define MOVE_DELAY_TO_DRIFT(move_delay) ((DEFAULT_INERTIA_SPEED / move_delay - 1) / INERTIA_SPEED_COEF + 1)
diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm
index fbdccdef12c56..daeddc13c60e4 100644
--- a/code/__HELPERS/paths/jps.dm
+++ b/code/__HELPERS/paths/jps.dm
@@ -55,7 +55,7 @@
/datum/pathfind/jps
/// The movable we are pathing
- var/atom/movable/caller
+ var/atom/movable/requester
/// The turf we're trying to path to (note that this won't track a moving target)
var/turf/end
/// The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead)
@@ -72,9 +72,9 @@
///Defines how we handle diagonal moves. See __DEFINES/path.dm
var/diagonal_handling = DIAGONAL_REMOVE_CLUNKY
-/datum/pathfind/jps/proc/setup(atom/movable/caller, list/access, max_distance, simulated_only, avoid, list/datum/callback/on_finish, atom/goal, mintargetdist, skip_first, diagonal_handling)
- src.caller = caller
- src.pass_info = new(caller, access)
+/datum/pathfind/jps/proc/setup(atom/movable/requester, list/access, max_distance, simulated_only, avoid, list/datum/callback/on_finish, atom/goal, mintargetdist, skip_first, diagonal_handling)
+ src.requester = requester
+ src.pass_info = new(requester, access)
src.max_distance = max_distance
src.simulated_only = simulated_only
src.avoid = avoid
@@ -88,12 +88,12 @@
/datum/pathfind/jps/Destroy(force)
. = ..()
- caller = null
+ requester = null
end = null
open = null
/datum/pathfind/jps/start()
- start = start || get_turf(caller)
+ start = start || get_turf(requester)
. = ..()
if(!.)
return .
@@ -115,7 +115,7 @@
. = ..()
if(!.)
return .
- if(QDELETED(caller))
+ if(QDELETED(requester))
return FALSE
while(!open.is_empty() && !path)
@@ -194,7 +194,7 @@
if(!CAN_STEP(lag_turf, current_turf, simulated_only, pass_info, avoid))
return
- if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist)))
+ if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist) && !diagonally_blocked(current_turf, end)))
var/datum/jps_node/final_node = new(current_turf, parent_node, steps_taken)
found_turfs[current_turf] = TRUE
if(parent_node) // if this is a direct lateral scan we can wrap up, if it's a subscan from a diag, we need to let the diag make their node first, then finish
@@ -256,7 +256,7 @@
if(!CAN_STEP(lag_turf, current_turf, simulated_only, pass_info, avoid))
return
- if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist)))
+ if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist) && !diagonally_blocked(current_turf, end)))
var/datum/jps_node/final_node = new(current_turf, parent_node, steps_taken)
found_turfs[current_turf] = TRUE
unwind_path(final_node)
diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm
index 950cd1906846c..da1c9917b6be2 100644
--- a/code/__HELPERS/paths/path.dm
+++ b/code/__HELPERS/paths/path.dm
@@ -4,7 +4,7 @@
* It will yield until a path is returned, using magic
*
* Arguments:
- * * caller: The movable atom that's trying to find the path
+ * * requester: The movable atom that's trying to find the path
* * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway
* * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite)
* * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example.
@@ -14,16 +14,16 @@
* * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures.
* * diagonal_handling: defines how we handle diagonal moves. see __DEFINES/path.dm
*/
-/proc/get_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE, diagonal_handling=DIAGONAL_REMOVE_CLUNKY)
+/proc/get_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE, diagonal_handling=DIAGONAL_REMOVE_CLUNKY)
var/list/hand_around = list()
// We're guaranteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list
var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around))
- if(!SSpathfinder.pathfind(caller, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await))
+ if(!SSpathfinder.pathfind(requester, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await))
return list()
UNTIL(length(hand_around))
var/list/return_val = hand_around[1]
- if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy
+ if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy
return list()
return return_val
@@ -37,7 +37,7 @@
* It will yield until a path is returned, using magic
*
* Arguments:
- * * caller: The movable atom that's trying to find the path
+ * * requester: The movable atom that's trying to find the path
* * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway
* * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite)
* * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example.
@@ -47,29 +47,29 @@
* * exclude: If we want to avoid a specific turf, like if we're a mulebot who already got blocked by some turf
* * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures.
*/
-/proc/get_swarm_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE)
+/proc/get_swarm_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE)
var/list/hand_around = list()
// We're guaranteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list
var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around))
- if(!SSpathfinder.swarmed_pathfind(caller, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await))
+ if(!SSpathfinder.swarmed_pathfind(requester, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await))
return list()
UNTIL(length(hand_around))
var/list/return_val = hand_around[1]
- if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy
+ if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy
return list()
return return_val
-/proc/get_sssp(atom/movable/caller, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude)
+/proc/get_sssp(atom/movable/requester, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude)
var/list/hand_around = list()
// We're guaranteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list
var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around))
- if(!SSpathfinder.build_map(caller, get_turf(caller), max_distance, access, simulated_only, exclude, await))
+ if(!SSpathfinder.build_map(requester, get_turf(requester), max_distance, access, simulated_only, exclude, await))
return null
UNTIL(length(hand_around))
var/datum/path_map/return_val = hand_around[1]
- if(!istype(return_val, /datum/path_map) || (QDELETED(caller))) // It's trash, just hand back null to make it easy
+ if(!istype(return_val, /datum/path_map) || (QDELETED(requester))) // It's trash, just hand back null to make it easy
return null
return return_val
@@ -202,7 +202,7 @@
return modified_path
/**
- * For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags
+ * For seeing if we can actually move between 2 given turfs while accounting for our access and the requester's pass_flags
*
* Assumes destinantion turf is non-dense - check and shortcircuit in code invoking this proc to avoid overhead.
* Makes some other assumptions, such as assuming that unless declared, non dense objects will not block movement.
@@ -311,7 +311,7 @@
/// Let's avoid this
var/camera_type
- /// Weakref to the caller used to generate this info
+ /// Weakref to the requester used to generate this info
/// Should not use this almost ever, it's for context and to allow for proc chains that
/// Require a movable
var/datum/weakref/caller_ref = null
diff --git a/code/__HELPERS/paths/sssp.dm b/code/__HELPERS/paths/sssp.dm
index 21e520ea0164c..092da587793a8 100644
--- a/code/__HELPERS/paths/sssp.dm
+++ b/code/__HELPERS/paths/sssp.dm
@@ -201,8 +201,8 @@
/// Our current position in the working queue
var/working_index
-/datum/pathfind/sssp/proc/setup(atom/movable/caller, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish)
- src.pass_info = new(caller, access)
+/datum/pathfind/sssp/proc/setup(atom/movable/requester, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish)
+ src.pass_info = new(requester, access)
src.start = center
src.max_distance = max_distance
src.simulated_only = simulated_only
diff --git a/code/__HELPERS/shuttle.dm b/code/__HELPERS/shuttle.dm
new file mode 100644
index 0000000000000..4f866e22384dd
--- /dev/null
+++ b/code/__HELPERS/shuttle.dm
@@ -0,0 +1,52 @@
+/// Helper proc that tests to ensure all whiteship templates can spawn at their docking port, and logs their sizes
+/// This should be a unit test, but too much of our other code breaks during shuttle movement, so not yet, not yet.
+/proc/test_whiteship_sizes()
+ var/obj/docking_port/stationary/port_type = /obj/docking_port/stationary/picked/whiteship
+ var/datum/turf_reservation/docking_yard = SSmapping.request_turf_block_reservation(
+ initial(port_type.width),
+ initial(port_type.height),
+ 1,
+ )
+ var/turf/bottom_left = docking_yard.bottom_left_turfs[1]
+ var/turf/spawnpoint = locate(
+ bottom_left.x + initial(port_type.dwidth),
+ bottom_left.y + initial(port_type.dheight),
+ bottom_left.z,
+ )
+
+ var/obj/docking_port/stationary/picked/whiteship/port = new(spawnpoint)
+ var/list/ids = port.shuttlekeys
+ var/height = 0
+ var/width = 0
+ var/dheight = 0
+ var/dwidth = 0
+ var/delta_height = 0
+ var/delta_width = 0
+ for(var/id in ids)
+ var/datum/map_template/shuttle/our_template = SSmapping.shuttle_templates[id]
+ // We do a standard load here so any errors will properly runtimes
+ var/obj/docking_port/mobile/ship = SSshuttle.action_load(our_template, port)
+ if(ship)
+ ship.jumpToNullSpace()
+ ship = null
+ // Yes this is very hacky, but we need to both allow loading a template that's too big to be an error state
+ // And actually get the sizing information from every shuttle
+ SSshuttle.load_template(our_template)
+ var/obj/docking_port/mobile/theoretical_ship = SSshuttle.preview_shuttle
+ if(theoretical_ship)
+ height = max(theoretical_ship.height, height)
+ width = max(theoretical_ship.width, width)
+ dheight = max(theoretical_ship.dheight, dheight)
+ dwidth = max(theoretical_ship.dwidth, dwidth)
+ delta_height = max(theoretical_ship.height - theoretical_ship.dheight, delta_height)
+ delta_width = max(theoretical_ship.width - theoretical_ship.dwidth, delta_width)
+ theoretical_ship.jumpToNullSpace()
+ qdel(port, TRUE)
+ log_world("Whiteship sizing information. Use this to set the docking port, and the map size\n\
+ Max Height: [height] \n\
+ Max Width: [width] \n\
+ Max DHeight: [dheight] \n\
+ Max DWidth: [dwidth] \n\
+ The following are the safest bet for map sizing. Anything smaller then this could in the worst case not fit in the docking port\n\
+ Max Combined Width: [height + dheight] \n\
+ Max Combinded Height [width + dwidth]")
diff --git a/code/__HELPERS/spatial_info.dm b/code/__HELPERS/spatial_info.dm
index a2c47e87c0a10..050c569cbdf8f 100644
--- a/code/__HELPERS/spatial_info.dm
+++ b/code/__HELPERS/spatial_info.dm
@@ -485,3 +485,19 @@
return center //Offer the center only as a default case when we don't have a valid circle.
return peel
+///check if 2 diagonal turfs are blocked by dense objects
+/proc/diagonally_blocked(turf/our_turf, turf/dest_turf)
+ if(get_dist(our_turf, dest_turf) != 1)
+ return FALSE
+ var/direction_to_turf = get_dir(dest_turf, our_turf)
+ if(!ISDIAGONALDIR(direction_to_turf))
+ return FALSE
+ for(var/direction_check in GLOB.cardinals)
+ if(!(direction_check & direction_to_turf))
+ continue
+ var/turf/test_turf = get_step(dest_turf, direction_check)
+ if(isnull(test_turf))
+ continue
+ if(!test_turf.is_blocked_turf(exclude_mobs = TRUE))
+ return FALSE
+ return TRUE
diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm
index 0232b64bf461f..989b45976f227 100644
--- a/code/__HELPERS/text.dm
+++ b/code/__HELPERS/text.dm
@@ -270,7 +270,7 @@
if(!filter_name_ic(trimmed)) // Contains IC chat prohibited words
return
- return trimtext(trimmed)
+ return trim(trimmed)
/// Helper proc to check if a name is valid for the IC filter
@@ -357,7 +357,7 @@
/proc/trim(text, max_length)
if(max_length)
text = copytext_char(text, 1, max_length)
- return trimtext(text)
+ return trimtext(text) || "" //users expect atleast an empty string
//Returns a string with the first element of the string capitalized.
/proc/capitalize(t)
diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm
index 03d308e34d635..aae96c3860145 100644
--- a/code/__HELPERS/type2type.dm
+++ b/code/__HELPERS/type2type.dm
@@ -99,6 +99,9 @@ GLOBAL_LIST_INIT(modulo_angle_to_dir, list(NORTH,NORTHEAST,EAST,SOUTHEAST,SOUTH,
else
return null
+///Returns a single dir rotated by x degrees clockwise, adhering to the cardinal directions.
+#define turn_cardinal(dir, rotation) ( angle2dir_cardinal ( dir2angle(dir) + rotation ) )
+
//Returns the angle in english
/proc/angle2text(degree)
return dir2text(angle2dir(degree))
diff --git a/code/__HELPERS/type_processing.dm b/code/__HELPERS/type_processing.dm
index dfd74f7e3c6bc..e005088c2813f 100644
--- a/code/__HELPERS/type_processing.dm
+++ b/code/__HELPERS/type_processing.dm
@@ -128,11 +128,29 @@
if(endcheck.len > 1)
filter = endcheck[1]
end_len = length_char(filter)
+ var/endtype = (filter[length(filter)] == "*")
+ if (endtype)
+ filter = splittext(filter, "*")[1]
for(var/key in L)
var/value = L[key]
- if(findtext("[key]", filter, -end_len) || findtext("[value]", filter, -end_len))
+ if (findtext("[key]", filter, -end_len))
+ if (endtype)
+ var/list/split_filter = splittext("[key]", filter)
+ if (!findtext(split_filter[length(split_filter)], "/"))
+ matches[key] = value
+ continue
+ else
+ matches[key] = value
+ continue
+
+ if (findtext("[value]", filter, -end_len))
+ if (endtype)
+ var/list/split_filter = splittext("[value]", filter)
+ if (findtext(split_filter[length(split_filter)], "/"))
+ continue
matches[key] = value
+
return matches
/proc/return_typenames(type)
diff --git a/code/__HELPERS/view.dm b/code/__HELPERS/view.dm
index 139bdedc425ff..61aaed8835061 100644
--- a/code/__HELPERS/view.dm
+++ b/code/__HELPERS/view.dm
@@ -1,7 +1,5 @@
-/proc/getviewsize(view)
- if(!view) // Just to avoid any runtimes that could otherwise cause constant disconnect loops.
- stack_trace("Missing value for 'view' in getviewsize(), defaulting to world.view!")
- view = world.view
+/proc/getviewsize(view = world.view)
+ SHOULD_BE_PURE(TRUE)
if(isnum(view))
var/totalviewrange = (view < 0 ? -1 : 1) + 2 * view
diff --git a/code/_compile_options.dm b/code/_compile_options.dm
index 3fe456e488ecb..2bd9309406a0a 100644
--- a/code/_compile_options.dm
+++ b/code/_compile_options.dm
@@ -81,13 +81,17 @@
#endif // REFERENCE_TRACKING_STANDARD
// If this is uncommented, we do a single run though of the game setup and tear down process with unit tests in between
-// #define UNIT_TESTS
+//#define UNIT_TESTS
// If this is uncommented, will attempt to load and initialize prof.dll/libprof.so by default.
// Even if it's not defined, you can pass "tracy" via -params in order to try to load it.
-// We do not ship byond-tracy. Build it yourself here: https://github.com/mafemergency/byond-tracy/
+// We do not ship byond-tracy. Build it yourself here: https://github.com/mafemergency/byond-tracy,
+// or the fork which writes profiling data to a file: https://github.com/ParadiseSS13/byond-tracy
// #define USE_BYOND_TRACY
+// If uncommented, will display info about byond-tracy's status in the MC tab.
+// #define MC_TAB_TRACY_INFO
+
// If defined, we will compile with FULL timer debug info, rather then a limited scope
// Be warned, this increases timer creation cost by 5x
// #define TIMER_DEBUG
diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm
index e311a67a89f9c..6fba866b857db 100644
--- a/code/_globalvars/bitfields.dm
+++ b/code/_globalvars/bitfields.dm
@@ -575,6 +575,9 @@ DEFINE_BITFIELD(fish_flags, list(
"FISH_DO_FLOP_ANIM" = FISH_DO_FLOP_ANIM,
"FISH_FLAG_PETTED" = FISH_FLAG_PETTED,
"FISH_FLAG_EXPERIMENT_SCANNABLE" = FISH_FLAG_EXPERIMENT_SCANNABLE,
+ "FISH_FLAG_UPDATING_SIZE_AND_WEIGHT" = FISH_FLAG_OVERPOPULATED,
+ "FISH_FLAG_SAFE_TEMPERATURE" = FISH_FLAG_SAFE_TEMPERATURE,
+ "FISH_FLAG_SAFE_FLUID" = FISH_FLAG_SAFE_FLUID,
))
DEFINE_BITFIELD(bot_mode_flags, list(
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index d91eec6e1bc87..5ece846e84de3 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -59,7 +59,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list())) // One for each AI_* status define
GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs
GLOBAL_LIST_EMPTY(bots_list)
-GLOBAL_LIST_EMPTY(aiEyes)
+GLOBAL_LIST_EMPTY(camera_eyes)
GLOBAL_LIST_EMPTY(suit_sensors_list) //all people with suit sensors on
/// All alive mobs with clients.
diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm
index 32929ccdb9f24..f2faf6ae81fe0 100644
--- a/code/_globalvars/lists/objects.dm
+++ b/code/_globalvars/lists/objects.dm
@@ -32,9 +32,13 @@ GLOBAL_LIST_EMPTY(deliverybeacontags)
GLOBAL_LIST_EMPTY_TYPED(singularities, /datum/component/singularity)
GLOBAL_LIST_EMPTY(item_to_design_list)
+
/// list of all surgeries by name, associated with their path.
GLOBAL_LIST_INIT(surgeries_list, init_surgeries())
+/// list of all surgery steps, associated by their path.
+GLOBAL_LIST_INIT(surgery_steps, init_subtypes_w_path_keys(/datum/surgery_step, list()))
+
/// Global list of all non-cooking related crafting recipes.
GLOBAL_LIST_EMPTY(crafting_recipes)
/// This is a global list of typepaths, these typepaths are atoms or reagents that are associated with crafting recipes.
@@ -80,3 +84,22 @@ GLOBAL_LIST_EMPTY(roundstart_station_borgcharger_areas)
/// List of area names of roundstart station mech rechargers, for the low charge/no charge mech screen alert tooltips.
GLOBAL_LIST_EMPTY(roundstart_station_mechcharger_areas)
+
+// List of organ typepaths that are not unit test-able, and shouldn't be spawned by some things, such as certain class prototypes.
+GLOBAL_LIST_INIT(prototype_organs, typecacheof(list(
+ /obj/item/organ,
+ /obj/item/organ/wings,
+ /obj/item/organ/wings/functional,
+ /obj/item/organ/wings/functional/moth,
+ /obj/item/organ/cyberimp,
+ /obj/item/organ/cyberimp/brain,
+ /obj/item/organ/cyberimp/mouth,
+ /obj/item/organ/cyberimp/arm,
+ /obj/item/organ/cyberimp/chest,
+ /obj/item/organ/cyberimp/eyes,
+ /obj/item/organ/alien,
+ /obj/item/organ/brain/dullahan,
+ /obj/item/organ/ears/dullahan,
+ /obj/item/organ/tongue/dullahan,
+ /obj/item/organ/eyes/dullahan,
+), only_root_path = TRUE))
diff --git a/code/_globalvars/lists/pipe_recipes.dm b/code/_globalvars/lists/pipe_recipes.dm
new file mode 100644
index 0000000000000..384248623bc1e
--- /dev/null
+++ b/code/_globalvars/lists/pipe_recipes.dm
@@ -0,0 +1,70 @@
+GLOBAL_LIST_INIT(atmos_pipe_recipes, list(
+ "Pipes" = list(
+ new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/smart, TRUE),
+ new /datum/pipe_info/pipe("Layer Adapter", /obj/machinery/atmospherics/pipe/layer_manifold, TRUE),
+ new /datum/pipe_info/pipe("Color Adapter", /obj/machinery/atmospherics/pipe/color_adapter, TRUE),
+ new /datum/pipe_info/pipe("Bridge Pipe", /obj/machinery/atmospherics/pipe/bridge_pipe, TRUE),
+ new /datum/pipe_info/pipe("Multi-Deck Adapter", /obj/machinery/atmospherics/pipe/multiz, FALSE),
+ ),
+ "Binary" = list(
+ new /datum/pipe_info/pipe("Manual Valve", /obj/machinery/atmospherics/components/binary/valve, TRUE),
+ new /datum/pipe_info/pipe("Digital Valve", /obj/machinery/atmospherics/components/binary/valve/digital, TRUE),
+ new /datum/pipe_info/pipe("Gas Pump", /obj/machinery/atmospherics/components/binary/pump, TRUE),
+ new /datum/pipe_info/pipe("Volume Pump", /obj/machinery/atmospherics/components/binary/volume_pump, TRUE),
+ new /datum/pipe_info/pipe("Passive Gate", /obj/machinery/atmospherics/components/binary/passive_gate, TRUE),
+ new /datum/pipe_info/pipe("Pressure Valve", /obj/machinery/atmospherics/components/binary/pressure_valve, TRUE),
+ new /datum/pipe_info/pipe("Temperature Gate", /obj/machinery/atmospherics/components/binary/temperature_gate, TRUE),
+ new /datum/pipe_info/pipe("Temperature Pump", /obj/machinery/atmospherics/components/binary/temperature_pump, TRUE),
+ ),
+ "Devices" = list(
+ new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/components/trinary/filter, TRUE),
+ new /datum/pipe_info/pipe("Gas Mixer", /obj/machinery/atmospherics/components/trinary/mixer, TRUE),
+ new /datum/pipe_info/pipe("Connector", /obj/machinery/atmospherics/components/unary/portables_connector, TRUE),
+ new /datum/pipe_info/pipe("Injector", /obj/machinery/atmospherics/components/unary/outlet_injector, TRUE),
+ new /datum/pipe_info/pipe("Scrubber", /obj/machinery/atmospherics/components/unary/vent_scrubber, TRUE),
+ new /datum/pipe_info/pipe("Unary Vent", /obj/machinery/atmospherics/components/unary/vent_pump, TRUE),
+ new /datum/pipe_info/pipe("Passive Vent", /obj/machinery/atmospherics/components/unary/passive_vent, TRUE),
+ new /datum/pipe_info/meter("Meter"),
+ ),
+ "Heat Exchange" = list(
+ new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/heat_exchanging/simple, FALSE),
+ new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold, FALSE),
+ new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, FALSE),
+ new /datum/pipe_info/pipe("Junction", /obj/machinery/atmospherics/pipe/heat_exchanging/junction, FALSE),
+ new /datum/pipe_info/pipe("Heat Exchanger", /obj/machinery/atmospherics/components/unary/heat_exchanger, FALSE),
+ )
+))
+
+GLOBAL_LIST_INIT(disposal_pipe_recipes, list(
+ "Disposal Pipes" = list(
+ new /datum/pipe_info/disposal("Pipe", /obj/structure/disposalpipe/segment, PIPE_BENDABLE),
+ new /datum/pipe_info/disposal("Junction", /obj/structure/disposalpipe/junction, PIPE_TRIN_M),
+ new /datum/pipe_info/disposal("Y-Junction", /obj/structure/disposalpipe/junction/yjunction),
+ new /datum/pipe_info/disposal("Sort Junction", /obj/structure/disposalpipe/sorting/mail, PIPE_TRIN_M),
+ new /datum/pipe_info/disposal("Rotator", /obj/structure/disposalpipe/rotator, PIPE_ONEDIR_FLIPPABLE),
+ new /datum/pipe_info/disposal("Trunk", /obj/structure/disposalpipe/trunk),
+ new /datum/pipe_info/disposal("Down Turn", /obj/structure/disposalpipe/trunk/multiz/down),
+ new /datum/pipe_info/disposal("Up Turn", /obj/structure/disposalpipe/trunk/multiz),
+ new /datum/pipe_info/disposal("Bin", /obj/machinery/disposal/bin, PIPE_ONEDIR),
+ new /datum/pipe_info/disposal("Outlet", /obj/structure/disposaloutlet),
+ new /datum/pipe_info/disposal("Chute", /obj/machinery/disposal/delivery_chute),
+ )
+))
+
+GLOBAL_LIST_INIT(transit_tube_recipes, list(
+ "Transit Tubes" = list(
+ new /datum/pipe_info/transit("Straight Tube", /obj/structure/c_transit_tube, PIPE_STRAIGHT),
+ new /datum/pipe_info/transit("Straight Tube with Crossing", /obj/structure/c_transit_tube/crossing, PIPE_STRAIGHT),
+ new /datum/pipe_info/transit("Curved Tube", /obj/structure/c_transit_tube/curved, PIPE_UNARY_FLIPPABLE),
+ new /datum/pipe_info/transit("Diagonal Tube", /obj/structure/c_transit_tube/diagonal, PIPE_STRAIGHT),
+ new /datum/pipe_info/transit("Diagonal Tube with Crossing", /obj/structure/c_transit_tube/diagonal/crossing, PIPE_STRAIGHT),
+ new /datum/pipe_info/transit("Junction", /obj/structure/c_transit_tube/junction, PIPE_UNARY_FLIPPABLE),
+ ),
+ "Station Equipment" = list(
+ new /datum/pipe_info/transit("Through Tube Station", /obj/structure/c_transit_tube/station, PIPE_STRAIGHT),
+ new /datum/pipe_info/transit("Terminus Tube Station", /obj/structure/c_transit_tube/station/reverse, PIPE_UNARY_FLIPPABLE),
+ new /datum/pipe_info/transit("Through Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser, PIPE_STRAIGHT),
+ new /datum/pipe_info/transit("Terminus Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser/reverse, PIPE_UNARY_FLIPPABLE),
+ new /datum/pipe_info/transit("Transit Tube Pod", /obj/structure/c_transit_tube_pod, PIPE_ONEDIR),
+ )
+))
diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm
index 825c217d055cc..5bd44e667f92d 100644
--- a/code/_globalvars/lists/quirks.dm
+++ b/code/_globalvars/lists/quirks.dm
@@ -118,7 +118,6 @@ GLOBAL_LIST_INIT(quirk_chipped_choice, list(
"GENUINE ID Appraisal Now!" = /obj/item/skillchip/appraiser,
"Le S48R4G3" = /obj/item/skillchip/sabrage,
"Integrated Intuitive Thinking and Judging" = /obj/item/skillchip/intj,
- "F0RC3 4DD1CT10N" = /obj/item/skillchip/drunken_brawler,
"\"Space Station 13: The Musical\"" = /obj/item/skillchip/musical,
"Mast-Angl-Er" = /obj/item/skillchip/master_angler,
"Kommand" = /obj/item/skillchip/big_pointer,
diff --git a/code/_globalvars/pipe_info.dm b/code/_globalvars/pipe_info.dm
new file mode 100644
index 0000000000000..5e0f279d314bc
--- /dev/null
+++ b/code/_globalvars/pipe_info.dm
@@ -0,0 +1,106 @@
+///Pipe info
+/datum/pipe_info
+ ///Name of this pipe
+ var/name
+ ///Icon state of this pipe
+ var/icon_state
+ ///Type path of this recipe
+ var/id = -1
+ /// see code/__DEFINES/pipe_construction.dm
+ var/dirtype = PIPE_BENDABLE
+ /// Is this pipe layer indenpendent
+ var/all_layers
+
+/datum/pipe_info/pipe/New(label, obj/machinery/atmospherics/path, use_five_layers)
+ name = label
+ id = path
+ all_layers = use_five_layers
+ icon_state = initial(path.pipe_state)
+ var/obj/item/pipe/c = initial(path.construction_type)
+ dirtype = initial(c.RPD_type)
+
+/**
+ * Get preview image of an pipe
+ * Arguments
+ *
+ * * selected_dir - the direction of the pipe to get preview of
+ * * selected - is this pipe meant to be highlighted in the UI
+ */
+/datum/pipe_info/proc/get_preview(selected_dir, selected = FALSE)
+ SHOULD_BE_PURE(TRUE)
+
+ var/list/dirs
+ switch(dirtype)
+ if(PIPE_STRAIGHT, PIPE_BENDABLE)
+ dirs = list("[NORTH]" = "Vertical", "[EAST]" = "Horizontal")
+ if(dirtype == PIPE_BENDABLE)
+ dirs += list("[NORTHWEST]" = "West to North", "[NORTHEAST]" = "North to East",
+ "[SOUTHWEST]" = "South to West", "[SOUTHEAST]" = "East to South")
+ if(PIPE_TRINARY)
+ dirs = list("[NORTH]" = "West South East", "[SOUTH]" = "East North West",
+ "[EAST]" = "North West South", "[WEST]" = "South East North")
+ if(PIPE_TRIN_M)
+ dirs = list("[NORTH]" = "North East South", "[SOUTHWEST]" = "North West South",
+ "[NORTHEAST]" = "South East North", "[SOUTH]" = "South West North",
+ "[WEST]" = "West North East", "[SOUTHEAST]" = "West South East",
+ "[NORTHWEST]" = "East North West", "[EAST]" = "East South West",)
+ if(PIPE_UNARY)
+ dirs = list("[NORTH]" = "North", "[SOUTH]" = "South", "[WEST]" = "West", "[EAST]" = "East")
+ if(PIPE_ONEDIR)
+ dirs = list("[SOUTH]" = name)
+ if(PIPE_UNARY_FLIPPABLE)
+ dirs = list("[NORTH]" = "North", "[EAST]" = "East", "[SOUTH]" = "South", "[WEST]" = "West",
+ "[NORTHEAST]" = "North Flipped", "[SOUTHEAST]" = "East Flipped", "[SOUTHWEST]" = "South Flipped", "[NORTHWEST]" = "West Flipped")
+ if(PIPE_ONEDIR_FLIPPABLE)
+ dirs = list("[SOUTH]" = name, "[SOUTHEAST]" = "[name] Flipped")
+
+ var/list/rows = list()
+ for(var/dir in dirs)
+ var/numdir = text2num(dir)
+ var/flipped = ((dirtype == PIPE_TRIN_M) || (dirtype == PIPE_UNARY_FLIPPABLE) || (dirtype == PIPE_ONEDIR_FLIPPABLE)) && (ISDIAGONALDIR(numdir))
+ var/is_variant_selected = selected && (!selected_dir ? FALSE : (dirtype == PIPE_ONEDIR ? TRUE : (numdir == selected_dir)))
+ rows += list(list(
+ "selected" = is_variant_selected,
+ "dir" = dir2text(numdir),
+ "dir_name" = dirs[dir],
+ "icon_state" = icon_state,
+ "flipped" = flipped,
+ ))
+
+ return rows
+
+//==============================================================================================
+
+///Meter pipe info
+/datum/pipe_info/meter
+ icon_state = "meter"
+ dirtype = PIPE_ONEDIR
+ all_layers = TRUE
+
+/datum/pipe_info/meter/New(label)
+ name = label
+
+//==============================================================================================
+
+///Disposal pipe info
+/datum/pipe_info/disposal/New(label, obj/path, dt=PIPE_UNARY)
+ name = label
+ id = path
+
+ icon_state = initial(path.icon_state)
+ if(ispath(path, /obj/structure/disposalpipe))
+ icon_state = "con[icon_state]"
+
+ dirtype = dt
+
+
+//==============================================================================================
+
+///Transient tube pipe info
+/datum/pipe_info/transit/New(label, obj/path, dt=PIPE_UNARY)
+ name = label
+ id = path
+ dirtype = dt
+ icon_state = initial(path.icon_state)
+ if(dt == PIPE_UNARY_FLIPPABLE)
+ icon_state = "[icon_state]_preview"
diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm
index 41c5b1a4f5375..99faa8ff2e1fd 100644
--- a/code/_globalvars/traits/_traits.dm
+++ b/code/_globalvars/traits/_traits.dm
@@ -9,6 +9,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
/atom = list(
"TRAIT_AI_PAUSED" = TRAIT_AI_PAUSED,
"TRAIT_BANNED_FROM_CARGO_SHUTTLE" = TRAIT_BANNED_FROM_CARGO_SHUTTLE,
+ "TRAIT_BEAUTY_APPLIED" = TRAIT_BEAUTY_APPLIED,
"TRAIT_BEING_SHOCKED" = TRAIT_BEING_SHOCKED,
"TRAIT_CATCH_AND_RELEASE" = TRAIT_CATCH_AND_RELEASE,
"TRAIT_COMMISSIONED" = TRAIT_COMMISSIONED,
@@ -21,6 +22,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_FISHING_SPOT" = TRAIT_FISHING_SPOT,
"TRAIT_FOOD_CHEF_MADE" = TRAIT_FOOD_CHEF_MADE,
"TRAIT_FOOD_FRIED" = TRAIT_FOOD_FRIED,
+ "TRAIT_GOT_DAMPENED" = TRAIT_GOT_DAMPENED,
"TRAIT_QUALITY_FOOD_INGREDIENT" = TRAIT_QUALITY_FOOD_INGREDIENT,
"TRAIT_FOOD_SILVER" = TRAIT_FOOD_SILVER,
"TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER,
@@ -32,11 +34,14 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_STICKERED" = TRAIT_STICKERED,
"TRAIT_UNHITTABLE_BY_PROJECTILES" = TRAIT_UNHITTABLE_BY_PROJECTILES,
"TRAIT_UNLINKABLE_FISHING_SPOT" = TRAIT_UNLINKABLE_FISHING_SPOT,
+ "TRAIT_TETHER_ATTACHED" = TRAIT_TETHER_ATTACHED,
),
/atom/movable = list(
"TRAIT_ACTIVE_STORAGE" = TRAIT_ACTIVE_STORAGE,
+ "TRAIT_AQUARIUM_PANEL_OPEN" = TRAIT_AQUARIUM_PANEL_OPEN,
"TRAIT_AREA_SENSITIVE" = TRAIT_AREA_SENSITIVE,
"TRAIT_ASHSTORM_IMMUNE" = TRAIT_ASHSTORM_IMMUNE,
+ "TRAIT_BIOELECTRIC_GENERATOR" = TRAIT_BIOELECTRIC_GENERATOR,
"TRAIT_BLOCKING_EXPLOSIVES" = TRAIT_BLOCKING_EXPLOSIVES,
"TRAIT_BOULDER_BREAKER" = TRAIT_BOULDER_BREAKER,
"TRAIT_CASTABLE_LOC" = TRAIT_CASTABLE_LOC,
@@ -44,13 +49,13 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_COMBAT_MODE_SKIP_INTERACTION" = TRAIT_COMBAT_MODE_SKIP_INTERACTION,
"TRAIT_DEL_ON_SPACE_DUMP" = TRAIT_DEL_ON_SPACE_DUMP,
"TRAIT_VALID_DNA_INFUSION" = TRAIT_VALID_DNA_INFUSION,
- "TRAIT_FISH_CASE_COMPATIBILE" = TRAIT_FISH_CASE_COMPATIBILE,
"TRAIT_FROZEN" = TRAIT_FROZEN,
"TRAIT_HAS_LABEL" = TRAIT_HAS_LABEL,
"TRAIT_HEARING_SENSITIVE" = TRAIT_HEARING_SENSITIVE,
"TRAIT_HYPERSPACED" = TRAIT_HYPERSPACED,
"TRAIT_IMMERSED" = TRAIT_IMMERSED,
"TRAIT_IRRADIATED" = TRAIT_IRRADIATED,
+ "TRAIT_IS_AQUARIUM" = TRAIT_IS_AQUARIUM,
"TRAIT_LAVA_IMMUNE" = TRAIT_LAVA_IMMUNE,
"TRAIT_MOVE_FLOATING" = TRAIT_MOVE_FLOATING,
"TRAIT_MOVE_FLYING" = TRAIT_MOVE_FLYING,
@@ -72,6 +77,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_SECLUDED_LOCATION" = TRAIT_SECLUDED_LOCATION,
"TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE,
"TRAIT_SPELLS_TRANSFER_TO_LOC" = TRAIT_SPELLS_TRANSFER_TO_LOC,
+ "TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH" = TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH,
"TRAIT_TELEKINESIS_CONTROLLED" = TRAIT_TELEKINESIS_CONTROLLED,
"TRAIT_UNDERFLOOR" = TRAIT_UNDERFLOOR,
"TRAIT_UNIQUE_IMMERSE" = TRAIT_UNIQUE_IMMERSE,
@@ -146,7 +152,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE,
"TRAIT_ALLOWED_HONORBOUND_ATTACK" = TRAIT_ALLOWED_HONORBOUND_ATTACK,
"TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING,
- "TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS,
"TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED,
"TRAIT_ANALGESIA" = TRAIT_ANALGESIA,
"TRAIT_ANGELIC" = TRAIT_ANGELIC,
@@ -200,6 +205,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_CLUMSY" = TRAIT_CLUMSY,
"TRAIT_COAGULATING" = TRAIT_COAGULATING,
"TRAIT_CORPSELOCKED" = TRAIT_CORPSELOCKED,
+ "TRAIT_COMBAT_MODE_LOCK" = TRAIT_COMBAT_MODE_LOCK,
"TRAIT_CRITICAL_CONDITION" = TRAIT_CRITICAL_CONDITION,
"TRAIT_CULT_HALO" = TRAIT_CULT_HALO,
"TRAIT_CURSED" = TRAIT_CURSED,
@@ -249,6 +255,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING,
"TRAIT_FAST_TYING" = TRAIT_FAST_TYING,
"TRAIT_FAT" = TRAIT_FAT,
+ "TRAIT_GLUTTON" = TRAIT_GLUTTON,
"TRAIT_FEARLESS" = TRAIT_FEARLESS,
"TRAIT_FENCE_CLIMBER" = TRAIT_FENCE_CLIMBER,
"TRAIT_FINGERPRINT_PASSTHROUGH" = TRAIT_FINGERPRINT_PASSTHROUGH,
@@ -280,6 +287,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_GREENTEXT_CURSED" = TRAIT_GREENTEXT_CURSED,
"TRAIT_GUNFLIP" = TRAIT_GUNFLIP,
"TRAIT_GUN_NATURAL" = TRAIT_GUN_NATURAL,
+ "TRAIT_HALLUCINATION_IMMUNE" = TRAIT_HALLUCINATION_IMMUNE,
"TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS,
"TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED,
"TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED,
@@ -345,6 +353,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_MOB_EATER" = TRAIT_MOB_EATER,
"TRAIT_MOB_HATCHED" = TRAIT_MOB_HATCHED,
"TRAIT_MOB_HIDE_HAPPINESS" = TRAIT_MOB_HIDE_HAPPINESS,
+ "TRAIT_MOB_MERGE_STACKS" = TRAIT_MOB_MERGE_STACKS,
"TRAIT_MOB_TIPPED" = TRAIT_MOB_TIPPED,
"TRAIT_MORBID" = TRAIT_MORBID,
"TRAIT_MULTIZ_SUIT_SENSORS" = TRAIT_MULTIZ_SUIT_SENSORS,
@@ -378,6 +387,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_NOSOFTCRIT" = TRAIT_NOSOFTCRIT,
"TRAIT_NO_AUGMENTS" = TRAIT_NO_AUGMENTS,
"TRAIT_NO_BLOOD_OVERLAY" = TRAIT_NO_BLOOD_OVERLAY,
+ "TRAIT_NO_DAMAGE_OVERLAY" = TRAIT_NO_DAMAGE_OVERLAY,
"TRAIT_NO_DEBRAIN_OVERLAY" = TRAIT_NO_DEBRAIN_OVERLAY,
"TRAIT_NO_DNA_COPY" = TRAIT_NO_DNA_COPY,
"TRAIT_NO_DNA_SCRAMBLE" = TRAIT_NO_DNA_SCRAMBLE,
@@ -421,6 +431,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_PASSTABLE" = TRAIT_PASSTABLE,
"TRAIT_PASSWINDOW" = TRAIT_PASSWINDOW,
"TRAIT_PERCEIVED_AS_CLOWN" = TRAIT_PERCEIVED_AS_CLOWN,
+ "TRAIT_PERCEPTUAL_TRAUMA_BYPASS" = TRAIT_PERCEPTUAL_TRAUMA_BYPASS,
"TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER,
"TRAIT_PERMANENTLY_MORTAL" = TRAIT_PERMANENTLY_MORTAL,
"TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER,
@@ -470,6 +481,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_SHAVED" = TRAIT_SHAVED,
"TRAIT_SHIFTY_EYES" = TRAIT_SHIFTY_EYES,
"TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE,
+ "TRAIT_SIGHT_BYPASS" = TRAIT_SIGHT_BYPASS,
"TRAIT_SIGN_LANG" = TRAIT_SIGN_LANG,
"TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS,
"TRAIT_SILICON_ACCESS" = TRAIT_SILICON_ACCESS,
@@ -574,9 +586,12 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_IGNORE_FIRE_PROTECTION" = TRAIT_IGNORE_FIRE_PROTECTION,
"TRAIT_LEFT_EYE_SCAR" = TRAIT_LEFT_EYE_SCAR,
"TRAIT_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR,
+ "TRAIT_SYSTEM_SHOCK" = TRAIT_SYSTEM_SHOCK, // DOPPLER EDIT ADDITION
+ "TRAIT_BAD_VIBES" = TRAIT_BAD_VIBES, // DOPPLER EDIT ADDITION
),
/obj/item = list(
"TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING,
+ "TRAIT_AQUARIUM_CONTENT" = TRAIT_AQUARIUM_CONTENT,
"TRAIT_BAIT_ALLOW_FISHING_DUD" = TRAIT_BAIT_ALLOW_FISHING_DUD,
"TRAIT_BAIT_UNCONSUMABLE" = TRAIT_BAIT_UNCONSUMABLE,
"TRAIT_BAKEABLE" = TRAIT_BAKEABLE,
@@ -586,6 +601,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_CONTRABAND_BLOCKER" = TRAIT_CONTRABAND_BLOCKER,
"TRAIT_CUSTOM_TAP_SOUND" = TRAIT_CUSTOM_TAP_SOUND,
"TRAIT_DANGEROUS_OBJECT" = TRAIT_DANGEROUS_OBJECT,
+ "TRAIT_FIREDOOR_OPENER" = TRAIT_FIREDOOR_OPENER,
"TRAIT_FISHING_BAIT" = TRAIT_FISHING_BAIT,
"TRAIT_FOOD_BBQ_GRILLED" = TRAIT_FOOD_BBQ_GRILLED,
"TRAIT_GERM_SENSITIVE" = TRAIT_GERM_SENSITIVE,
diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm
index 0a7eef38b742f..f61e96de0c82d 100644
--- a/code/_globalvars/traits/admin_tooling.dm
+++ b/code/_globalvars/traits/admin_tooling.dm
@@ -38,7 +38,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_AGEUSIA" = TRAIT_AGEUSIA,
"TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE,
"TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING,
- "TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS,
"TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED,
"TRAIT_ANOSMIA" = TRAIT_ANOSMIA,
"TRAIT_ANTENNAE" = TRAIT_ANTENNAE,
@@ -106,6 +105,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING,
"TRAIT_FAST_TYING" = TRAIT_FAST_TYING,
"TRAIT_FAT" = TRAIT_FAT,
+ "TRAIT_GLUTTON" = TRAIT_GLUTTON,
"TRAIT_FEARLESS" = TRAIT_FEARLESS,
"TRAIT_FENCE_CLIMBER" = TRAIT_FENCE_CLIMBER,
"TRAIT_FISH_EATER" = TRAIT_FISH_EATER,
@@ -333,6 +333,8 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_IGNORE_FIRE_PROTECTION" = TRAIT_IGNORE_FIRE_PROTECTION,
"TRAIT_LEFT_EYE_SCAR" = TRAIT_LEFT_EYE_SCAR,
"TRAIT_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR,
+ "TRAIT_SYSTEM_SHOCK" = TRAIT_SYSTEM_SHOCK, // DOPPLER EDIT ADDITION
+ "TRAIT_BAD_VIBES" = TRAIT_BAD_VIBES, // DOPPLER EDIT ADDITION
),
/obj/item = list(
"TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING,
diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm
index 71d8a81b397c3..562266f51c031 100644
--- a/code/_onclick/hud/action_button.dm
+++ b/code/_onclick/hud/action_button.dm
@@ -3,6 +3,7 @@
var/datum/hud/our_hud
var/actiontooltipstyle = ""
screen_loc = null
+ mouse_over_pointer = MOUSE_HAND_POINTER
/// The icon state of our active overlay, used to prevent re-applying identical overlays
var/active_overlay_icon_state
@@ -269,6 +270,7 @@
icon = 'icons/hud/64x16_actions.dmi'
icon_state = "screen_gen_palette"
screen_loc = ui_action_palette
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/datum/hud/our_hud
var/expanded = FALSE
/// Id of any currently running timers that set our color matrix
@@ -394,6 +396,7 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
/atom/movable/screen/palette_scroll
icon = 'icons/hud/screen_gen.dmi'
screen_loc = ui_palette_scroll
+ mouse_over_pointer = MOUSE_HAND_POINTER
/// How should we move the palette's actions?
/// Positive scrolls down the list, negative scrolls back
var/scroll_direction = 0
diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm
index aaad7457f6d3c..0a4cf277712b0 100644
--- a/code/_onclick/hud/ai.dm
+++ b/code/_onclick/hud/ai.dm
@@ -1,5 +1,6 @@
/atom/movable/screen/ai
icon = 'icons/hud/screen_ai.dmi'
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ai/Click()
if(isobserver(usr) || usr.incapacitated)
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 46e9d4898c8ed..7cab2074c5485 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -107,6 +107,8 @@
name = "Alert"
desc = "Something seems to have gone wrong with this alert, so report this bug please"
mouse_opacity = MOUSE_OPACITY_ICON
+ /// do we glow to represent we do stuff when clicked
+ var/clickable_glow = FALSE
var/timeout = 0 //If set to a number, this alert will clear itself after that many deciseconds
var/severity = 0
var/alerttooltipstyle = ""
@@ -116,6 +118,11 @@
/// Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master.
var/click_master = TRUE
+/atom/movable/screen/alert/Initialize(mapload, datum/hud/hud_owner)
+ . = ..()
+ if(clickable_glow)
+ add_filter("clickglow", 2, outline_filter(color = COLOR_GOLD, size = 1))
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/alert/MouseEntered(location,control,params)
. = ..()
@@ -237,6 +244,7 @@
name = "Mind Control"
desc = "Your mind has been hijacked! Click to view the mind control command."
icon_state = ALERT_MIND_CONTROL
+ clickable_glow = TRUE
var/command
/atom/movable/screen/alert/mind_control/Click()
@@ -250,6 +258,7 @@
desc = "Something got lodged into your flesh and is causing major bleeding. It might fall out with time, but surgery is the safest way. \
If you're feeling frisky, examine yourself and click the underlined item to pull the object out."
icon_state = ALERT_EMBEDDED_OBJECT
+ clickable_glow = TRUE
/atom/movable/screen/alert/embeddedobject/Click()
. = ..()
@@ -287,6 +296,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
name = "On Fire"
desc = "You're on fire. Stop, drop and roll to put the fire out or move to a vacuum area."
icon_state = "fire"
+ clickable_glow = TRUE
/atom/movable/screen/alert/fire/Click()
. = ..()
@@ -305,6 +315,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/atom/movable/screen/alert/give // information set when the give alert is made
icon_state = "default"
+ clickable_glow = TRUE
/// The offer we're linked to, yes this is suspiciously like a status effect alert
var/datum/status_effect/offering/offer
/// Additional text displayed in the description of the alert.
@@ -476,6 +487,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
name = "Succumb"
desc = "Shuffle off this mortal coil."
icon_state = ALERT_SUCCUMB
+ clickable_glow = TRUE
var/static/list/death_titles = list(
"Goodnight, Sweet Prince",
"Game Over, Man",
@@ -487,19 +499,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
"All Good Things Must End"
)
-/atom/movable/screen/alert/succumb/Initialize(mapload, datum/hud/hud_owner)
- . = ..()
- register_context()
-
-/atom/movable/screen/alert/succumb/add_context(atom/source, list/context, obj/item/held_item, mob/user)
- context[SCREENTIP_CONTEXT_LMB] = "Succumb With Last Words"
- context[SCREENTIP_CONTEXT_RMB] = "Succumb Silently"
- return CONTEXTUAL_SCREENTIP_SET
-
-#define FASTSUCCUMB_YES "Yes"
-#define FASTSUCCUMB_WAIT "Wait, I have last words!"
-#define FASTSUCCUMB_NO "No"
-
/atom/movable/screen/alert/succumb/Click(location, control, params)
. = ..()
if(!.)
@@ -510,17 +509,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
var/title = pick(death_titles)
- if(LAZYACCESS(params2list(params), RIGHT_CLICK))
- //Succumbing without a message
- var/choice = tgui_alert(living_owner, "Are you sure you want to succumb?", title, list(FASTSUCCUMB_YES, FASTSUCCUMB_WAIT, FASTSUCCUMB_NO))
- switch(choice)
- if(FASTSUCCUMB_NO, null)
- return
- if(FASTSUCCUMB_YES)
- living_owner.succumb()
- return
- //if(FASTSUCCUMB_WAIT), we continue to last words
-
//Succumbing with a message
var/last_whisper = tgui_input_text(usr, "Do you have any last words?", title, max_length = CHAT_MESSAGE_MAX_LENGTH, encode = FALSE) // saycode already handles sanitization
if(isnull(last_whisper))
@@ -529,9 +517,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
living_owner.say("#[last_whisper]")
living_owner.succumb(whispered = length(last_whisper) > 0)
-#undef FASTSUCCUMB_NO
-#undef FASTSUCCUMB_WAIT
-#undef FASTSUCCUMB_YES
//ALIENS
/atom/movable/screen/alert/alien_plas
@@ -811,6 +796,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
additional processing time to unlock more malfunction abilities."
icon_state = ALERT_HACKING_APC
timeout = 60 SECONDS
+ clickable_glow = TRUE
var/atom/target = null
/atom/movable/screen/alert/hackingapc/Click()
@@ -838,6 +824,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
desc = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!"
icon_state = "template"
timeout = 300
+ clickable_glow = TRUE
/atom/movable/screen/alert/revival/Click()
. = ..()
@@ -851,6 +838,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
desc = "This can be clicked on to perform an action."
icon_state = "template"
timeout = 30 SECONDS
+ clickable_glow = TRUE
/// Weakref to the target atom to use the action on
var/datum/weakref/target_ref
/// If we want to interact on click rather than jump/orbit
@@ -858,6 +846,8 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/atom/movable/screen/alert/notify_action/Click()
. = ..()
+ if(!.)
+ return
var/atom/target = target_ref?.resolve()
if(isnull(target) || !isobserver(owner) || target == owner)
@@ -1026,6 +1016,10 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
name = "Buckled"
desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed."
icon_state = ALERT_BUCKLED
+ clickable_glow = TRUE
+
+/atom/movable/screen/alert/restrained
+ clickable_glow = TRUE
/atom/movable/screen/alert/restrained/handcuffed
name = "Handcuffed"
@@ -1073,6 +1067,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
name = "Knotted Shoes"
desc = "Someone tied your shoelaces together! Click the alert or your shoes to undo the knot."
icon_state = ALERT_SHOES_KNOT
+ clickable_glow = TRUE
/atom/movable/screen/alert/shoes/Click()
. = ..()
@@ -1091,6 +1086,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
name = "Unpossess"
desc = "You are possessing an object. Click this alert to unpossess it."
icon_state = "buckled"
+ clickable_glow = TRUE
/atom/movable/screen/alert/unpossess_object/Click()
. = ..()
diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm
index 8f8193a50451e..7a876cf7911c6 100644
--- a/code/_onclick/hud/blob_overmind.dm
+++ b/code/_onclick/hud/blob_overmind.dm
@@ -1,6 +1,7 @@
/atom/movable/screen/blob
icon = 'icons/hud/blob.dmi'
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/blob/MouseEntered(location,control,params)
. = ..()
@@ -182,11 +183,11 @@
static_inventory += using
using = new /atom/movable/screen/blob/node_blob(null, src)
- using.screen_loc = ui_hand_position(2)
+ using.screen_loc = ui_hand_position(RIGHT_HANDS)
static_inventory += using
using = new /atom/movable/screen/blob/factory_blob(null, src)
- using.screen_loc = ui_hand_position(1)
+ using.screen_loc = ui_hand_position(LEFT_HANDS)
static_inventory += using
using = new /atom/movable/screen/blob/readapt_strain(null, src)
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index 91b5c9b8e2af8..43d90893d9afc 100644
--- a/code/_onclick/hud/fullscreen.dm
+++ b/code/_onclick/hud/fullscreen.dm
@@ -156,9 +156,33 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/fullscreen)
icon_state = "noise"
/atom/movable/screen/fullscreen/high
- icon = 'icons/hud/screen_gen.dmi'
- screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "druggy"
+ alpha = 255
+ plane = LIGHTING_PLANE
+ layer = LIGHTING_ABOVE_ALL + 1 //Infinity plus one (not actually)
+ blend_mode = BLEND_MULTIPLY
+
+/atom/movable/screen/fullscreen/high/update_for_view(client_view)
+
+ animate(src, flags = ANIMATION_END_NOW) //Stop all animations.
+
+ . = ..()
+
+ color = COLOR_MATRIX_IDENTITY //We convert it early to avoid a sudden weird jitter.
+ alpha = 0
+
+ animate(src, alpha = 255, time = 5 SECONDS) //Fade in.
+
+ addtimer(CALLBACK(src, PROC_REF(start_hue_rotation)), 5 SECONDS)
+
+/atom/movable/screen/fullscreen/high/proc/start_hue_rotation()
+ animate(src, color = color_matrix_rotate_hue(1), loop = -1, time = 2 SECONDS) //Start the loop.
+ var/step_precision = 18 //Larger is more precise rotations.
+ for(var/current_step in 1 to step_precision - 1) //We do the -1 here because 360 == 0 when it comes to angles.
+ animate(
+ color = color_matrix_rotate_hue(current_step * 360/step_precision),
+ time = 2 SECONDS,
+ )
/atom/movable/screen/fullscreen/color_vision
icon = 'icons/hud/screen_gen.dmi'
diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm
index 9f90076a3ac71..3ee08df77cb87 100644
--- a/code/_onclick/hud/ghost.dm
+++ b/code/_onclick/hud/ghost.dm
@@ -1,5 +1,6 @@
/atom/movable/screen/ghost
icon = 'icons/hud/screen_ghost.dmi'
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ghost/MouseEntered(location, control, params)
. = ..()
@@ -118,4 +119,3 @@
if (istype(O) && O.observetarget)
return
. = ..()
-
diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm
index ba1d8f4565e64..68a480d47f8f0 100644
--- a/code/_onclick/hud/guardian.dm
+++ b/code/_onclick/hud/guardian.dm
@@ -15,11 +15,11 @@
infodisplay += healths
using = new /atom/movable/screen/guardian/manifest(null, src)
- using.screen_loc = ui_hand_position(2)
+ using.screen_loc = ui_hand_position(RIGHT_HANDS)
static_inventory += using
using = new /atom/movable/screen/guardian/recall(null, src)
- using.screen_loc = ui_hand_position(1)
+ using.screen_loc = ui_hand_position(LEFT_HANDS)
static_inventory += using
using = new owner.toggle_button_type(null, src)
@@ -101,6 +101,7 @@
/atom/movable/screen/guardian
icon = 'icons/hud/guardian.dmi'
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/guardian/manifest
icon_state = "manifest"
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index f92bb4682e1c8..ab1e5fccfbb0d 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -151,8 +151,16 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
/datum/hud/proc/client_refresh(datum/source)
SIGNAL_HANDLER
- RegisterSignal(mymob.canon_client, COMSIG_CLIENT_SET_EYE, PROC_REF(on_eye_change))
- on_eye_change(null, null, mymob.canon_client.eye)
+ var/client/client = mymob.canon_client
+ if(client.rebuild_plane_masters)
+ var/new_relay_loc = (client.byond_version > 515) ? "1,1" : "CENTER"
+ for(var/group_key as anything in master_groups)
+ var/datum/plane_master_group/group = master_groups[group_key]
+ group.relay_loc = new_relay_loc
+ group.rebuild_plane_masters()
+ client.rebuild_plane_masters = FALSE
+ RegisterSignal(client, COMSIG_CLIENT_SET_EYE, PROC_REF(on_eye_change))
+ on_eye_change(null, null, client.eye)
/datum/hud/proc/clear_client(datum/source)
SIGNAL_HANDLER
@@ -198,6 +206,8 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
SIGNAL_HANDLER
update_parallax_pref() // If your eye changes z level, so should your parallax prefs
var/turf/eye_turf = get_turf(eye)
+ if(!eye_turf)
+ return
SEND_SIGNAL(src, COMSIG_HUD_Z_CHANGED, eye_turf.z)
var/new_offset = GET_TURF_PLANE_OFFSET(eye_turf)
if(current_plane_offset == new_offset)
@@ -497,7 +507,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
var/i = 1
for(var/atom/movable/screen/swap_hand/SH in static_inventory)
- SH.screen_loc = ui_swaphand_position(mymob,!(i % 2) ? 2: 1)
+ SH.screen_loc = ui_swaphand_position(mymob, IS_RIGHT_INDEX(i) ? RIGHT_HANDS : LEFT_HANDS)
i++
for(var/atom/movable/screen/human/equip/E in static_inventory)
E.screen_loc = ui_equip_position(mymob)
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 922241321ab91..50954584a0df2 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -4,6 +4,7 @@
/atom/movable/screen/human/toggle
name = "toggle"
icon_state = "toggle"
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/human/toggle/Click()
@@ -26,6 +27,7 @@
/atom/movable/screen/human/equip
name = "equip"
icon_state = "act_equip"
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/human/equip/Click()
if(ismecha(usr.loc)) // stops inventory actions in a mech
@@ -45,6 +47,7 @@
name = "current sting"
screen_loc = ui_lingstingdisplay
invisibility = INVISIBILITY_ABSTRACT
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ling/sting/Click()
if(isobserver(usr))
diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm
index b4092877a770a..01f79aa147684 100644
--- a/code/_onclick/hud/new_player.dm
+++ b/code/_onclick/hud/new_player.dm
@@ -118,8 +118,9 @@
screen_loc = "TOP,CENTER:-61"
/atom/movable/screen/lobby/button
+ mouse_over_pointer = MOUSE_HAND_POINTER
///Is the button currently enabled?
- var/enabled = TRUE
+ VAR_PROTECTED/enabled = TRUE
///Is the button currently being hovered over with the mouse?
var/highlighted = FALSE
///Should this button play the select sound?
@@ -182,6 +183,7 @@
return FALSE
enabled = status
update_appearance(UPDATE_ICON)
+ mouse_over_pointer = enabled ? MOUSE_HAND_POINTER : MOUSE_INACTIVE_POINTER
return TRUE
///Prefs menu
@@ -257,10 +259,10 @@
icon = 'icons/hud/lobby/join.dmi'
icon_state = "" //Default to not visible
base_icon_state = "join_game"
- enabled = FALSE
/atom/movable/screen/lobby/button/join/Initialize(mapload, datum/hud/hud_owner)
. = ..()
+ set_button_status(FALSE)
switch(SSticker.current_state)
if(GAME_STATE_PREGAME, GAME_STATE_STARTUP)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(show_join_button))
@@ -328,13 +330,13 @@
icon = 'icons/hud/lobby/observe.dmi'
icon_state = "observe_disabled"
base_icon_state = "observe"
- enabled = FALSE
/atom/movable/screen/lobby/button/observe/Initialize(mapload, datum/hud/hud_owner)
. = ..()
if(SSticker.current_state > GAME_STATE_STARTUP)
set_button_status(TRUE)
else
+ set_button_status(FALSE)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_PREGAME, PROC_REF(enable_observing))
/atom/movable/screen/lobby/button/observe/Click(location, control, params)
diff --git a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm
index acfa5ee274ca2..582253e0b926b 100644
--- a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm
+++ b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm
@@ -362,7 +362,7 @@
/atom/movable/screen/plane_master/camera_static/proc/eye_changed(datum/hud/source, atom/old_eye, atom/new_eye)
SIGNAL_HANDLER
- if(!isaicamera(new_eye))
+ if(!iscameramob(new_eye))
if(!force_hidden)
hide_plane(source.mymob)
return
diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm
index 3ca14979ebccf..f7c0551236c6c 100644
--- a/code/_onclick/hud/robot.dm
+++ b/code/_onclick/hud/robot.dm
@@ -1,5 +1,6 @@
/atom/movable/screen/robot
icon = 'icons/hud/screen_cyborg.dmi'
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/robot/module
name = "cyborg module"
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index efc7f1c3cfedf..b72924fdbe573 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -103,6 +103,7 @@
/atom/movable/screen/swap_hand
plane = HUD_PLANE
name = "swap hand"
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/swap_hand/Click()
// At this point in client Click() code we have passed the 1/10 sec check and little else
@@ -123,6 +124,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "navigate"
screen_loc = ui_navigate_menu
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/navigate/Click()
if(!isliving(usr))
@@ -141,6 +143,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "area_edit"
screen_loc = ui_building
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/area_creator/Click()
if(usr.incapacitated || (isobserver(usr) && !isAdminGhostAI(usr)))
@@ -156,6 +159,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "talk_wheel"
screen_loc = ui_language_menu
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/language_menu/Click()
usr.get_language_holder().open_language_menu(usr)
@@ -241,7 +245,7 @@
. = ..()
if(!handcuff_overlay)
- var/state = (!(held_index % 2)) ? "markus" : "gabrielle"
+ var/state = IS_RIGHT_INDEX(held_index) ? "markus" : "gabrielle"
handcuff_overlay = mutable_appearance('icons/hud/screen_gen.dmi', state)
if(!hud?.mymob)
@@ -257,7 +261,7 @@
. += blocked_overlay
if(held_index == hud.mymob.active_hand_index)
- . += (held_index % 2) ? "lhandactive" : "rhandactive"
+ . += IS_LEFT_INDEX(held_index) ? "lhandactive" : "rhandactive"
/atom/movable/screen/inventory/hand/Click(location, control, params)
// At this point in client Click() code we have passed the 1/10 sec check and little else
@@ -285,6 +289,7 @@
plane = ABOVE_HUD_PLANE
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "storage_close"
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/close/Initialize(mapload, datum/hud/hud_owner, new_master)
. = ..()
@@ -302,6 +307,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "act_drop"
plane = HUD_PLANE
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/drop/Click()
if(usr.stat == CONSCIOUS)
@@ -312,6 +318,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "combat_off"
screen_loc = ui_combat_toggle
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/combattoggle/Initialize(mapload, datum/hud/hud_owner)
. = ..()
@@ -358,6 +365,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "floor_change"
screen_loc = ui_floor_changer
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/vertical = FALSE
/atom/movable/screen/floor_changer/Click(location,control,params)
@@ -390,6 +398,7 @@
name = "run/walk toggle"
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "running"
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/mov_intent/Click()
toggle(usr)
@@ -415,6 +424,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "pull"
base_icon_state = "pull"
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/pull/Click()
if(isobserver(usr))
@@ -430,6 +440,7 @@
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "act_resist"
plane = HUD_PLANE
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/resist/Click()
if(isliving(usr))
@@ -442,6 +453,7 @@
icon_state = "act_rest"
base_icon_state = "act_rest"
plane = HUD_PLANE
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/rest/Click()
if(isliving(usr))
@@ -526,6 +538,7 @@
name = "throw/catch"
icon = 'icons/hud/screen_midnight.dmi'
icon_state = "act_throw_off"
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/throw_catch/Click()
if(iscarbon(usr))
@@ -536,6 +549,7 @@
name = "damage zone"
icon_state = "zone_sel"
screen_loc = ui_zonesel
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/overlay_icon = 'icons/hud/screen_gen.dmi'
var/static/list/hover_overlays_cache = list()
var/hovering
@@ -713,6 +727,7 @@
/atom/movable/screen/healthdoll
name = "health doll"
screen_loc = ui_healthdoll
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/healthdoll/Click()
if (iscarbon(usr))
@@ -810,6 +825,7 @@
name = "mood"
icon_state = "mood5"
screen_loc = ui_mood
+ mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/splash
icon = 'icons/blanks/blank_title.png'
@@ -859,6 +875,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/splash)
/atom/movable/screen/component_button
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/atom/movable/screen/parent
/atom/movable/screen/component_button/Initialize(mapload, atom/movable/screen/parent)
@@ -957,6 +974,10 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/splash)
state = HUNGER_STATE_FAT
return
+ if(HAS_TRAIT(hungry, TRAIT_GLUTTON))
+ state = HUNGER_STATE_HUNGRY // Can't get enough
+ return
+
switch(hungry.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
state = HUNGER_STATE_FULL
diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm
index 655cb3fcf9a40..5e9f8f5783bcc 100644
--- a/code/controllers/configuration/entries/game_options.dm
+++ b/code/controllers/configuration/entries/game_options.dm
@@ -438,6 +438,10 @@
min_val = 0
integer = FALSE // It is in hours, but just in case one wants to specify minutes.
+/// Will drones be restricted from interacting with the Supermatter and Atmospherics area?
+/datum/config_entry/flag/drone_area_interaction_restrict
+ default = TRUE
+
/datum/config_entry/flag/native_fov
/datum/config_entry/flag/disallow_title_music
diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm
index e1ed3284441f6..3648a1b564e8c 100644
--- a/code/controllers/configuration/entries/general.dm
+++ b/code/controllers/configuration/entries/general.dm
@@ -762,3 +762,11 @@
default = 100
min_val = 0
max_val = 100
+
+/// If admins with +DEBUG can initialize byond-tracy midround.
+/datum/config_entry/flag/allow_tracy_start
+ protection = CONFIG_ENTRY_LOCKED
+
+/// If admins with +DEBUG can queue byond-tracy to run the next round.
+/datum/config_entry/flag/allow_tracy_queue
+ protection = CONFIG_ENTRY_LOCKED
diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm
index f19d2a99e36d3..8332d9b113393 100644
--- a/code/controllers/subsystem/air.dm
+++ b/code/controllers/subsystem/air.dm
@@ -222,6 +222,7 @@ SUBSYSTEM_DEF(air)
cost_atoms = MC_AVERAGE(cost_atoms, TICK_DELTA_TO_MS(cached_cost))
resumed = FALSE
+
currentpart = SSAIR_PIPENETS
SStgui.update_uis(SSair) //Lightning fast debugging motherfucker
diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm
index 83c666de64ac4..e869f21c61560 100644
--- a/code/controllers/subsystem/blackbox.dm
+++ b/code/controllers/subsystem/blackbox.dm
@@ -88,7 +88,7 @@ SUBSYSTEM_DEF(blackbox)
for(var/player_key in GLOB.player_details)
var/datum/player_details/PD = GLOB.player_details[player_key]
- record_feedback("tally", "client_byond_version", 1, PD.byond_version)
+ record_feedback("tally", "client_byond_version", 1, PD.full_byond_version())
/datum/controller/subsystem/blackbox/Shutdown()
sealed = FALSE
diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm
index 7d01226b2cfde..115250104f008 100644
--- a/code/controllers/subsystem/dbcore.dm
+++ b/code/controllers/subsystem/dbcore.dm
@@ -384,12 +384,30 @@ SUBSYSTEM_DEF(dbcore)
return FALSE
return new /datum/db_query(connection, sql_query, arguments)
+/**
+ * Creates and executes a query without waiting for or tracking the results.
+ * Query is executed asynchronously (without blocking) and deleted afterwards - any results or errors are discarded.
+ *
+ * Arguments:
+ * * sql_query - The SQL query string to execute
+ * * arguments - List of arguments to pass to the query for parameter binding
+ * * allow_during_shutdown - If TRUE, allows query to be created during subsystem shutdown. Generally, only cleanup queries should set this.
+ */
+/datum/controller/subsystem/dbcore/proc/FireAndForget(sql_query, arguments, allow_during_shutdown = FALSE)
+ var/datum/db_query/query = NewQuery(sql_query, arguments, allow_during_shutdown)
+ if(!query)
+ return
+ ASYNC
+ query.Execute()
+ qdel(query)
+
/** QuerySelect
Run a list of query datums in parallel, blocking until they all complete.
* queries - List of queries or single query datum to run.
* warn - Controls rather warn_execute() or Execute() is called.
* qdel - If you don't care about the result or checking for errors, you can have the queries be deleted afterwards.
- This can be combined with invoke_async as a way of running queries async without having to care about waiting for them to finish so they can be deleted.
+ This can be combined with invoke_async as a way of running queries async without having to care about waiting for them to finish so they can be deleted,
+ however you should probably just use FireAndForget instead if it's just a single query.
*/
/datum/controller/subsystem/dbcore/proc/QuerySelect(list/queries, warn = FALSE, qdel = FALSE)
if (!islist(queries))
@@ -415,8 +433,6 @@ SUBSYSTEM_DEF(dbcore)
if (qdel)
qdel(query)
-
-
/*
Takes a list of rows (each row being an associated list of column => value) and inserts them via a single mass query.
Rows missing columns present in other rows will resolve to SQL NULL
diff --git a/code/controllers/subsystem/dynamic/dynamic.dm b/code/controllers/subsystem/dynamic/dynamic.dm
index a5196f56e8afb..fb690030d2b0b 100644
--- a/code/controllers/subsystem/dynamic/dynamic.dm
+++ b/code/controllers/subsystem/dynamic/dynamic.dm
@@ -576,7 +576,7 @@ SUBSYSTEM_DEF(dynamic)
/datum/controller/subsystem/dynamic/proc/post_setup(report)
for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules)
rule.candidates.Cut() // The rule should not use candidates at this point as they all are null.
- addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/controller/subsystem/dynamic/, execute_roundstart_rule), rule), rule.delay)
+ addtimer(CALLBACK(src, PROC_REF(execute_roundstart_rule), rule), rule.delay)
if (!CONFIG_GET(flag/no_intercept_report))
addtimer(CALLBACK(src, PROC_REF(send_intercept)), rand(waittime_l, waittime_h))
@@ -626,7 +626,7 @@ SUBSYSTEM_DEF(dynamic)
failed = TRUE //AFK client
if(!failed && L.stat)
if(HAS_TRAIT(L, TRAIT_SUICIDED)) //Suicider
- msg += "[L.name] ([L.key]), the [L.job] ([span_boldannounce("Suicide")])\n"
+ msg += "[L.name] ([L.key]), the [L.job] ([span_bolddanger("Suicide")])\n"
failed = TRUE //Disconnected client
if(!failed && (L.stat == UNCONSCIOUS || L.stat == HARD_CRIT))
msg += "[L.name] ([L.key]), the [L.job] (Dying)\n"
@@ -640,7 +640,7 @@ SUBSYSTEM_DEF(dynamic)
if(D.mind && D.mind.current == L)
if(L.stat == DEAD)
if(HAS_TRAIT(L, TRAIT_SUICIDED)) //Suicider
- msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_boldannounce("Suicide")])\n"
+ msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_bolddanger("Suicide")])\n"
continue //Disconnected client
else
msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Dead)\n"
@@ -649,7 +649,7 @@ SUBSYSTEM_DEF(dynamic)
if(D.can_reenter_corpse)
continue //Adminghost, or cult/wizard ghost
else
- msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_boldannounce("Ghosted")])\n"
+ msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_bolddanger("Ghosted")])\n"
continue //Ghosted while alive
var/concatenated_message = msg.Join()
diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm
index ffaf0c0744d29..3e4ff852ae0cc 100644
--- a/code/controllers/subsystem/economy.dm
+++ b/code/controllers/subsystem/economy.dm
@@ -30,7 +30,7 @@ SUBSYSTEM_DEF(economy)
var/list/bank_accounts_by_id = list()
/// A list of bank accounts indexed by their assigned job typepath.
var/list/bank_accounts_by_job = list()
- ///List of the departmental budget cards in existance.
+ ///List of the departmental budget cards in existence.
var/list/dep_cards = list()
/// A var that collects the total amount of credits owned in player accounts on station, reset and recounted on fire()
var/station_total = 0
diff --git a/code/controllers/subsystem/fluids.dm b/code/controllers/subsystem/fluids.dm
index 6b68ae717222a..2b4ce47295653 100644
--- a/code/controllers/subsystem/fluids.dm
+++ b/code/controllers/subsystem/fluids.dm
@@ -22,6 +22,7 @@ SUBSYSTEM_DEF(fluids)
wait = 0 // Will be autoset to whatever makes the most sense given the spread and effect waits.
flags = SS_KEEP_TIMING
runlevels = RUNLEVEL_GAME|RUNLEVEL_POSTGAME
+ init_order = INIT_ORDER_FLUIDS
priority = FIRE_PRIORITY_FLUIDS
// Fluid spread processing:
diff --git a/code/controllers/subsystem/ipintel.dm b/code/controllers/subsystem/ipintel.dm
index db397d514742f..3ae9cfab0c564 100644
--- a/code/controllers/subsystem/ipintel.dm
+++ b/code/controllers/subsystem/ipintel.dm
@@ -8,7 +8,7 @@ SUBSYSTEM_DEF(ipintel)
/// Cache for previously queried IP addresses and those stored in the database
var/list/datum/ip_intel/cached_queries = list()
/// The store for rate limiting
- var/list/rate_limit_minute
+ var/rate_limit_minute
/// The ip intel for a given address
/datum/ip_intel
diff --git a/code/controllers/subsystem/map_vote.dm b/code/controllers/subsystem/map_vote.dm
index 44aa82172f3f0..ced1e65e3a215 100644
--- a/code/controllers/subsystem/map_vote.dm
+++ b/code/controllers/subsystem/map_vote.dm
@@ -53,7 +53,7 @@ SUBSYSTEM_DEF(map_vote)
last_message_at = world.time
var/list/messages = args.Copy()
- to_chat(world, span_purple(examine_block("Map Vote\n \n[messages.Join("\n")]")))
+ to_chat(world, span_purple(examine_block("Map Vote\n [messages.Join("\n")]")))
/datum/controller/subsystem/map_vote/proc/finalize_map_vote(datum/vote/map_vote/map_vote)
if(already_voted)
@@ -74,14 +74,9 @@ SUBSYSTEM_DEF(map_vote)
send_map_vote_notice("Admin Override is in effect. Map will not be changed.", "Tallies are recorded and saved.")
return
- var/list/valid_maps = filter_cache_to_valid_maps()
- if(!length(valid_maps))
- send_map_vote_notice("No valid maps.")
- return
-
var/winner
var/winner_amount = 0
- for(var/map in valid_maps)
+ for(var/map in map_vote.choices)
if(!winner_amount)
winner = map
winner_amount = map_vote_cache[map]
@@ -98,7 +93,7 @@ SUBSYSTEM_DEF(map_vote)
messages += tally_printout
// do not reset tallies if only one map is even possible
- if(length(valid_maps) > 1)
+ if(length(map_vote.choices) > 1)
map_vote_cache[winner] = CONFIG_GET(number/map_vote_minimum_tallies)
write_cache()
update_tally_printout()
@@ -175,4 +170,4 @@ SUBSYSTEM_DEF(map_vote)
for(var/map_id in map_vote_cache)
var/datum/map_config/map = config.maplist[map_id]
data += "[map.map_name] - [map_vote_cache[map_id]]"
- tally_printout = examine_block("Current Tallies\n \n[data.Join("\n")]")
+ tally_printout = examine_block("Current Tallies\n [data.Join("\n")]")
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index 2eee9cbb0c371..328d05636d4bb 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -252,23 +252,23 @@ SUBSYSTEM_DEF(mapping)
// Generate mining ruins
var/list/lava_ruins = levels_by_trait(ZTRAIT_LAVA_RUINS)
if (lava_ruins.len)
- seedRuins(lava_ruins, CONFIG_GET(number/lavaland_budget), list(/area/lavaland/surface/outdoors/unexplored), themed_ruins[ZTRAIT_LAVA_RUINS], clear_below = TRUE, mineral_budget = 15, mineral_budget_update = OREGEN_PRESET_LAVALAND)
+ seedRuins(lava_ruins, CONFIG_GET(number/lavaland_budget), list(/area/lavaland/surface/outdoors/unexplored), themed_ruins[ZTRAIT_LAVA_RUINS], clear_below = TRUE, mineral_budget = 15, mineral_budget_update = OREGEN_PRESET_LAVALAND, ruins_type = ZTRAIT_LAVA_RUINS)
var/list/ice_ruins = levels_by_trait(ZTRAIT_ICE_RUINS)
if (ice_ruins.len)
// needs to be whitelisted for underground too so place_below ruins work
- seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE, mineral_budget = 4, mineral_budget_update = OREGEN_PRESET_TRIPLE_Z)
+ seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE, mineral_budget = 4, mineral_budget_update = OREGEN_PRESET_TRIPLE_Z, ruins_type = ZTRAIT_ICE_RUINS)
var/list/ice_ruins_underground = levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND)
if (ice_ruins_underground.len)
- seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE, mineral_budget = 21)
+ seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE, mineral_budget = 21, ruins_type = ZTRAIT_ICE_RUINS_UNDERGROUND)
// Generate deep space ruins
var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS)
if (space_ruins.len)
// Create a proportional budget by multiplying the amount of space ruin levels in the current map over the default amount
var/proportional_budget = round(CONFIG_GET(number/space_budget) * (space_ruins.len / DEFAULT_SPACE_RUIN_LEVELS))
- seedRuins(space_ruins, proportional_budget, list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS], mineral_budget = 0)
+ seedRuins(space_ruins, proportional_budget, list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS], mineral_budget = 0, ruins_type = ZTRAIT_SPACE_RUINS)
/// Sets up rivers, and things that behave like rivers. So lava/plasma rivers, and chasms
/// It is important that this happens AFTER generating mineral walls and such, since we rely on them for river logic
diff --git a/code/controllers/subsystem/movement/newtonian_movement.dm b/code/controllers/subsystem/movement/newtonian_movement.dm
index aeb03a576dae0..e4143669678b2 100644
--- a/code/controllers/subsystem/movement/newtonian_movement.dm
+++ b/code/controllers/subsystem/movement/newtonian_movement.dm
@@ -13,9 +13,10 @@ MOVEMENT_SUBSYSTEM_DEF(newtonian_movement)
return ..()
/datum/controller/subsystem/movement/newtonian_movement/fire(resumed = FALSE)
- . = ..()
- if (!resumed)
+ if(!resumed)
+ canonical_time = world.time
currentrun = processing.Copy()
+
//cache for sanic speed (lists are references anyways)
var/list/current_run = currentrun
@@ -29,3 +30,21 @@ MOVEMENT_SUBSYSTEM_DEF(newtonian_movement)
STOP_PROCESSING(src, thing)
if (MC_TICK_CHECK)
return
+
+ for(var/list/bucket_info as anything in sorted_buckets)
+ var/time = bucket_info[MOVEMENT_BUCKET_TIME]
+ if(time > canonical_time || MC_TICK_CHECK)
+ return
+ pour_bucket(bucket_info)
+
+/datum/controller/subsystem/movement/newtonian_movement/proc/fire_moveloop(datum/move_loop/loop)
+ // Loop isn't even running right now
+ if(!(loop.status & MOVELOOP_STATUS_QUEUED))
+ return
+ // Drop the loop, process it, and if its still valid - queue it again
+ dequeue_loop(loop)
+ loop.process()
+ if(QDELETED(loop))
+ return
+ loop.timer = world.time + loop.delay
+ queue_loop(loop)
diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm
index 70dc152b06df2..d95b3bff5388c 100644
--- a/code/controllers/subsystem/pathfinder.dm
+++ b/code/controllers/subsystem/pathfinder.dm
@@ -61,9 +61,9 @@ SUBSYSTEM_DEF(pathfinder)
currentmaps.len--
/// Initiates a pathfind. Returns true if we're good, FALSE if something's failed
-/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish)
+/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish)
var/datum/pathfind/jps/path = new()
- path.setup(caller, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling)
+ path.setup(requester, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling)
if(path.start())
active_pathing += path
return TRUE
@@ -71,21 +71,21 @@ SUBSYSTEM_DEF(pathfinder)
/// Initiates a swarmed pathfind. Returns TRUE if we're good, FALSE if something's failed
/// If a valid pathmap exists for the TARGET turf we'll use that, otherwise we have to build a new one
-/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish)
+/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish)
var/turf/target = get_turf(end)
- var/datum/can_pass_info/pass_info = new(caller, access)
+ var/datum/can_pass_info/pass_info = new(requester, access)
// If there's a map we can use already, use it
var/datum/path_map/valid_map = get_valid_map(pass_info, target, simulated_only, exclude, age, include_building = TRUE)
if(valid_map && valid_map.expand(max_distance))
- path_map_passalong(on_finish, get_turf(caller), mintargetdist, skip_first, valid_map)
+ path_map_passalong(on_finish, get_turf(requester), mintargetdist, skip_first, valid_map)
return TRUE
// Otherwise we're gonna make a new one, and turn it into a path for the callbacks passed into us
var/list/datum/callback/pass_in = list()
- pass_in += CALLBACK(GLOBAL_PROC, /proc/path_map_passalong, on_finish, get_turf(caller), mintargetdist, skip_first)
+ pass_in += CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(path_map_passalong), on_finish, get_turf(requester), mintargetdist, skip_first)
// And to allow subsequent calls to reuse the same map, we'll put a placeholder in the cache, and fill it up when the pathing finishes
var/datum/path_map/empty = new()
- empty.pass_info = new(caller, access)
+ empty.pass_info = new(requester, access)
empty.start = target
empty.pass_space = simulated_only
empty.avoid = exclude
@@ -133,9 +133,9 @@ SUBSYSTEM_DEF(pathfinder)
source_to_maps[target] -= same_target
/// Initiates a SSSP run. Returns true if we're good, FALSE if something's failed
-/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/caller, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish)
+/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/requester, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish)
var/datum/pathfind/sssp/path = new()
- path.setup(caller, access, source, max_distance, simulated_only, exclude, on_finish)
+ path.setup(requester, access, source, max_distance, simulated_only, exclude, on_finish)
if(path.start())
active_pathing += path
return TRUE
@@ -160,7 +160,7 @@ SUBSYSTEM_DEF(pathfinder)
/// Optionally takes a max age to accept (defaults to 0 seconds) and a minimum acceptable range
/// If include_building is true and we can only find a building path, we'll use that instead. tho we will wait for it to finish first
/datum/controller/subsystem/pathfinder/proc/get_valid_map(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE)
- // Walk all the maps that match our caller's turf OR our target's
+ // Walk all the maps that match our requester's turf OR our target's
// Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one
var/oldest_time = world.time - age
/// Backup return value used if no finished pathmaps are found
@@ -189,7 +189,7 @@ SUBSYSTEM_DEF(pathfinder)
/// Takes a set of pathfind info, returns all valid pathmaps that would work
/// Takes an optional minimum range arg
/datum/controller/subsystem/pathfinder/proc/get_valid_maps(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE)
- // Walk all the maps that match our caller's turf OR our target's
+ // Walk all the maps that match our requester's turf OR our target's
// Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one
var/list/valid_maps = list()
var/oldest_time = world.time - age
diff --git a/code/controllers/subsystem/processing/fishing.dm b/code/controllers/subsystem/processing/fishing.dm
index 477dbf35e51d2..dd4dc3775359b 100644
--- a/code/controllers/subsystem/processing/fishing.dm
+++ b/code/controllers/subsystem/processing/fishing.dm
@@ -19,10 +19,13 @@ PROCESSING_SUBSYSTEM_DEF(fishing)
cached_fish_icons = list()
cached_unknown_fish_icons = list()
fish_properties = list()
+ catchable_fish = list()
var/icon/questionmark = icon('icons/effects/random_spawners.dmi', "questionmark")
var/list/mark_dimension = get_icon_dimensions(questionmark)
- for(var/obj/item/fish/fish_type as anything in subtypesof(/obj/item/fish))
+ var/list/spawned_fish = list()
+ var/list/fish_subtypes = sortTim(subtypesof(/obj/item/fish), GLOBAL_PROC_REF(cmp_init_name_asc))
+ for(var/obj/item/fish/fish_type as anything in fish_subtypes)
var/list/fish_dimensions = get_icon_dimensions(fish_type::icon)
var/icon/fish_icon = icon(fish_type::icon, fish_type::icon_state, frame = 1, moving = FALSE)
cached_fish_icons[fish_type] = icon2base64(fish_icon)
@@ -34,7 +37,8 @@ PROCESSING_SUBSYSTEM_DEF(fishing)
unknown_icon.Blend(questionmark, ICON_OVERLAY, x = width, y = height)
cached_unknown_fish_icons[fish_type] = icon2base64(unknown_icon)
- var/obj/item/fish/fish = new fish_type(null, FALSE)
+ var/obj/item/fish/fish = new fish_type
+ spawned_fish += fish
var/list/properties = list()
fish_properties[fish_type] = properties
properties[FISH_PROPERTIES_FAV_BAIT] = fish.favorite_bait.Copy()
@@ -67,36 +71,35 @@ PROCESSING_SUBSYSTEM_DEF(fishing)
properties[FISH_PROPERTIES_BEAUTY_SCORE] = beauty_score
- qdel(fish)
-
- catchable_fish = list()
- var/list/all_catchables = list()
- for(var/source_type as anything in GLOB.preset_fish_sources)
- var/datum/fish_source/source = GLOB.preset_fish_sources[source_type]
- if(!(source.fish_source_flags & FISH_SOURCE_FLAG_SKIP_CATCHABLES))
- all_catchables |= source.fish_table
- for(var/thing in all_catchables)
- if(!ispath(thing, /obj/item/fish))
- continue
- var/obj/item/fish/fishie = thing
- var/fish_id = initial(fishie.fish_id)
+ var/fish_id
+ if(fish.fish_id_redirect_path)
+ var/obj/item/fish/other_path = fish.fish_id_redirect_path
+ if(!ispath(other_path, /obj/item/fish))
+ stack_trace("[fish.type] has a set 'fish_id_redirect_path' variable but it isn't a fish path but [other_path]")
+ continue
+ fish_id = initial(other_path.fish_id)
+ else
+ fish_id = fish.fish_id
if(!fish_id)
- stack_trace("[fishie] doesn't have a set 'fish_id' variable despite being a catchable fish")
+ stack_trace("[fish.type] doesn't have a set 'fish_id' variable despite being a catchable fish")
+ continue
+ if(fish.fish_id_redirect_path)
continue
if(catchable_fish[fish_id])
- stack_trace("[fishie] has a 'fish_id' value already assigned to [catchable_fish[fish_id]]. fish_id: [fish_id]")
+ stack_trace("[fish.type] has a 'fish_id' value already assigned to [catchable_fish[fish_id]]. fish_id: [fish_id]")
continue
- catchable_fish[fish_id] = fishie
+ catchable_fish[fish_id] = fish.type
///init the list of things lures can catch
lure_catchables = list()
- var/list/fish_types = subtypesof(/obj/item/fish)
for(var/lure_type in typesof(/obj/item/fishing_lure))
var/obj/item/fishing_lure/lure = new lure_type
lure_catchables[lure_type] = list()
- for(var/obj/item/fish/fish_type as anything in fish_types)
- if(lure.is_catchable_fish(fish_type, fish_properties[fish_type]))
- lure_catchables[lure_type] += fish_type
+ for(var/obj/item/fish/fish as anything in spawned_fish)
+ if(lure.is_catchable_fish(fish, fish_properties[fish.type]))
+ lure_catchables[lure_type] += fish.type
qdel(lure)
+ QDEL_LIST(spawned_fish)
+
return SS_INIT_SUCCESS
diff --git a/code/controllers/subsystem/processing/projectiles.dm b/code/controllers/subsystem/processing/projectiles.dm
index 48d465dd0fdaf..0124296a3a23b 100644
--- a/code/controllers/subsystem/processing/projectiles.dm
+++ b/code/controllers/subsystem/processing/projectiles.dm
@@ -3,21 +3,18 @@ PROCESSING_SUBSYSTEM_DEF(projectiles)
wait = 1
stat_tag = "PP"
flags = SS_NO_INIT|SS_TICKER
- var/global_max_tick_moves = 10
- var/global_pixel_speed = 2
- var/global_iterations_per_move = 16
-
-/datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed)
- global_pixel_speed = new_speed
- for(var/i in processing)
- var/obj/projectile/P = i
- if(istype(P)) //there's non projectiles on this too.
- P.set_pixel_speed(new_speed)
-
-/datum/controller/subsystem/processing/projectiles/vv_edit_var(var_name, var_value)
- switch(var_name)
- if(NAMEOF(src, global_pixel_speed))
- set_pixel_speed(var_value)
- return TRUE
- else
- return ..()
+ /*
+ * Maximum amount of pixels a projectile can pass per tick *unless* its a hitscan projectile.
+ * This prevents projectiles from turning into essentially hitscans if SSprojectiles starts chugging
+ * and projectiles accumulate a bunch of overtime they try to process next tick to fly through half the map.
+ * Shouldn't really be increased past 5 tiles per tick because this maxes out at 100 FPS (recommended as of now)
+ * and making a projectile faster than that will make it look jumpy because it'll be passing inconsistent
+ * amounts of pixels per tick.
+ */
+ var/max_pixels_per_tick = ICON_SIZE_ALL * 5
+ /*
+ * How many pixels a projectile with a speed value of 1 passes in a tick. Currently all speed values
+ * assume that 1 speed = 1 tile per decisecond, but this is a variable so that admins/debuggers can edit
+ * in order to debug projectile behavior by evenly slowing or speeding all of them up.
+ */
+ var/pixels_per_decisecond = ICON_SIZE_ALL
diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm
index 0199b7498cc5b..7e550e43e3cac 100644
--- a/code/controllers/subsystem/processing/quirks.dm
+++ b/code/controllers/subsystem/processing/quirks.dm
@@ -26,7 +26,8 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
list(/datum/quirk/photophobia, /datum/quirk/nyctophobia),
list(/datum/quirk/item_quirk/settler, /datum/quirk/freerunning),
list(/datum/quirk/numb, /datum/quirk/selfaware),
- list(/datum/quirk/empath, /datum/quirk/evil),
+ list(/datum/quirk/empath, /datum/quirk/bad_vibes), //DOPPLER EDIT ADDITION - Bad Vibes & Unholy Aura
+ list(/datum/quirk/item_quirk/spiritual, /datum/quirk/unholy), //DOPPLER EDIT ADDITION END
))
GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist())
diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm
index 7bb83fa133d50..9979a1a731262 100644
--- a/code/controllers/subsystem/research.dm
+++ b/code/controllers/subsystem/research.dm
@@ -171,7 +171,7 @@ SUBSYSTEM_DEF(research)
/datum/controller/subsystem/research/proc/initialize_all_techweb_designs(clearall = FALSE)
if(islist(techweb_designs) && clearall)
- item_to_design = null
+ item_to_design = list()
QDEL_LIST(techweb_designs)
var/list/returned = list()
for(var/path in subtypesof(/datum/design))
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index c4b667bdc26e3..11e23326464df 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -356,6 +356,13 @@ SUBSYSTEM_DEF(shuttle)
return TRUE
+/**
+ * Calls the emergency shuttle.
+ *
+ * Arguments:
+ * * user - The mob that called the shuttle.
+ * * call_reason - The reason the shuttle was called, which should be non-html-encoded text.
+ */
/datum/controller/subsystem/shuttle/proc/requestEvac(mob/user, call_reason)
if (!check_backup_emergency_shuttle())
return
diff --git a/code/controllers/subsystem/spatial_gridmap.dm b/code/controllers/subsystem/spatial_gridmap.dm
index 65bcb0ec365b0..d906de2dc7bcf 100644
--- a/code/controllers/subsystem/spatial_gridmap.dm
+++ b/code/controllers/subsystem/spatial_gridmap.dm
@@ -45,9 +45,9 @@
atmos_contents = dummy_list
/datum/spatial_grid_cell/Destroy(force)
- if(force)//the response to someone trying to qdel this is a right proper fuck you
+ if(!force)//the response to someone trying to qdel this is a right proper fuck you
stack_trace("dont try to destroy spatial grid cells without a good reason. if you need to do it use force")
- return
+ return QDEL_HINT_LETMELIVE
. = ..()
diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm
index cf158586ce497..9d33e977e2b7f 100644
--- a/code/controllers/subsystem/statpanel.dm
+++ b/code/controllers/subsystem/statpanel.dm
@@ -173,6 +173,24 @@ SUBSYSTEM_DEF(statpanels)
list("Failsafe Controller:", Failsafe.stat_entry(), text_ref(Failsafe)),
list("","")
)
+#if defined(MC_TAB_TRACY_INFO) || defined(SPACEMAN_DMM)
+ var/static/tracy_dll
+ var/static/tracy_present
+ if(isnull(tracy_dll))
+ tracy_dll = TRACY_DLL_PATH
+ tracy_present = fexists(tracy_dll)
+ if(tracy_present)
+ if(GLOB.tracy_initialized)
+ mc_data.Insert(2, list(list("byond-tracy:", "Active (reason: [GLOB.tracy_init_reason || "N/A"])")))
+ else if(GLOB.tracy_init_error)
+ mc_data.Insert(2, list(list("byond-tracy:", "Errored ([GLOB.tracy_init_error])")))
+ else if(fexists(TRACY_ENABLE_PATH))
+ mc_data.Insert(2, list(list("byond-tracy:", "Queued for next round")))
+ else
+ mc_data.Insert(2, list(list("byond-tracy:", "Inactive")))
+ else
+ mc_data.Insert(2, list(list("byond-tracy:", "[tracy_dll] not present")))
+#endif
for(var/datum/controller/subsystem/sub_system as anything in Master.subsystems)
mc_data[++mc_data.len] = list("\[[sub_system.state_letter()]][sub_system.name]", sub_system.stat_entry(), text_ref(sub_system))
mc_data[++mc_data.len] = list("Camera Net", "Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]", text_ref(GLOB.cameranet))
diff --git a/code/controllers/subsystem/tgui.dm b/code/controllers/subsystem/tgui.dm
index 9a566a14a70c3..548bf63cb6797 100644
--- a/code/controllers/subsystem/tgui.dm
+++ b/code/controllers/subsystem/tgui.dm
@@ -63,7 +63,7 @@ SUBSYSTEM_DEF(tgui)
* Returns null if pool was exhausted.
*
* required user mob
- * return datum/tgui
+ * return datum/tgui_window
*/
/datum/controller/subsystem/tgui/proc/request_pooled_window(mob/user)
if(!user.client)
diff --git a/code/datums/actions/items/beserk.dm b/code/datums/actions/items/beserk.dm
index 43e29dbd150cd..01183fd8e3f6e 100644
--- a/code/datums/actions/items/beserk.dm
+++ b/code/datums/actions/items/beserk.dm
@@ -7,14 +7,27 @@
overlay_icon_state = "bg_demon_border"
/datum/action/item_action/berserk_mode/Trigger(trigger_flags)
- if(istype(target, /obj/item/clothing/head/hooded/berserker))
- var/obj/item/clothing/head/hooded/berserker/berserk = target
- if(berserk.berserk_active)
+ . = ..()
+ if(!.)
+ return FALSE
+ var/obj/item/clothing/head/hooded/berserker/berserk = target
+ berserk.berserk_mode(owner)
+ return TRUE
+
+/datum/action/item_action/berserk_mode/IsAvailable(feedback = FALSE)
+ . = ..()
+ if(!.)
+ return FALSE
+ if(!istype(target, /obj/item/clothing/head/hooded/berserker))
+ return FALSE
+
+ var/obj/item/clothing/head/hooded/berserker/berserk = target
+ if(berserk.berserk_active)
+ if(feedback)
to_chat(owner, span_warning("You are already berserk!"))
- return
- if(berserk.berserk_charge < 100)
+ return FALSE
+ if(berserk.berserk_charge < 100)
+ if(feedback)
to_chat(owner, span_warning("You don't have a full charge."))
- return
- berserk.berserk_mode(owner)
- return
- return ..()
+ return FALSE
+ return TRUE
diff --git a/code/datums/actions/mobs/create_legion_turrets.dm b/code/datums/actions/mobs/create_legion_turrets.dm
index 71427893f43da..34a0c6852d6c7 100644
--- a/code/datums/actions/mobs/create_legion_turrets.dm
+++ b/code/datums/actions/mobs/create_legion_turrets.dm
@@ -78,8 +78,7 @@
return
//Now we generate the tracer.
var/angle = get_angle(our_turf, target_turf)
- var/datum/point/vector/V = new(our_turf.x, our_turf.y, our_turf.z, 0, 0, angle)
- generate_tracer_between_points(V, V.return_vector_after_increments(6), /obj/effect/projectile/tracer/legion/tracer, 0, shot_delay, 0, 0, 0, null)
+ our_turf.Beam(target_turf, 'icons/effects/beam.dmi', "blood_light", time = shot_delay)
playsound(src, 'sound/machines/airlock/airlockopen.ogg', 100, TRUE)
addtimer(CALLBACK(src, PROC_REF(fire_beam), angle), shot_delay)
@@ -105,11 +104,6 @@
hitscan = TRUE
projectile_piercing = ALL
-/// Used for the legion turret tracer.
-/obj/effect/projectile/tracer/legion/tracer
- icon = 'icons/effects/beam.dmi'
- icon_state = "blood_light"
-
/// Used for the legion turret beam.
/obj/effect/projectile/tracer/legion
icon = 'icons/effects/beam.dmi'
diff --git a/code/datums/actions/mobs/fire_breath.dm b/code/datums/actions/mobs/fire_breath.dm
index 11ad04fa0df20..e407dafd7cffe 100644
--- a/code/datums/actions/mobs/fire_breath.dm
+++ b/code/datums/actions/mobs/fire_breath.dm
@@ -91,7 +91,7 @@
/datum/action/cooldown/mob_cooldown/fire_breath/mass_fire
name = "Mass Fire"
button_icon = 'icons/effects/fire.dmi'
- button_icon_state = "1"
+ button_icon_state = "light"
desc = "Breathe flames in all directions."
cooldown_time = 10.5 SECONDS
click_to_activate = FALSE
diff --git a/code/datums/actions/mobs/projectileattack.dm b/code/datums/actions/mobs/projectileattack.dm
index 933f94d0025f3..8ac67bdecc493 100644
--- a/code/datums/actions/mobs/projectileattack.dm
+++ b/code/datums/actions/mobs/projectileattack.dm
@@ -49,7 +49,7 @@
if(!isnum(speed_multiplier))
speed_multiplier = projectile_speed_multiplier
our_projectile.speed *= speed_multiplier
- our_projectile.preparePixelProjectile(endloc, startloc, null, projectile_spread)
+ our_projectile.aim_projectile(endloc, startloc, null, projectile_spread)
our_projectile.firer = firer
if(target)
our_projectile.original = target
@@ -224,7 +224,7 @@
cooldown_time = 10 SECONDS
projectile_type = /obj/projectile/colossus/wendigo_shockwave
shot_angles = list(-20, -10, 0, 10, 20)
- projectile_speed_multiplier = 4
+ projectile_speed_multiplier = 0.25
/datum/action/cooldown/mob_cooldown/projectile_attack/shotgun_blast/colossus
@@ -378,7 +378,7 @@
if(enraged)
projectile_speed_multiplier = 1
else
- projectile_speed_multiplier = 1.5
+ projectile_speed_multiplier = 0.66
var/shots_per = 24
for(var/shoot_times in 1 to 8)
var/offset = shoot_times % 2
@@ -399,7 +399,7 @@
/datum/action/cooldown/mob_cooldown/projectile_attack/wave/attack_sequence(mob/living/firer, atom/target)
wendigo_scream(firer)
- var/shots_per = 7
+ var/shots_per = 6
var/difference = 360 / shots_per
var/wave_direction = pick(-1, 1)
switch(wave_direction)
@@ -407,9 +407,9 @@
projectile_type = /obj/projectile/colossus/wendigo_shockwave/wave/alternate
if(1)
projectile_type = /obj/projectile/colossus/wendigo_shockwave/wave
- for(var/shoot_times in 1 to 32)
+ for(var/shoot_times in 1 to 12)
for(var/shot in 1 to shots_per)
var/angle = shot * difference + shoot_times * 5 * wave_direction * -1
shoot_projectile(firer, target, angle, firer, null, null)
- SLEEP_CHECK_DEATH(2, firer)
+ SLEEP_CHECK_DEATH(0.6 SECONDS, firer)
SLEEP_CHECK_DEATH(3 SECONDS, firer)
diff --git a/code/datums/ai/basic_mobs/base_basic_controller.dm b/code/datums/ai/basic_mobs/base_basic_controller.dm
index eb1c38437e3be..d222cc1ef6d05 100644
--- a/code/datums/ai/basic_mobs/base_basic_controller.dm
+++ b/code/datums/ai/basic_mobs/base_basic_controller.dm
@@ -35,7 +35,7 @@
var/mob/living/living_pawn = pawn
if(!(ai_traits & CAN_ACT_WHILE_DEAD))
// Unroll for flags here
- if (ai_traits & CAN_ACT_IN_STASIS && (living_pawn.stat || INCAPACITATED_IGNORING(living_pawn, INCAPABLE_STASIS)))
+ if((ai_traits & CAN_ACT_IN_STASIS) && (living_pawn.stat || INCAPACITATED_IGNORING(living_pawn, INCAPABLE_STASIS)))
return AI_UNABLE_TO_RUN
if(IS_DEAD_OR_INCAP(living_pawn))
return AI_UNABLE_TO_RUN
diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm
index c2e9fe515c40f..33cc871fddcc7 100644
--- a/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm
+++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm
@@ -16,12 +16,6 @@
return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED
return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED
-/datum/ai_behavior/targeted_mob_ability/finish_action(datum/ai_controller/controller, succeeded, ability_key, target_key)
- . = ..()
- var/atom/target = controller.blackboard[target_key]
- if (QDELETED(target))
- controller.clear_blackboard_key(target_key)
-
/datum/ai_behavior/targeted_mob_ability/proc/get_ability_to_use(datum/ai_controller/controller, ability_key)
return controller.blackboard[ability_key]
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm b/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm
index 5d9841a524735..649a45d4cc7ac 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm
@@ -11,23 +11,24 @@
/// Disables AI after a certain amount of time spent with no target, you will have to enable the AI again somewhere else
/datum/ai_behavior/sleep_after_targetless_time
- /// Turn off AI if we spend this many seconds without a target, don't use the macro because seconds_per_tick is already in seconds
- var/time_to_wait = 10
+ /// Turn off AI if we spend this many seconds without a target
+ var/time_to_wait = 10 SECONDS
/datum/ai_behavior/sleep_after_targetless_time/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
- var/atom/target = controller.blackboard[target_key]
- if(QDELETED(target))
- return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED
- return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED
+ return (controller.blackboard_key_exists(target_key)) ? ( AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED) : ( AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED)
-/datum/ai_behavior/sleep_after_targetless_time/finish_action(datum/ai_controller/controller, succeeded, seconds_per_tick)
+/datum/ai_behavior/sleep_after_targetless_time/finish_action(datum/ai_controller/controller, succeeded, target_key)
. = ..()
if (!succeeded)
- controller.set_blackboard_key(BB_TARGETLESS_TIME, 0)
+ controller.clear_blackboard_key(BB_TARGETLESS_TIME)
return
- controller.add_blackboard_key(BB_TARGETLESS_TIME, seconds_per_tick)
- if (controller.blackboard[BB_TARGETLESS_TIME] > time_to_wait)
+
+ if (isnull(controller.blackboard[BB_TARGETLESS_TIME]))
+ controller.set_blackboard_key(BB_TARGETLESS_TIME, world.time + time_to_wait)
+
+ if (controller.blackboard[BB_TARGETLESS_TIME] < world.time)
enter_sleep(controller)
+ controller.clear_blackboard_key(BB_TARGETLESS_TIME)
/// Disables AI, override to do additional things or something else
/datum/ai_behavior/sleep_after_targetless_time/proc/enter_sleep(datum/ai_controller/controller)
diff --git a/code/datums/ai/generic/generic_behaviors.dm b/code/datums/ai/generic/generic_behaviors.dm
index 4d0fb51405044..d71508251b948 100644
--- a/code/datums/ai/generic/generic_behaviors.dm
+++ b/code/datums/ai/generic/generic_behaviors.dm
@@ -49,14 +49,8 @@
batman.visible_message(span_warning("[batman] gets a slightly too tight hug from [big_guy]!"), span_userdanger("You feel your body break as [big_guy] embraces you!"))
- if(iscarbon(batman))
- var/mob/living/carbon/carbon_batman = batman
- for(var/obj/item/bodypart/bodypart_to_break in carbon_batman.bodyparts)
- if(bodypart_to_break.body_zone == BODY_ZONE_HEAD)
- continue
- bodypart_to_break.receive_damage(brute = 15, wound_bonus = 35)
- else
- batman.adjustBruteLoss(150)
+ for(var/zone in GLOB.all_body_zones - BODY_ZONE_HEAD)
+ batman.apply_damage(15, BRUTE, zone, wound_bonus = 35)
return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED
diff --git a/code/datums/ai/idle_behaviors/idle_haunted.dm b/code/datums/ai/idle_behaviors/idle_haunted.dm
index 5784b5104f6b8..756adae931341 100644
--- a/code/datums/ai/idle_behaviors/idle_haunted.dm
+++ b/code/datums/ai/idle_behaviors/idle_haunted.dm
@@ -10,4 +10,6 @@
return
if(SPT_PROB(teleport_chance, seconds_per_tick))
playsound(item_pawn.loc, 'sound/items/haunted/ghostitemattack.ogg', 100, TRUE)
+ #ifndef UNIT_TESTS // hauntium teleports can cause mapping nearstation tests to fail if it teleports outside an area
do_teleport(item_pawn, get_turf(item_pawn), 4, channel = TELEPORT_CHANNEL_MAGIC)
+ #endif
diff --git a/code/datums/ai/monkey/monkey_behaviors.dm b/code/datums/ai/monkey/monkey_behaviors.dm
index 126c08daa1e8b..ef49de98823dd 100644
--- a/code/datums/ai/monkey/monkey_behaviors.dm
+++ b/code/datums/ai/monkey/monkey_behaviors.dm
@@ -4,11 +4,18 @@
/datum/ai_behavior/monkey_equip
behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH
-/datum/ai_behavior/monkey_equip/finish_action(datum/ai_controller/controller, success)
+/datum/ai_behavior/monkey_equip/setup(datum/ai_controller/controller, target_key)
+ . = ..()
+ var/obj/target = controller.blackboard[target_key]
+ if(QDELETED(target))
+ return FALSE
+ set_movement_target(controller, target)
+
+/datum/ai_behavior/monkey_equip/finish_action(datum/ai_controller/controller, success, target_key)
. = ..()
if(!success) //Don't try again on this item if we failed
- controller.set_blackboard_key_assoc(BB_MONKEY_BLACKLISTITEMS, controller.blackboard[BB_MONKEY_PICKUPTARGET], TRUE)
+ controller.set_blackboard_key_assoc(BB_MONKEY_BLACKLISTITEMS, controller.blackboard[target_key], TRUE)
controller.clear_blackboard_key(BB_MONKEY_PICKUPTARGET)
@@ -50,9 +57,8 @@
return FALSE
/datum/ai_behavior/monkey_equip/ground
- required_distance = 0
-/datum/ai_behavior/monkey_equip/ground/perform(seconds_per_tick, datum/ai_controller/controller)
+/datum/ai_behavior/monkey_equip/ground/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
. = ..()
if(equip_item(controller))
return . | AI_BEHAVIOR_SUCCEEDED
@@ -60,7 +66,7 @@
/datum/ai_behavior/monkey_equip/pickpocket
-/datum/ai_behavior/monkey_equip/pickpocket/perform(seconds_per_tick, datum/ai_controller/controller)
+/datum/ai_behavior/monkey_equip/pickpocket/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
. = ..()
if(controller.blackboard[BB_MONKEY_PICKPOCKETING]) //We are pickpocketing, don't do ANYTHING!!!!
return
@@ -75,8 +81,6 @@
finish_action(controller, FALSE)
return
-
-
victim.visible_message(span_warning("[living_pawn] starts trying to take [target] from [victim]!"), span_danger("[living_pawn] tries to take [target]!"))
controller.set_blackboard_key(BB_MONKEY_PICKPOCKETING, TRUE)
@@ -125,7 +129,7 @@
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
/datum/ai_behavior/monkey_attack_mob
- behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration
+ behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION //performs to increase frustration
/datum/ai_behavior/monkey_attack_mob/setup(datum/ai_controller/controller, target_key)
. = ..()
@@ -134,104 +138,76 @@
/datum/ai_behavior/monkey_attack_mob/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
var/mob/living/target = controller.blackboard[target_key]
var/mob/living/living_pawn = controller.pawn
+ var/datum/targeting_strategy/strategy = GET_TARGETING_STRATEGY(controller.blackboard[BB_TARGETING_STRATEGY])
- if(!target || target.stat != CONSCIOUS) //Target == owned
+ if(QDELETED(target) || !strategy.can_attack(living_pawn, target)) //Target == owned
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
- if(!isturf(target.loc) || IS_DEAD_OR_INCAP(living_pawn)) // Check if they're a valid target
- return AI_BEHAVIOR_DELAY
// check if target has a weapon
- var/obj/item/W
- for(var/obj/item/I in target.held_items)
- if(!(I.item_flags & ABSTRACT))
- W = I
+ var/holding_weapon
+ for(var/obj/item/potential_weapon in target.held_items)
+ if(!(potential_weapon.item_flags & ABSTRACT))
+ holding_weapon = potential_weapon
break
- // if the target has a weapon, chance to disarm them
- var/perform_flags = NONE
- if(W && SPT_PROB(MONKEY_ATTACK_DISARM_PROB, seconds_per_tick))
- perform_flags = monkey_attack(controller, target, seconds_per_tick, TRUE)
- else
- perform_flags = monkey_attack(controller, target, seconds_per_tick, FALSE)
- return AI_BEHAVIOR_DELAY | perform_flags
+ var/attack_results = monkey_attack(controller, target, seconds_per_tick, holding_weapon && SPT_PROB(MONKEY_ATTACK_DISARM_PROB, seconds_per_tick), holding_weapon)
+
+ if(!attack_results || controller.blackboard[BB_MONKEY_AGGRESSIVE])
+ return AI_BEHAVIOR_DELAY
+
+ //check if we can de-aggro on the enemy...
+ var/hatred_value = controller.blackboard[BB_MONKEY_ENEMIES][target]
+
+ if(isnull(hatred_value))
+ hatred_value = 1
+ controller.set_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, hatred_value)
+
+ if(!SPT_PROB(MONKEY_HATRED_REDUCTION_PROB, seconds_per_tick))
+ return AI_BEHAVIOR_DELAY
+
+ //we decrease our hatred value to them by 1
+ hatred_value--
+ if(hatred_value <= 0)
+ controller.remove_thing_from_blackboard_key(BB_MONKEY_ENEMIES, target)
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
+
+ controller.set_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, hatred_value)
+ return AI_BEHAVIOR_DELAY
/datum/ai_behavior/monkey_attack_mob/finish_action(datum/ai_controller/controller, succeeded, target_key)
. = ..()
- var/mob/living/living_pawn = controller.pawn
controller.clear_blackboard_key(target_key)
- if(QDELETED(living_pawn)) // pawn can be null at this point
- return
- GLOB.move_manager.stop_looping(living_pawn)
/// attack using a held weapon otherwise bite the enemy, then if we are angry there is a chance we might calm down a little
-/datum/ai_behavior/monkey_attack_mob/proc/monkey_attack(datum/ai_controller/controller, mob/living/target, seconds_per_tick, disarm)
+/datum/ai_behavior/monkey_attack_mob/proc/monkey_attack(datum/ai_controller/controller, mob/living/target, seconds_per_tick, disarm, holding_weapon)
var/mob/living/living_pawn = controller.pawn
if(living_pawn.next_move > world.time)
- return NONE
-
- living_pawn.changeNext_move(CLICK_CD_MELEE) //We play fair
-
- var/obj/item/weapon = locate(/obj/item) in living_pawn.held_items
-
- living_pawn.face_atom(target)
-
- living_pawn.set_combat_mode(TRUE)
-
- if(isnull(controller.blackboard[BB_MONKEY_GUN_WORKED]))
- controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, TRUE)
-
- // attack with weapon if we have one
- if(living_pawn.CanReach(target, weapon))
- if(weapon)
- weapon.melee_attack_chain(living_pawn, target)
- else
- controller.ai_interact(target = target, modifiers = disarm ? list(RIGHT_CLICK = TRUE) : null)
- controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, TRUE) // We reset their memory of the gun being 'broken' if they accomplish some other attack
- else if(weapon)
- var/atom/real_target = target
- if(prob(10)) // Artificial miss
- real_target = pick(oview(2, target))
-
- var/obj/item/gun/gun = locate() in living_pawn.held_items
- var/can_shoot = gun?.can_shoot() || FALSE
- if(gun && controller.blackboard[BB_MONKEY_GUN_WORKED] && prob(95))
- // We attempt to attack even if we can't shoot so we get the effects of pulling the trigger
- gun.interact_with_atom(real_target, living_pawn)
- controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, can_shoot ? TRUE : prob(80)) // Only 20% likely to notice it didn't work
- if(can_shoot)
- controller.set_blackboard_key(BB_MONKEY_GUN_NEURONS_ACTIVATED, TRUE)
- else
- living_pawn.throw_item(real_target)
- controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, TRUE) // 'worked'
-
- // no de-aggro
- if(controller.blackboard[BB_MONKEY_AGGRESSIVE])
- return NONE
-
- // we've queued up a monkey attack on a mob which isn't already an enemy, so give them 1 threat to start
- // note they might immediately reduce threat and drop from the list.
- // this is fine, we're just giving them a love tap then leaving them alone.
- // unless they fight back, then we retaliate
-
- // Some mobs delete on death. If the target is no longer alive, go back to idle
- if(QDELETED(target))
- finish_action(controller, TRUE)
- return
+ return FALSE
- if(isnull(controller.blackboard[BB_MONKEY_ENEMIES][target]))
- controller.set_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, 1)
+ //are we holding a gun? can we shoot it? if so, FIRE
+ var/obj/item/gun/gun_to_shoot = locate() in living_pawn.held_items
+ if(gun_to_shoot?.can_shoot())
+ if(gun_to_shoot != living_pawn.get_active_held_item())
+ living_pawn.swap_hand(living_pawn.get_inactive_hand_index())
+ controller.ai_interact(target = target, combat_mode = TRUE)
+ return TRUE
- /// mob refs are uids, so this is safe
- if(SPT_PROB(MONKEY_HATRED_REDUCTION_PROB, seconds_per_tick))
- controller.add_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, -1)
+ //look for any potential weapons we're holding
+ var/obj/item/potential_weapon = locate() in living_pawn.held_items
+ if(!living_pawn.CanReach(target, potential_weapon))
+ return FALSE
- // if we are not angry at our target, go back to idle
- if(controller.blackboard[BB_MONKEY_ENEMIES][target] <= 0)
- controller.remove_thing_from_blackboard_key(BB_MONKEY_ENEMIES, target)
- if(controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] == target)
- return AI_BEHAVIOR_SUCCEEDED
- return NONE
+ if(isnull(potential_weapon))
+ controller.ai_interact(target = target, modifiers = disarm ? list(RIGHT_CLICK = TRUE) : null, combat_mode = TRUE)
+ if(disarm && !isnull(holding_weapon) && controller.blackboard[BB_MONKEY_BLACKLISTITEMS][holding_weapon])
+ controller.remove_thing_from_blackboard_key(BB_MONKEY_BLACKLISTITEMS, holding_weapon) //lets try to pickpocket it again!
+ return TRUE
+
+ if(potential_weapon != living_pawn.get_active_held_item())
+ living_pawn.swap_hand(living_pawn.get_inactive_hand_index())
+ controller.ai_interact(target = target, combat_mode = TRUE)
+ return TRUE
/datum/ai_behavior/disposal_mob
behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration
diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm
index 0074d206983b3..4c778f6612203 100644
--- a/code/datums/ai/monkey/monkey_controller.dm
+++ b/code/datums/ai/monkey/monkey_controller.dm
@@ -15,6 +15,7 @@ have ways of interacting with a specific mob and control it.
/datum/ai_planning_subtree/monkey_shenanigans,
)
blackboard = list(
+ BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/monkey,
BB_MONKEY_AGGRESSIVE = FALSE,
BB_MONKEY_BEST_FORCE_FOUND = 0,
BB_MONKEY_ENEMIES = list(),
@@ -22,12 +23,18 @@ have ways of interacting with a specific mob and control it.
BB_MONKEY_PICKPOCKETING = FALSE,
BB_MONKEY_DISPOSING = FALSE,
BB_MONKEY_GUN_NEURONS_ACTIVATED = FALSE,
- BB_MONKEY_GUN_WORKED = TRUE,
BB_SONG_LINES = MONKEY_SONG,
BB_RESISTING = FALSE,
)
idle_behavior = /datum/idle_behavior/idle_monkey
+/datum/targeting_strategy/basic/monkey
+
+/datum/targeting_strategy/basic/monkey/faction_check(datum/ai_controller/controller, mob/living/living_mob, mob/living/the_target)
+ if(controller.blackboard[BB_MONKEY_ENEMIES][the_target])
+ return FALSE
+ return ..()
+
/datum/ai_controller/monkey/process(seconds_per_tick)
var/mob/living/living_pawn = src.pawn
@@ -164,11 +171,10 @@ have ways of interacting with a specific mob and control it.
return FALSE
set_blackboard_key(BB_MONKEY_PICKUPTARGET, weapon)
- set_movement_target(type, weapon)
if(pickpocket)
- queue_behavior(/datum/ai_behavior/monkey_equip/pickpocket)
+ queue_behavior(/datum/ai_behavior/monkey_equip/pickpocket, BB_MONKEY_PICKUPTARGET)
else
- queue_behavior(/datum/ai_behavior/monkey_equip/ground)
+ queue_behavior(/datum/ai_behavior/monkey_equip/ground, BB_MONKEY_PICKUPTARGET)
return TRUE
///Reactive events to being hit
diff --git a/code/datums/ai/monkey/monkey_subtrees.dm b/code/datums/ai/monkey/monkey_subtrees.dm
index 572eeb6b56e92..1210fe44ba11f 100644
--- a/code/datums/ai/monkey/monkey_subtrees.dm
+++ b/code/datums/ai/monkey/monkey_subtrees.dm
@@ -53,6 +53,8 @@
if(controller.blackboard[BB_MONKEY_RECRUIT_COOLDOWN] < world.time)
controller.queue_behavior(/datum/ai_behavior/recruit_monkeys, BB_MONKEY_CURRENT_ATTACK_TARGET)
+ return
+
controller.queue_behavior(/datum/ai_behavior/battle_screech/monkey)
controller.queue_behavior(/datum/ai_behavior/monkey_attack_mob, BB_MONKEY_CURRENT_ATTACK_TARGET)
return SUBTREE_RETURN_FINISH_PLANNING
diff --git a/code/datums/ai/movement/_ai_movement.dm b/code/datums/ai/movement/_ai_movement.dm
index 33b7e4e214f6b..1e27b33b2dbd9 100644
--- a/code/datums/ai/movement/_ai_movement.dm
+++ b/code/datums/ai/movement/_ai_movement.dm
@@ -28,29 +28,32 @@
/datum/ai_movement/proc/reset_pathing_failures(datum/ai_controller/controller)
controller.consecutive_pathing_attempts = 0
-///Should the movement be allowed to happen? return TRUE if it can, FALSE otherwise
/datum/ai_movement/proc/allowed_to_move(datum/move_loop/source)
SHOULD_BE_PURE(TRUE)
var/atom/movable/pawn = source.moving
var/datum/ai_controller/controller = source.extra_info
- var/can_move = TRUE
if((controller.ai_traits & STOP_MOVING_WHEN_PULLED) && pawn.pulledby) //Need to store more state. Annoying.
- can_move = FALSE
+ return FALSE
if(!isturf(pawn.loc)) //No moving if not on a turf
- can_move = FALSE
+ return FALSE
if(isliving(pawn))
var/mob/living/pawn_mob = pawn
if(!(pawn_mob.mobility_flags & MOBILITY_MOVE))
- can_move = FALSE
+ return FALSE
+ // Bandaid fix: AI controllers don't call /Process_Grab because it's a client proc,
+ // and thus, we need to check that grabbed mobs cuffed/crit can't move
+ // That proc should probably be moved onto the mob instead of clients
+ if(INCAPACITATED_IGNORING(pawn_mob, INCAPABLE_STASIS) && pawn.pulledby)
+ return FALSE
if(HAS_TRAIT(pawn, TRAIT_NO_TRANSFORM))
- can_move = FALSE
+ return FALSE
- return can_move
+ return TRUE
///Anything to do before moving; any checks if the pawn should be able to move should be placed in allowed_to_move() and called by this proc
/datum/ai_movement/proc/pre_move(datum/move_loop/source)
diff --git a/code/datums/ai/movement/ai_movement_basic_avoidance.dm b/code/datums/ai/movement/ai_movement_basic_avoidance.dm
index ac231e075ed14..6659da244f3da 100644
--- a/code/datums/ai/movement/ai_movement_basic_avoidance.dm
+++ b/code/datums/ai/movement/ai_movement_basic_avoidance.dm
@@ -14,10 +14,10 @@
RegisterSignal(loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(post_move))
/datum/ai_movement/basic_avoidance/allowed_to_move(datum/move_loop/has_target/dist_bound/source)
- . = ..()
var/turf/target_turf = get_step_towards(source.moving, source.target)
if(!target_turf?.can_cross_safely(source.moving))
return FALSE
+ return ..()
/// Move immediately and don't update our facing
/datum/ai_movement/basic_avoidance/backstep
diff --git a/code/datums/ai/movement/ai_movement_dumb.dm b/code/datums/ai/movement/ai_movement_dumb.dm
index 2de85046a941f..001501bcbd93d 100644
--- a/code/datums/ai/movement/ai_movement_dumb.dm
+++ b/code/datums/ai/movement/ai_movement_dumb.dm
@@ -12,7 +12,7 @@
RegisterSignal(loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(post_move))
/datum/ai_movement/dumb/allowed_to_move(datum/move_loop/has_target/source)
- . = ..()
var/turf/target_turf = get_step_towards(source.moving, source.target)
if(!target_turf?.can_cross_safely(source.moving))
return FALSE
+ return ..()
diff --git a/code/datums/ai/movement/ai_movement_jps.dm b/code/datums/ai/movement/ai_movement_jps.dm
index b4c4fe1a28aa8..3781dd7f5dc79 100644
--- a/code/datums/ai/movement/ai_movement_jps.dm
+++ b/code/datums/ai/movement/ai_movement_jps.dm
@@ -16,6 +16,7 @@
current_movement_target,
delay,
repath_delay = 0.5 SECONDS,
+ simulated_only = !HAS_TRAIT(controller.pawn, TRAIT_SPACEWALK),
max_path_length = maximum_length,
minimum_distance = controller.get_minimum_distance(),
access = controller.get_access(),
@@ -51,7 +52,7 @@
/datum/ai_movement/jps/bot/travel_to_beacon
maximum_length = AI_BOT_PATH_LENGTH
- max_pathing_attempts = 20
+ max_pathing_attempts = 10
/datum/ai_movement/jps/modsuit
maximum_length = MOD_AI_RANGE
diff --git a/code/datums/bodypart_overlays/simple_bodypart_overlay.dm b/code/datums/bodypart_overlays/simple_bodypart_overlay.dm
index 78aa80179f46b..5bdc757550940 100644
--- a/code/datums/bodypart_overlays/simple_bodypart_overlay.dm
+++ b/code/datums/bodypart_overlays/simple_bodypart_overlay.dm
@@ -27,6 +27,7 @@
///bags drawn beneath the eyes
/datum/bodypart_overlay/simple/bags
+ icon = 'modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi' // DOPPLER EDIT - redirect to overwrite to make these less dark
icon_state = "bags"
draw_color = COLOR_WEBSAFE_DARK_GRAY
layers = EXTERNAL_ADJACENT
diff --git a/code/datums/bodypart_overlays/texture_bodypart_overlay.dm b/code/datums/bodypart_overlays/texture_bodypart_overlay.dm
index 623a61b8912f0..6a50f431c0610 100644
--- a/code/datums/bodypart_overlays/texture_bodypart_overlay.dm
+++ b/code/datums/bodypart_overlays/texture_bodypart_overlay.dm
@@ -26,3 +26,7 @@
/datum/bodypart_overlay/texture/carpskin
texture_icon_state = "carpskin"
texture_icon = 'icons/mob/human/textures.dmi'
+
+/datum/bodypart_overlay/texture/checkered
+ texture_icon_state = "checkered"
+ texture_icon = 'icons/mob/human/textures.dmi'
diff --git a/code/datums/brain_damage/hypnosis.dm b/code/datums/brain_damage/hypnosis.dm
index 5630073c95551..a9400578025b4 100644
--- a/code/datums/brain_damage/hypnosis.dm
+++ b/code/datums/brain_damage/hypnosis.dm
@@ -55,7 +55,10 @@
to_chat(owner, span_userdanger("You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you."))
owner.clear_alert(ALERT_HYPNOSIS)
..()
+ if (!isnull(antagonist))
+ antagonist.trauma = null
owner.mind.remove_antag_datum(/datum/antagonist/hypnotized)
+ antagonist = null
/datum/brain_trauma/hypnosis/on_life(seconds_per_tick, times_fired)
..()
diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm
index cd45ae1abf468..ec537adf5c731 100644
--- a/code/datums/brain_damage/severe.dm
+++ b/code/datums/brain_damage/severe.dm
@@ -399,19 +399,23 @@
var/scratch_damage = 0.5
/datum/brain_trauma/severe/eldritch_beauty/on_life(seconds_per_tick, times_fired)
- // Jumpsuits ruin the "perfection" of the body
- if(!owner.get_item_by_slot(ITEM_SLOT_ICLOTHING))
+ if(owner.incapacitated)
return
// Scratching code
var/obj/item/bodypart/bodypart = owner.get_bodypart(owner.get_random_valid_zone(even_weights = TRUE))
- if(!(bodypart && IS_ORGANIC_LIMB(bodypart)) && bodypart.bodypart_flags & BODYPART_PSEUDOPART)
+ if(!bodypart || !IS_ORGANIC_LIMB(bodypart) || (bodypart.bodypart_flags & BODYPART_PSEUDOPART))
return
- if(owner.incapacitated)
+ if(!ishuman(owner))
return
- bodypart.receive_damage(scratch_damage)
+ // Jumpsuits ruin the "perfection" of the body
+ var/mob/living/carbon/human/scratcher = owner
+ if(!length(scratcher.get_clothing_on_part(bodypart)))
+ return
+
+ owner.apply_damage(scratch_damage, BRUTE, bodypart)
if(SPT_PROB(33, seconds_per_tick))
- to_chat(owner, span_notice("You scratch furiously at the clothed [bodypart]!"))
+ to_chat(owner, span_notice("You scratch furiously at your clothed [bodypart.plaintext_zone]!"))
// This one is for "Climb over the rusted mountain" or /obj/structure/sign/painting/eldritch/rust
/datum/brain_trauma/severe/rusting
diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm
index 195d33c4b4b8d..cef20687a84d5 100644
--- a/code/datums/brain_damage/split_personality.dm
+++ b/code/datums/brain_damage/split_personality.dm
@@ -265,6 +265,10 @@
/datum/brain_trauma/severe/split_personality/blackout/on_gain()
. = ..()
+
+ if(QDELETED(src))
+ return
+
RegisterSignal(owner, COMSIG_ATOM_SPLASHED, PROC_REF(on_splashed))
notify_ghosts(
"[owner] is blacking out!",
diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm
index 3efa4a4a884a5..35511a9dcafb5 100644
--- a/code/datums/chatmessage.dm
+++ b/code/datums/chatmessage.dm
@@ -50,6 +50,8 @@
var/animate_start = 0
/// Our animation lifespan, how long this message will last
var/animate_lifespan = 0
+ /// Callback to finish_image_generation passed to SSrunechat
+ var/datum/callback/finish_callback
/**
* Constructs a chat message overlay
@@ -81,6 +83,10 @@
LAZYREMOVEASSOC(owned_by.seen_messages, message_loc, src)
owned_by.images.Remove(message)
+ if (finish_callback)
+ SSrunechat.message_queue -= finish_callback
+ finish_callback = null
+
owned_by = null
message_loc = null
message = null
@@ -188,13 +194,14 @@
if(!VERB_SHOULD_YIELD)
return finish_image_generation(mheight, target, owner, complete_text, lifespan)
- var/datum/callback/our_callback = CALLBACK(src, PROC_REF(finish_image_generation), mheight, target, owner, complete_text, lifespan)
- SSrunechat.message_queue += our_callback
+ finish_callback = CALLBACK(src, PROC_REF(finish_image_generation), mheight, target, owner, complete_text, lifespan)
+ SSrunechat.message_queue += finish_callback
return
///finishes the image generation after the MeasureText() call in generate_image().
///necessary because after that call the proc can resume at the end of the tick and cause overtime.
/datum/chatmessage/proc/finish_image_generation(mheight, atom/target, mob/owner, complete_text, lifespan)
+ finish_callback = null
var/rough_time = REALTIMEOFDAY
approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT)
var/starting_height = target.maptext_height
@@ -223,9 +230,12 @@
var/remaining_time = time_before_fade * (CHAT_MESSAGE_EXP_DECAY ** idx++) * (CHAT_MESSAGE_HEIGHT_DECAY ** combined_height)
// Ensure we don't accidentially spike alpha up or something silly like that
m.message.alpha = m.get_current_alpha(time_spent)
- if (remaining_time > 0)
+ if(remaining_time > 0)
+ if(time_spent < CHAT_MESSAGE_SPAWN_TIME)
+ // We haven't even had the time to fade in yet!
+ animate(m.message, alpha = 255, CHAT_MESSAGE_SPAWN_TIME - time_spent)
// Stay faded in for a while, then
- animate(m.message, alpha = 255, remaining_time)
+ animate(m.message, alpha = 255, remaining_time, flags=ANIMATION_CONTINUE)
// Fade out
animate(alpha = 0, time = CHAT_MESSAGE_EOL_FADE)
m.animate_lifespan = remaining_time + CHAT_MESSAGE_EOL_FADE
diff --git a/code/datums/components/COMPONENT_TEMPLATE.md b/code/datums/components/COMPONENT_TEMPLATE.md
index 7b08205888522..79dfddf1d0811 100644
--- a/code/datums/components/COMPONENT_TEMPLATE.md
+++ b/code/datums/components/COMPONENT_TEMPLATE.md
@@ -40,10 +40,10 @@ See _component.dm for detailed explanations
*/
/*
-/datum/component/mycomponent/PreTransfer()
- send_to_playing_players("Goodbye [parent], I'm getting adopted")
+/datum/component/mycomponent/PreTransfer(datum/new_parent)
+ send_to_playing_players("Goodbye [new_parent], I'm getting adopted")
-/datum/component/mycomponent/PostTransfer()
+/datum/component/mycomponent/PostTransfer(datum/new_parent)
send_to_playing_players("Hello my new parent, [parent]! It's nice to meet you!")
*/
diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm
index f78e2af6be17d..000f8790084f1 100644
--- a/code/datums/components/_component.dm
+++ b/code/datums/components/_component.dm
@@ -17,15 +17,6 @@
*/
var/dupe_mode = COMPONENT_DUPE_HIGHLANDER
- /**
- * The type to check for duplication
- *
- * `null` means exact match on `type` (default)
- *
- * Any other type means that and all subtypes
- */
- var/dupe_type
-
/// The datum this components belongs to
var/datum/parent
@@ -57,7 +48,7 @@
qdel(src, TRUE, TRUE)
return
- _JoinParent(parent)
+ _JoinParent()
/**
* Called during component creation with the same arguments as in new excluding parent.
@@ -217,7 +208,7 @@
*
* Use this to do any special cleanup you might need to do before being deregged from an object
*/
-/datum/component/proc/PreTransfer()
+/datum/component/proc/PreTransfer(datum/new_parent)
return
/**
@@ -227,7 +218,7 @@
*
* Do not call `qdel(src)` from this function, `return COMPONENT_INCOMPATIBLE` instead
*/
-/datum/component/proc/PostTransfer()
+/datum/component/proc/PostTransfer(datum/new_parent)
return COMPONENT_INCOMPATIBLE //Do not support transfer by default as you must properly support it
/**
@@ -328,7 +319,6 @@
CRASH("[component_type] attempted instantiation!")
var/dupe_mode = initial(component_type.dupe_mode)
- var/dupe_type = initial(component_type.dupe_type)
var/uses_sources = (dupe_mode == COMPONENT_DUPE_SOURCES)
if(uses_sources && !source)
CRASH("Attempted to add a sourced component of type '[component_type]' to '[type]' without a source!")
@@ -339,10 +329,7 @@
raw_args[1] = src
if(dupe_mode != COMPONENT_DUPE_ALLOWED && dupe_mode != COMPONENT_DUPE_SELECTIVE && dupe_mode != COMPONENT_DUPE_SOURCES)
- if(!dupe_type)
- old_component = GetExactComponent(component_type)
- else
- old_component = GetComponent(dupe_type)
+ old_component = GetComponent(component_type)
if(old_component)
switch(dupe_mode)
@@ -434,11 +421,11 @@
* Removes the component from parent, ends up with a null parent
* Used as a helper proc by the component transfer proc, does not clean up the component like Destroy does
*/
-/datum/component/proc/ClearFromParent()
+/datum/component/proc/ClearFromParent(datum/new_parent)
if(!parent)
return
var/datum/old_parent = parent
- PreTransfer()
+ PreTransfer(new_parent)
_RemoveFromParent()
parent = null
SEND_SIGNAL(old_parent, COMSIG_COMPONENT_REMOVING, src)
@@ -455,16 +442,17 @@
if(!target || target.parent == src)
return
if(target.parent)
- target.ClearFromParent()
- target.parent = src
- var/result = target.PostTransfer()
+ target.ClearFromParent(src)
+ var/result = target.PostTransfer(src)
switch(result)
if(COMPONENT_INCOMPATIBLE)
var/c_type = target.type
qdel(target)
CRASH("Incompatible [c_type] transfer attempt to a [type]!")
- if(target == AddComponent(target))
+ AddComponent(target)
+ if(!QDELETED(target))
+ target.parent = src
target._JoinParent()
/**
@@ -482,13 +470,13 @@
for(var/component_key in dc)
var/component_or_list = dc[component_key]
if(islist(component_or_list))
- for(var/datum/component/I in component_or_list)
- if(I.can_transfer)
- target.TakeComponent(I)
+ for(var/datum/component/component in component_or_list)
+ if(component.can_transfer)
+ target.TakeComponent(component)
else
- var/datum/component/C = component_or_list
- if(C.can_transfer)
- target.TakeComponent(C)
+ var/datum/component/component = component_or_list
+ if(!QDELETED(component) && component.can_transfer)
+ target.TakeComponent(component)
/**
* Return the object that is the host of any UI's that this component has
diff --git a/code/datums/components/acid.dm b/code/datums/components/acid.dm
index 74fa1b1ae7f88..dea0002663d67 100644
--- a/code/datums/components/acid.dm
+++ b/code/datums/components/acid.dm
@@ -25,8 +25,10 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
var/turf_acid_ignores_mobs = FALSE
/// The ambient sound of acid eating away at the parent [/atom].
var/datum/looping_sound/acid/sizzle
- /// Particle holder for acid particles (sick)
+ /// Particle holder for acid particles (sick). Still utilized over shared holders because they're movable-only
var/obj/effect/abstract/particle_holder/particle_effect
+ /// Particle type we're using for cleaning up our shared holder
+ var/particle_type
/// The proc used to handle the parent [/atom] when processing. TODO: Unify damage and resistance flags so that this doesn't need to exist!
var/datum/callback/process_effect
@@ -68,8 +70,13 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
sizzle = new(atom_parent, TRUE)
if(acid_particles)
- // acid particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
- particle_effect = new(atom_parent, acid_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB)
+ if (ismovable(parent))
+ var/atom/movable/movable_parent = parent
+ movable_parent.add_shared_particles(acid_particles, "[acid_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)
+ particle_type = acid_particles
+ else
+ // acid particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
+ particle_effect = new(atom_parent, acid_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB)
START_PROCESSING(SSacid, src)
/datum/component/acid/Destroy(force)
@@ -78,6 +85,9 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
QDEL_NULL(sizzle)
if(particle_effect)
QDEL_NULL(particle_effect)
+ if (ismovable(parent) && particle_type)
+ var/atom/movable/movable_parent = parent
+ movable_parent.remove_shared_particles("[particle_type]_[isitem(parent)]")
process_effect = null
return ..()
@@ -233,16 +243,10 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
if(!iscarbon(user) || user.can_touch_acid(source, acid_power, acid_volume))
return NONE
- var/obj/item/bodypart/affecting = user.get_active_hand()
- //Should not happen!
- if(!affecting)
- return NONE
-
- affecting.receive_damage(burn = 5)
+ user.apply_damage(5, BURN, user.get_active_hand())
to_chat(user, span_userdanger("The acid on \the [source] burns your hand!"))
INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream")
playsound(source, SFX_SEAR, 50, TRUE)
- user.update_damage_overlays()
return COMPONENT_CANCEL_ATTACK_CHAIN
/// Handles searing the feet of whoever walks over this without protection. Only active if the parent is a turf.
diff --git a/code/datums/components/aquarium.dm b/code/datums/components/aquarium.dm
new file mode 100644
index 0000000000000..f207ecd9f5510
--- /dev/null
+++ b/code/datums/components/aquarium.dm
@@ -0,0 +1,600 @@
+///Defines that clamp the beauty of the aquarium, to prevent it from making most areas great or horrid all by itself.
+#define MIN_AQUARIUM_BEAUTY -3500
+#define MAX_AQUARIUM_BEAUTY 6000
+
+/**
+ * The component that manages the aquariums UI, fluid, temperature, the current fish inside the parent object, as well as beauty,
+ * and a few other common aquarium features.
+ */
+/datum/component/aquarium
+ dupe_mode = COMPONENT_DUPE_UNIQUE
+ can_transfer = TRUE
+ /// list of fishes inside the parent object, sorted by type - does not include things with aquarium visuals that are not fish
+ var/list/tracked_fish_by_type
+
+ ///The current type of fluid of the aquarium
+ var/fluid_type = AQUARIUM_FLUID_FRESHWATER
+ ///The current temperature of the fluid of the aquarium
+ var/fluid_temp = DEFAULT_AQUARIUM_TEMP
+
+ ///A lazy list of key instances and assoc vals representing how much beauty they contribute to the aquarium
+ var/list/beauty_by_content
+
+ ///The default beauty of the aquarium when empty.
+ var/default_beauty
+
+ ///A list of layers that are currently being used for the various overlays of the aquarium (from aquarium_content comp)
+ var/list/used_layers = list()
+
+ ///The minimum pixel x of the area where vis overlays should be displayed
+ var/aquarium_zone_min_px
+ ///The maximum pixel x of the area where vis overlays should be displayed
+ var/aquarium_zone_max_px
+ ///The minimum pixel y of the area where vis overlays should be displayed
+ var/aquarium_zone_min_py
+ ///The maximum pixel y of the area where vis overlays should be displayed
+ var/aquarium_zone_max_py
+
+ ///While the feed (reagent) storage is not empty, this is the interval which the fish are fed.
+ var/feeding_interval = 3 MINUTES
+ ///The last time fishes were fed by the acquarium itsef.
+ var/last_feeding
+
+ ///The minimum fluid temperature that can be reached by this aquarium
+ var/min_fluid_temp = MIN_AQUARIUM_TEMP
+ ///The maximum fluid temperature that can be reached by this aquarium
+ var/max_fluid_temp = MAX_AQUARIUM_TEMP
+
+ ///static list of available fluid types.
+ var/static/list/fluid_types = list(
+ AQUARIUM_FLUID_SALTWATER,
+ AQUARIUM_FLUID_FRESHWATER,
+ AQUARIUM_FLUID_SULPHWATEVER,
+ AQUARIUM_FLUID_AIR,
+ )
+
+ ///The size of the reagents holder which will store fish feed.
+ var/reagents_size
+
+/datum/component/aquarium/Initialize(
+ min_px,
+ max_px,
+ min_py,
+ max_py,
+ default_beauty = 0,
+ reagents_size = 6,
+ min_fluid_temp = MIN_AQUARIUM_TEMP,
+ max_fluid_temp = MAX_AQUARIUM_TEMP,
+)
+
+ if(!ismovable(parent))
+ return COMPONENT_INCOMPATIBLE
+
+ src.default_beauty = default_beauty
+ src.reagents_size = reagents_size
+
+ aquarium_zone_min_px = min_px
+ aquarium_zone_max_px = max_px
+ aquarium_zone_min_py = min_py
+ aquarium_zone_max_py = max_py
+
+ src.min_fluid_temp = min_fluid_temp
+ src.max_fluid_temp = max_fluid_temp
+ fluid_temp = clamp(fluid_temp, min_fluid_temp, max_fluid_temp)
+
+/datum/component/aquarium/RegisterWithParent()
+ if(default_beauty)
+ update_aquarium_beauty(0)
+
+ RegisterSignals(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON), PROC_REF(on_entered))
+ RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(on_exited))
+
+ RegisterSignal(parent, COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES, PROC_REF(get_candidates))
+ RegisterSignal(parent, COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS, PROC_REF(check_evolution))
+
+ RegisterSignal(parent, COMSIG_AQUARIUM_SET_VISUAL, PROC_REF(set_visual))
+ RegisterSignal(parent, COMSIG_AQUARIUM_REMOVE_VISUAL, PROC_REF(remove_visual))
+
+ var/atom/movable/movable = parent
+
+ ADD_KEEP_TOGETHER(movable, AQUARIUM_TRAIT) //render the fish on the same layer of the aquarium.
+
+ if(reagents_size > 0)
+ RegisterSignal(movable.reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed))
+ if(!movable.reagents)
+ movable.create_reagents(reagents_size, SEALED_CONTAINER)
+ else if(movable.reagents.total_volume)
+ start_autofeed(movable.reagents)
+ RegisterSignal(movable, COMSIG_PLUNGER_ACT, PROC_REF(on_plunger_act))
+
+ RegisterSignal(movable, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_interaction))
+ RegisterSignal(movable, COMSIG_CLICK_ALT, PROC_REF(on_click_alt))
+ RegisterSignal(movable, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
+
+ if(isitem(movable))
+ RegisterSignal(movable, COMSIG_ITEM_ATTACK_SELF, PROC_REF(interact))
+ RegisterSignals(movable, list(COMSIG_ATOM_ATTACK_ROBOT_SECONDARY, COMSIG_ATOM_ATTACK_HAND_SECONDARY), PROC_REF(on_secondary_attack_hand))
+ else
+ RegisterSignal(movable, COMSIG_ATOM_UI_INTERACT, PROC_REF(interact))
+
+ movable.AddElement(/datum/element/relay_attackers)
+ movable.AddComponent(/datum/component/fishing_spot, /datum/fish_source/aquarium)
+
+
+ movable.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1
+ RegisterSignal(movable, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item))
+
+ for(var/atom/movable/content as anything in movable.contents)
+ if(content.flags_1 & INITIALIZED_1)
+ on_entered(movable, content)
+
+ ADD_TRAIT(movable, TRAIT_IS_AQUARIUM, AQUARIUM_TRAIT)
+
+/datum/component/aquarium/UnregisterFromParent()
+ var/atom/movable/movable = parent
+ UnregisterSignal(movable, list(
+ COMSIG_ATOM_ENTERED,
+ COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON,
+ COMSIG_ATOM_EXITED,
+ COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES,
+ COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS,
+ COMSIG_AQUARIUM_SET_VISUAL,
+ COMSIG_AQUARIUM_REMOVE_VISUAL,
+ COMSIG_PLUNGER_ACT,
+ COMSIG_ATOM_ITEM_INTERACTION,
+ COMSIG_CLICK_ALT,
+ COMSIG_ATOM_EXAMINE,
+ COMSIG_ITEM_ATTACK_SELF,
+ COMSIG_ATOM_ATTACK_ROBOT_SECONDARY,
+ COMSIG_ATOM_ATTACK_HAND_SECONDARY,
+ COMSIG_ATOM_UI_INTERACT,
+ COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM,
+ ))
+ if(movable.reagents)
+ UnregisterSignal(movable, COMSIG_REAGENTS_NEW_REAGENT)
+ STOP_PROCESSING(SSobj, src)
+ beauty_by_content = null
+ tracked_fish_by_type = null
+ movable.remove_traits(list(TRAIT_IS_AQUARIUM, TRAIT_AQUARIUM_PANEL_OPEN, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH), AQUARIUM_TRAIT)
+ qdel(movable.GetComponent(/datum/component/fishing_spot))
+ REMOVE_KEEP_TOGETHER(movable, AQUARIUM_TRAIT)
+
+/datum/component/aquarium/PreTransfer(atom/movable/new_parent)
+ if(!istype(new_parent))
+ return
+ if(HAS_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN))
+ ADD_TRAIT(new_parent, TRAIT_AQUARIUM_PANEL_OPEN, AQUARIUM_TRAIT)
+ if(HAS_TRAIT_FROM(parent, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT))
+ ADD_TRAIT(new_parent, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)
+ var/atom/movable/movable = parent
+ for(var/atom/movable/moving as anything in movable.contents)
+ if(HAS_TRAIT(moving, TRAIT_AQUARIUM_CONTENT))
+ moving.forceMove(new_parent)
+ if(reagents_size)
+ if(!new_parent.reagents)
+ new_parent.create_reagents(reagents_size, SEALED_CONTAINER)
+ movable.reagents.trans_to(new_parent, movable.reagents.total_volume)
+
+/datum/component/aquarium/PostTransfer(datum/new_parent)
+ if(!ismovable(new_parent))
+ return COMPONENT_INCOMPATIBLE
+
+/datum/component/aquarium/InheritComponent(datum/component/aquarium/new_comp, i_am_original)
+ fluid_temp = clamp(new_comp.fluid_temp, min_fluid_temp, max_fluid_temp)
+ set_fluid_type(new_comp.fluid_type)
+ feeding_interval = new_comp.feeding_interval
+ last_feeding = new_comp.last_feeding
+ var/atom/movable/movable = parent
+ movable.update_appearance()
+
+/datum/component/aquarium/proc/on_click_alt(atom/movable/source, mob/living/user)
+ SIGNAL_HANDLER
+ if(!user.can_perform_action(source))
+ return
+ var/closing = HAS_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN)
+ if(closing)
+ REMOVE_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN, AQUARIUM_TRAIT)
+ source.reagents.flags &= ~(TRANSPARENT|REFILLABLE)
+ SStgui.close_uis(src)
+ else
+ ADD_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN, AQUARIUM_TRAIT)
+ source.reagents.flags |= TRANSPARENT|REFILLABLE
+
+ source.balloon_alert(user, "panel [closing ? "closed" : "open"]")
+ source.update_appearance()
+ return CLICK_ACTION_SUCCESS
+
+///This proc handles feeding the aquarium and inserting aquarium content.
+/datum/component/aquarium/proc/on_item_interaction(atom/movable/source, mob/living/user, obj/item/item, modifiers)
+ SIGNAL_HANDLER
+
+ if(istype(item, /obj/item/reagent_containers/cup/fish_feed))
+ if(source.reagents && HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN))
+ return //don't block, we'll be transferring reagents to the feed storage.
+ if(!item.reagents.total_volume)
+ source.balloon_alert(user, "[item] is empty!")
+ return ITEM_INTERACT_BLOCKING
+ var/list/fishes = get_fishes()
+ if(!length(fishes))
+ source.balloon_alert(user, "no fish to feed!")
+ return ITEM_INTERACT_BLOCKING
+ for(var/obj/item/fish/fish as anything in fishes)
+ fish.feed(item.reagents)
+ source.balloon_alert(user, "fed the fish")
+ return ITEM_INTERACT_SUCCESS
+
+ if(!HAS_TRAIT(item, TRAIT_AQUARIUM_CONTENT) || (!isitem(parent) && user.combat_mode))
+ return //proceed with normal interactions
+
+ var/broken = source.get_integrity_percentage() <= source.integrity_failure
+ if(!can_insert(source, item, user))
+ return ITEM_INTERACT_BLOCKING
+ if(broken)
+ source.balloon_alert(user, "aquarium is broken!")
+ return ITEM_INTERACT_BLOCKING
+ if(!user.transferItemToLoc(item, source))
+ user.balloon_alert(user, "stuck to your hand!")
+ return ITEM_INTERACT_BLOCKING
+ source.balloon_alert(user, "added to aquarium")
+ source.update_appearance()
+ return ITEM_INTERACT_SUCCESS
+
+///Called when the feed storage is no longer empty.
+/datum/component/aquarium/proc/start_autofeed(atom/movable/source, new_reagent, amount, reagtemp, data, no_react)
+ SIGNAL_HANDLER
+ START_PROCESSING(SSobj, src)
+ UnregisterSignal(source.reagents, COMSIG_REAGENTS_NEW_REAGENT)
+
+///Feed the fish at defined intervals until the feed storage is empty.
+/datum/component/aquarium/process(seconds_per_tick)
+ //safe mode, no need to feed the fishes
+ if(HAS_TRAIT_FROM(parent, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT))
+ last_feeding += seconds_per_tick SECONDS
+ return
+ var/atom/movable/movable = parent
+ if(!movable.reagents?.total_volume)
+ if(movable.reagents)
+ RegisterSignal(movable.reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed))
+ return PROCESS_KILL
+ if(world.time < last_feeding + feeding_interval)
+ return
+ last_feeding = world.time
+ var/list/fishes = get_fishes()
+ for(var/obj/item/fish/fish as anything in fishes)
+ fish.feed(movable.reagents)
+
+/datum/component/aquarium/proc/on_plunger_act(atom/movable/source, obj/item/plunger/plunger, mob/living/user, reinforced)
+ SIGNAL_HANDLER
+ if(!HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN))
+ source.balloon_alert(user, "open panel first!")
+ return
+ INVOKE_ASYNC(src, PROC_REF(do_plunging), source, user)
+ return COMPONENT_NO_AFTERATTACK
+
+/datum/component/aquarium/proc/do_plunging(atom/movable/source, mob/living/user)
+ user.balloon_alert_to_viewers("plunging...")
+ if(do_after(user, 3 SECONDS, target = source))
+ user.balloon_alert_to_viewers("finished plunging")
+ source.reagents.expose(get_turf(source), TOUCH) //splash on the floor
+ source.reagents.clear_reagents()
+
+/datum/component/aquarium/proc/on_examine(atom/movable/source, mob/user, list/examine_list)
+ SIGNAL_HANDLER
+ var/panel_open = HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN)
+ examine_list += span_notice("Alt-click to [panel_open ? "close" : "open"] the control and feed panel.")
+ if(panel_open && source.reagents.total_volume)
+ examine_list += span_notice("You can use a plunger to empty the feed storage.")
+
+///Check if an item can be inserted into the aquarium
+/datum/component/aquarium/proc/can_insert(atom/movable/source, obj/item/item, mob/living/user)
+ var/return_value = SEND_SIGNAL(src, COMSIG_AQUARIUM_CAN_INSERT, item, user)
+ if(return_value & COMSIG_CANNOT_INSERT_IN_AQUARIUM)
+ return FALSE
+ if(return_value & COMSIG_CAN_INSERT_IN_AQUARIUM)
+ return TRUE
+
+ if(HAS_TRAIT(item, TRAIT_UNIQUE_AQUARIUM_CONTENT))
+ for(var/atom/movable/content as anything in source)
+ if(content == item)
+ continue
+ if(content.type == item.type)
+ source.balloon_alert(user, "cannot add to aquarium!")
+ return FALSE
+ return TRUE
+
+///Handles aquarium content insertion
+/datum/component/aquarium/proc/on_entered(atom/movable/source, atom/movable/entered)
+ SIGNAL_HANDLER
+ get_content_beauty(entered)
+ if(!isfish(entered))
+ return
+ var/obj/item/fish/fish = entered
+ LAZYADDASSOCLIST(tracked_fish_by_type, entered.type, entered)
+ if(fish.stable_population < length(tracked_fish_by_type[fish.type]))
+ for(var/obj/item/fish/anyfin as anything in tracked_fish_by_type[entered.type])
+ anyfin.fish_flags |= FISH_FLAG_OVERPOPULATED
+ check_fluid_and_temperature(fish)
+ RegisterSignal(fish, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_status_changed))
+
+///update the beauty_by_content of a 'beauty_by_content' key and then recalculate the beauty.
+/datum/component/aquarium/proc/get_content_beauty(atom/movable/content)
+ var/list/beauty_holder = list()
+ SEND_SIGNAL(content, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, beauty_holder)
+ var/beauty = beauty_holder[1]
+ if(!beauty)
+ return
+ var/old_beauty = default_beauty
+ for(var/key in beauty_by_content)
+ old_beauty += beauty_by_content[key]
+ LAZYSET(beauty_by_content, content, beauty)
+ update_aquarium_beauty(old_beauty)
+
+///Handles aquarium content removal.
+/datum/component/aquarium/proc/on_exited(atom/movable/source, atom/movable/gone)
+ SIGNAL_HANDLER
+ var/beauty = beauty_by_content?[gone]
+ if(beauty)
+ var/old_beauty = default_beauty
+ for(var/key in beauty_by_content)
+ old_beauty += beauty_by_content[key]
+ LAZYREMOVE(beauty_by_content, gone)
+ update_aquarium_beauty(old_beauty)
+ if(!isfish(gone))
+ return
+ var/obj/item/fish/fish = gone
+ if(fish.stable_population == length(tracked_fish_by_type[fish.type]))
+ for(var/obj/item/fish/anyfin as anything in tracked_fish_by_type[fish.type])
+ anyfin.fish_flags &= ~FISH_FLAG_OVERPOPULATED
+ LAZYREMOVEASSOC(tracked_fish_by_type, fish.type, fish)
+ fish.fish_flags &= ~(FISH_FLAG_SAFE_TEMPERATURE|FISH_FLAG_SAFE_FLUID)
+ UnregisterSignal(gone, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_status_changed))
+
+///Return a list of fish which our fishie can reproduce with (including itself if self-reproducing)
+/datum/component/aquarium/proc/get_candidates(atom/movable/source, obj/item/fish/fish, list/candidates)
+ SIGNAL_HANDLER
+ var/list/types_to_mate_with = tracked_fish_by_type
+ if(!HAS_TRAIT(fish, TRAIT_FISH_CROSSBREEDER))
+ var/list/types_to_check = list(fish.type)
+ if(fish.compatible_types)
+ types_to_check |= fish.compatible_types
+ types_to_mate_with = types_to_mate_with & types_to_check
+
+ for(var/obj/item/fish/fish_type as anything in types_to_mate_with)
+ var/list/type_fishes = tracked_fish_by_type[fish_type]
+ if(length(type_fishes) >= initial(fish_type.stable_population))
+ continue
+ candidates += type_fishes
+
+///Check if an offspring of two fish (or one if self-reproducing) can evolve.
+/datum/component/aquarium/proc/check_evolution(atom/movable/source, obj/item/fish/fish, obj/item/fish/mate, datum/fish_evolution/evolution)
+ SIGNAL_HANDLER
+ //chances are halved if only one parent has this evolution.
+ var/real_probability = (mate && (evolution.type in mate.evolution_types)) ? evolution.probability : evolution.probability * 0.5
+ if(HAS_TRAIT(fish, TRAIT_FISH_MUTAGENIC) || (mate && HAS_TRAIT(mate, TRAIT_FISH_MUTAGENIC)))
+ real_probability *= 3
+ if(!prob(real_probability))
+ return NONE
+ if(!ISINRANGE(fluid_temp, evolution.required_temperature_min, evolution.required_temperature_max))
+ return NONE
+ return COMPONENT_ALLOW_EVOLUTION
+
+/**
+ * Toggles a couple flags that determine if the fish is in safe waters so that we won't have to use signals or
+ * access this comp in multiple places just to confirm that.
+ */
+/datum/component/aquarium/proc/check_fluid_and_temperature(obj/item/fish/fish)
+ if(compatible_fluid_type(fish.required_fluid_type, fluid_type) || (fluid_type == AQUARIUM_FLUID_AIR && HAS_TRAIT(fish, TRAIT_FISH_AMPHIBIOUS)))
+ fish.fish_flags |= FISH_FLAG_SAFE_FLUID
+ else
+ fish.fish_flags &= ~FISH_FLAG_SAFE_FLUID
+ if(ISINRANGE(fluid_temp, fish.required_temperature_min, fish.required_temperature_max))
+ fish.fish_flags |= FISH_FLAG_SAFE_TEMPERATURE
+ else
+ fish.fish_flags &= ~FISH_FLAG_SAFE_TEMPERATURE
+
+///Fish beauty changes when they're dead, so we need to update the beauty of the aquarium too.
+/datum/component/aquarium/proc/on_fish_status_changed(obj/item/fish/fish)
+ get_content_beauty(fish)
+
+/datum/component/aquarium/proc/update_aquarium_beauty(old_beauty)
+ if(QDELETED(parent))
+ return
+ old_beauty = clamp(old_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY)
+ var/new_beauty = 0
+ for(var/key in beauty_by_content)
+ new_beauty += beauty_by_content[key]
+ new_beauty = clamp(new_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY)
+ if(new_beauty == old_beauty)
+ return
+ if(old_beauty)
+ parent.RemoveElement(/datum/element/beauty, old_beauty)
+ if(new_beauty)
+ parent.AddElement(/datum/element/beauty, new_beauty)
+
+///Remove a visual overlay from an aquarium_content comp
+/datum/component/aquarium/proc/remove_visual(atom/movable/source, obj/effect/aquarium/visual)
+ SIGNAL_HANDLER
+ source.vis_contents -= visual
+ used_layers -= visual.layer
+
+///set values for a visual overlay for an aquarium_content comp
+/datum/component/aquarium/proc/set_visual(atom/movable/source, obj/effect/aquarium/visual)
+ SIGNAL_HANDLER
+ used_layers -= visual.layer
+ visual.layer = request_layer(visual.layer_mode)
+ visual.aquarium_zone_min_px = aquarium_zone_min_px
+ visual.aquarium_zone_max_px = aquarium_zone_max_px
+ visual.aquarium_zone_min_py = aquarium_zone_min_py
+ visual.aquarium_zone_max_py = aquarium_zone_max_py
+ visual.fluid_type = fluid_type
+
+/datum/component/aquarium/proc/request_layer(layer_type)
+ var/atom/movable/movable = parent
+ switch(layer_type)
+ if(AQUARIUM_LAYER_MODE_BEHIND_GLASS)
+ return movable.layer + AQUARIUM_BELOW_GLASS_LAYER
+ if(AQUARIUM_LAYER_MODE_BOTTOM)
+ return movable.layer + AQUARIUM_MIN_OFFSET
+ if(AQUARIUM_LAYER_MODE_TOP)
+ return movable.layer + AQUARIUM_MAX_OFFSET
+ if(AQUARIUM_LAYER_MODE_AUTO)
+ var/chosen_layer = AQUARIUM_MIN_OFFSET + AQUARIUM_LAYER_STEP
+ while((chosen_layer in used_layers) && (chosen_layer <= AQUARIUM_MAX_OFFSET))
+ chosen_layer += AQUARIUM_LAYER_STEP
+ used_layers += chosen_layer
+ return movable.layer + chosen_layer
+
+/datum/component/aquarium/proc/get_fishes()
+ var/list/fishes = list()
+ for(var/key in tracked_fish_by_type)
+ fishes += tracked_fish_by_type[key]
+ return fishes
+
+/datum/component/aquarium/proc/interact(atom/movable/source, mob/user)
+ SIGNAL_HANDLER
+
+ if(HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN))
+ INVOKE_ASYNC(src, PROC_REF(ui_interact), user)
+ else if(!isitem(source))
+ INVOKE_ASYNC(src, PROC_REF(admire), user)
+
+/datum/component/aquarium/proc/on_secondary_attack_hand(obj/item/source, mob/living/user)
+ SIGNAL_HANDLER
+ INVOKE_ASYNC(src, PROC_REF(admire), user)
+ return COMPONENT_CANCEL_ATTACK_CHAIN
+
+/datum/component/aquarium/ui_interact(mob/user, datum/tgui/ui)
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ var/atom/movable/movable = parent
+ ui = new(user, src, "Aquarium", movable.name)
+ ui.open()
+
+/datum/component/aquarium/ui_data(mob/user)
+ . = ..()
+ var/atom/movable/aquarium = parent
+ .["fluidType"] = fluid_type
+ .["temperature"] = fluid_temp
+ .["safe_mode"] = HAS_TRAIT_FROM(aquarium, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)
+ .["fishData"] = list()
+ .["feedingInterval"] = feeding_interval / (1 MINUTES)
+ .["propData"] = list()
+ for(var/atom/movable/item as anything in aquarium.contents)
+ if(isfish(item))
+ var/obj/item/fish/fish = item
+ .["fishData"] += list(list(
+ "fish_ref" = REF(fish),
+ "fish_name" = uppertext(fish.name),
+ "fish_happiness" = fish.get_happiness_value(),
+ "fish_icon" = fish::icon,
+ "fish_icon_state" = fish::icon_state,
+ "fish_health" = fish.health,
+ ))
+ continue
+ .["propData"] += list(list(
+ "prop_ref" = REF(item),
+ "prop_name" = item.name,
+ "prop_icon" = item::icon,
+ "prop_icon_state" = item::icon_state,
+ ))
+
+/datum/component/aquarium/ui_static_data(mob/user)
+ . = ..()
+ //I guess these should depend on the fluid so lava critters can get high or stuff below water freezing point but let's keep it simple for now.
+ .["minTemperature"] = min_fluid_temp
+ .["maxTemperature"] = max_fluid_temp
+ .["fluidTypes"] = fluid_types
+ .["heartIcon"] = 'icons/effects/effects.dmi'
+
+/datum/component/aquarium/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+ . = ..()
+ if(.)
+ return
+ var/mob/user = usr
+ var/atom/movable/movable = parent
+ switch(action)
+ if("temperature")
+ var/temperature = params["temperature"]
+ if(isnum(temperature) && temperature != fluid_temp)
+ fluid_temp = clamp(temperature, min_fluid_temp, max_fluid_temp)
+ for(var/obj/item/fish/fish as anything in get_fishes())
+ check_fluid_and_temperature(fish)
+ . = TRUE
+ if("fluid")
+ if(params["fluid"] != fluid_type && (params["fluid"] in fluid_types))
+ set_fluid_type(params["fluid"])
+ . = TRUE
+ if("safe_mode")
+ if(HAS_TRAIT_FROM(movable, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT))
+ REMOVE_TRAIT(movable, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)
+ else
+ ADD_TRAIT(movable, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)
+ . = TRUE
+ if("feeding_interval")
+ feeding_interval = params["feeding_interval"] MINUTES
+ . = TRUE
+ if("pet_fish")
+ var/obj/item/fish/fish = locate(params["fish_reference"]) in movable.contents
+ fish?.pet_fish(user)
+ if("remove_item")
+ var/atom/movable/item = locate(params["item_reference"]) in movable.contents
+ item?.forceMove(movable.drop_location())
+ to_chat(user, span_notice("You take out [item] from [movable]."))
+ if("rename_fish")
+ var/new_name = sanitize_name(params["chosen_name"])
+ var/atom/movable/fish = locate(params["fish_reference"]) in movable.contents
+ if(!fish || !new_name || new_name == fish.name)
+ return
+ fish.AddComponent(/datum/component/rename, new_name, fish.desc)
+
+/datum/component/aquarium/proc/set_fluid_type(new_fluid_type)
+ var/atom/movable/movable = parent
+ fluid_type = new_fluid_type
+ SEND_SIGNAL(movable, COMSIG_AQUARIUM_FLUID_CHANGED, fluid_type)
+ for(var/obj/item/fish/fish as anything in get_fishes())
+ check_fluid_and_temperature(fish)
+
+/datum/component/aquarium/proc/admire(atom/movable/source, mob/living/user)
+ source.balloon_alert(user, "admiring aquarium...")
+ if(!do_after(user, 5 SECONDS, target = source))
+ return
+ var/alive_fish = 0
+ var/dead_fish = 0
+ for(var/obj/item/fish/fish as anything in get_fishes())
+ if(fish.status == FISH_ALIVE)
+ alive_fish++
+ else
+ dead_fish++
+
+ var/morb = HAS_MIND_TRAIT(user, TRAIT_MORBID)
+ //Check if there are live fish - good mood
+ //All fish dead - bad mood.
+ //No fish - nothing.
+ if(alive_fish > 0)
+ user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_bad : /datum/mood_event/aquarium_positive)
+ else if(dead_fish > 0)
+ user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_good : /datum/mood_event/aquarium_negative)
+
+/datum/component/aquarium/proc/on_requesting_context_from_item(atom/source, list/context, obj/item/held_item, mob/user)
+ SIGNAL_HANDLER
+ var/open_panel = HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN)
+ if(!held_item)
+ var/isitem = isitem(source)
+ if(!isitem || open_panel)
+ context[SCREENTIP_CONTEXT_LMB] = open_panel ? "Adjust settings" : "Admire"
+ if(isitem)
+ context[SCREENTIP_CONTEXT_RMB] = "Admire"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "[open_panel ? "Open" : "Close"] settings panel"
+ return CONTEXTUAL_SCREENTIP_SET
+ if(istype(held_item, /obj/item/plunger))
+ context[SCREENTIP_CONTEXT_LMB] = "Empty feed storage"
+ return CONTEXTUAL_SCREENTIP_SET
+ if(istype(held_item, /obj/item/reagent_containers/cup/fish_feed) && (!source.reagents || !open_panel))
+ context[SCREENTIP_CONTEXT_LMB] = "Feed fishes"
+ return CONTEXTUAL_SCREENTIP_SET
+ if(HAS_TRAIT(held_item, TRAIT_AQUARIUM_CONTENT))
+ context[SCREENTIP_CONTEXT_LMB] = "Insert in aquarium"
+ return CONTEXTUAL_SCREENTIP_SET
+
+#undef MIN_AQUARIUM_BEAUTY
+#undef MAX_AQUARIUM_BEAUTY
diff --git a/code/datums/components/aquarium_content.dm b/code/datums/components/aquarium_content.dm
index 1307cb45fbbc3..87cd34571d401 100644
--- a/code/datums/components/aquarium_content.dm
+++ b/code/datums/components/aquarium_content.dm
@@ -1,18 +1,5 @@
-///Malus to the beauty value if the fish content is dead
-#define DEAD_FISH_BEAUTY -500
-///Prevents more impressive fishes from providing a positive beauty even when dead.
-#define MAX_DEAD_FISH_BEAUTY -200
-///Some fish are already so ugly, they can't get much worse when dead
-#define MIN_DEAD_FISH_BEAUTY -600
-
-///Defines that clamp the beauty of the aquarium, to prevent it from making most areas great or horrid all by itself.
-#define MIN_AQUARIUM_BEAUTY -3500
-#define MAX_AQUARIUM_BEAUTY 6000
-
/// Allows movables to be inserted/displayed in aquariums.
/datum/component/aquarium_content
- /// Keeps track of our current aquarium.
- var/obj/structure/aquarium/current_aquarium
//This is visual effect holder that will end up in aquarium's vis_contents
var/obj/effect/aquarium/vc_obj
@@ -32,161 +19,103 @@
/// Does this behviour need additional processing in aquarium, will be added to SSobj processing on insertion
var/processing = FALSE
- /// Signals of the parent that will trigger animation update
- var/animation_update_signals
-
- /// The current beauty this component gives to the aquarium it's in
- var/beauty
+ /// Signals for the aquarium we're in that trigger an animation update
+ var/list/animation_update_signals
- /// The original value of the beauty this component had when initialized
- var/original_beauty
-
-/datum/component/aquarium_content/Initialize(animation_update_signals, beauty)
- if(!ismovable(parent))
+/datum/component/aquarium_content/Initialize(animation_update_signals)
+ if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- src.animation_update_signals = animation_update_signals
- src.beauty = original_beauty = beauty
- if(animation_update_signals)
- RegisterSignals(parent, animation_update_signals, PROC_REF(generate_animation))
+ src.animation_update_signals = islist(animation_update_signals) ? animation_update_signals : list(animation_update_signals)
- ADD_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, REF(src))
- RegisterSignal(parent, COMSIG_TRY_INSERTING_IN_AQUARIUM, PROC_REF(is_ready_to_insert))
+ ADD_TRAIT(parent, TRAIT_AQUARIUM_CONTENT, REF(src))
RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(enter_aquarium))
- if(isfish(parent))
- RegisterSignal(parent, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_status_changed))
-
//If component is added to something already in aquarium at the time initialize it properly.
var/atom/movable/movable_parent = parent
- if(istype(movable_parent.loc, /obj/structure/aquarium))
+ if(movable_parent.loc && HAS_TRAIT(movable_parent.loc, TRAIT_IS_AQUARIUM))
on_inserted(movable_parent.loc)
-/datum/component/aquarium_content/proc/on_fish_status_changed(obj/item/fish/source)
- SIGNAL_HANDLER
- var/old_beauty = beauty
- beauty = original_beauty
- if(source.status == FISH_DEAD)
- beauty = clamp(beauty + DEAD_FISH_BEAUTY, MIN_DEAD_FISH_BEAUTY, MAX_DEAD_FISH_BEAUTY)
- if(current_aquarium)
- change_aquarium_beauty(beauty - old_beauty)
- generate_animation()
-
-/datum/component/aquarium_content/PreTransfer()
- . = ..()
- REMOVE_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, REF(src))
-
/datum/component/aquarium_content/Destroy(force)
- if(current_aquarium)
- remove_from_aquarium()
+ var/atom/movable/movable = parent
+ if(movable.loc && HAS_TRAIT(movable.loc, TRAIT_IS_AQUARIUM))
+ remove_from_aquarium(movable.loc)
QDEL_NULL(vc_obj)
+ REMOVE_TRAIT(parent, TRAIT_AQUARIUM_CONTENT, REF(src))
return ..()
/datum/component/aquarium_content/proc/enter_aquarium(datum/source, OldLoc, Dir, Forced)
SIGNAL_HANDLER
var/atom/movable/movable_parent = parent
- if(istype(movable_parent.loc, /obj/structure/aquarium))
+ if(HAS_TRAIT(movable_parent.loc, TRAIT_IS_AQUARIUM))
on_inserted(movable_parent.loc)
-/datum/component/aquarium_content/proc/is_ready_to_insert(datum/source, obj/structure/aquarium/aquarium)
- SIGNAL_HANDLER
- if(HAS_TRAIT(parent, TRAIT_UNIQUE_AQUARIUM_CONTENT))
- for(var/atom/movable/content as anything in aquarium)
- if(content == parent)
- continue
- if(content.type == parent.type)
- return COMSIG_CANNOT_INSERT_IN_AQUARIUM
- return COMSIG_CAN_INSERT_IN_AQUARIUM
-
-/datum/component/aquarium_content/proc/on_inserted(atom/aquarium)
- current_aquarium = aquarium
- RegisterSignal(current_aquarium, COMSIG_ATOM_EXITED, PROC_REF(on_removed))
- RegisterSignal(current_aquarium, COMSIG_AQUARIUM_SURFACE_CHANGED, PROC_REF(on_surface_changed))
- RegisterSignal(current_aquarium, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_fluid_changed))
+/datum/component/aquarium_content/proc/on_inserted(atom/movable/aquarium)
+ RegisterSignal(aquarium, COMSIG_ATOM_EXITED, PROC_REF(on_removed))
+ RegisterSignal(aquarium, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_fluid_changed))
+ RegisterSignals(aquarium, animation_update_signals, PROC_REF(animation_update_signal_proc))
if(processing)
START_PROCESSING(SSobj, src)
//If we don't have vc object yet build it
if(!vc_obj)
- generate_base_vc()
+ generate_base_vc(aquarium)
//Set default position and layer
set_vc_base_position()
generate_animation(reset = TRUE)
//Finally add it to to objects vis_contents
- current_aquarium.vis_contents |= vc_obj
+ aquarium.vis_contents |= vc_obj
- change_aquarium_beauty(beauty)
-
-///Modifies the beauty of the aquarium when content is added or removed, or when fishes die or live again somehow.
-/datum/component/aquarium_content/proc/change_aquarium_beauty(change)
- if(QDELETED(current_aquarium) || !change)
- return
- var/old_clamped_beauty = clamp(current_aquarium.current_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY)
- current_aquarium.current_beauty += change
- var/new_clamped_beauty = clamp(current_aquarium.current_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY)
- if(new_clamped_beauty == old_clamped_beauty)
- return
- if(current_aquarium.current_beauty)
- current_aquarium.RemoveElement(/datum/element/beauty, current_aquarium.current_beauty)
- if(current_aquarium.current_beauty)
- current_aquarium.AddElement(/datum/element/beauty, current_aquarium.current_beauty)
-
-/// Aquarium surface changed in some way, we need to recalculate base position and aninmation
-/datum/component/aquarium_content/proc/on_surface_changed()
+/datum/component/aquarium_content/proc/on_fluid_changed(datum/source, new_fluid_type)
SIGNAL_HANDLER
- set_vc_base_position()
- generate_animation(reset = TRUE) //our animation start point changed, gotta redo
+ vc_obj.fluid_type = new_fluid_type
+ generate_animation()
-/datum/component/aquarium_content/proc/on_fluid_changed()
- SIGNAL_HANDLER
+///Called when one of the signals in the 'animation_update_signals' is sent
+/datum/component/aquarium_content/proc/animation_update_signal_proc(datum/source)
generate_animation()
///Sends a signal to the parent to get them to update the aquarium animation of the visual object
-/datum/component/aquarium_content/proc/generate_animation(reset=FALSE)
- if(!current_aquarium)
- return
- SEND_SIGNAL(parent, COMSIG_AQUARIUM_CONTENT_DO_ANIMATION, reset ? null : current_animation, current_aquarium, vc_obj)
-
-/datum/component/aquarium_content/proc/remove_visual_from_aquarium()
- current_aquarium.vis_contents -= vc_obj
- if(vc_obj.layer)
- current_aquarium.free_layer(vc_obj.layer)
+/datum/component/aquarium_content/proc/generate_animation(reset = FALSE)
+ var/atom/movable/movable = parent
+ SEND_SIGNAL(movable, COMSIG_AQUARIUM_CONTENT_DO_ANIMATION, reset ? null : current_animation, vc_obj)
/// Generates common visual object, propeties that don't depend on aquarium surface
-/datum/component/aquarium_content/proc/generate_base_vc()
+/datum/component/aquarium_content/proc/generate_base_vc(atom/movable/aquarium)
vc_obj = new
vc_obj.vis_flags |= VIS_INHERIT_ID | VIS_INHERIT_PLANE //plane so it shows properly in containers on inventory ui for handheld cases
- SEND_SIGNAL(parent, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, vc_obj)
+ SEND_SIGNAL(parent, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, vc_obj, aquarium)
/datum/component/aquarium_content/proc/set_vc_base_position()
- SEND_SIGNAL(parent, AQUARIUM_CONTENT_RANDOMIZE_POSITION, current_aquarium, vc_obj)
- if(vc_obj.layer)
- current_aquarium.free_layer(vc_obj.layer)
- vc_obj.layer = current_aquarium.request_layer(vc_obj.layer_mode)
+ var/atom/movable/movable = parent
+ SEND_SIGNAL(movable.loc, COMSIG_AQUARIUM_SET_VISUAL, vc_obj) //set the necessary layer as well as the pixel bounds first
+ SEND_SIGNAL(movable, COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION, movable.loc, vc_obj)
-/datum/component/aquarium_content/proc/on_removed(obj/structure/aquarium/source, atom/movable/gone, direction)
+/datum/component/aquarium_content/proc/on_removed(atom/movable/aquarium, atom/movable/gone, direction)
SIGNAL_HANDLER
if(parent != gone)
return
- remove_from_aquarium()
+ remove_from_aquarium(aquarium)
-/datum/component/aquarium_content/proc/remove_from_aquarium()
- change_aquarium_beauty(-beauty)
- UnregisterSignal(current_aquarium, list(COMSIG_AQUARIUM_SURFACE_CHANGED, COMSIG_AQUARIUM_FLUID_CHANGED, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXITED))
- remove_visual_from_aquarium()
- current_aquarium = null
+/datum/component/aquarium_content/proc/remove_from_aquarium(atom/movable/aquarium)
+ UnregisterSignal(aquarium, list(COMSIG_AQUARIUM_FLUID_CHANGED, COMSIG_ATOM_EXITED) + animation_update_signals)
+ SEND_SIGNAL(aquarium, COMSIG_AQUARIUM_REMOVE_VISUAL, vc_obj)
-///The visual overlay of the aquarium content. It can hold a couple vars that we can modify through signal procs.
+///The visual overlay of the aquarium content. It can hold a few vars with values about the component of the aquarium it's in.
/obj/effect/aquarium
layer = 0 //set on set_vc_base_position
/// How the visual will be layered
var/layer_mode = AQUARIUM_LAYER_MODE_AUTO
-
-#undef DEAD_FISH_BEAUTY
-#undef MIN_DEAD_FISH_BEAUTY
-#undef MAX_DEAD_FISH_BEAUTY
-#undef MIN_AQUARIUM_BEAUTY
-#undef MAX_AQUARIUM_BEAUTY
+ ///minimum pixel x, inherited from the aquarium
+ var/aquarium_zone_min_px
+ ///maximum pixel x, inherited from the aquarium
+ var/aquarium_zone_max_px
+ ///minimum pixel y, inherited from the aquarium
+ var/aquarium_zone_min_py
+ ///maximum pixel y, inherited from the aquarium
+ var/aquarium_zone_max_py
+ ///The current fluid type, inherited fom the aquarium
+ var/fluid_type
diff --git a/code/datums/components/basic_inhands.dm b/code/datums/components/basic_inhands.dm
index ac50f618861f2..4d286e4eed3ea 100644
--- a/code/datums/components/basic_inhands.dm
+++ b/code/datums/components/basic_inhands.dm
@@ -39,7 +39,7 @@
SIGNAL_HANDLER
var/list/held_overlays = list()
for(var/obj/item/held in holding_mob.held_items)
- var/is_right = holding_mob.get_held_index_of_item(held) % 2 == 0
+ var/is_right = IS_RIGHT_INDEX(holding_mob.get_held_index_of_item(held))
var/icon_file = is_right ? held.righthand_file : held.lefthand_file
var/mutable_appearance/held_overlay = held.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE)
held_overlay.pixel_y += y_offset
diff --git a/code/datums/components/blob_minion.dm b/code/datums/components/blob_minion.dm
index 78bff449317ce..8366a65b51160 100644
--- a/code/datums/components/blob_minion.dm
+++ b/code/datums/components/blob_minion.dm
@@ -150,6 +150,6 @@
SIGNAL_HANDLER
overmind?.assume_direct_control(replacement)
-/datum/component/blob_minion/PostTransfer()
- if(!isliving(parent))
+/datum/component/blob_minion/PostTransfer(datum/new_parent)
+ if(!isliving(new_parent))
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm
index 461cfcff3aae4..342e27c4b29a7 100644
--- a/code/datums/components/bloodysoles.dm
+++ b/code/datums/components/bloodysoles.dm
@@ -108,7 +108,7 @@
set_bloody_shoes(pool.blood_state, new_our_bloodiness)
pool.bloodiness = total_bloodiness - new_our_bloodiness // Give the pool the remaining blood incase we were limited
- if(HAS_TRAIT(parent_atom, TRAIT_LIGHT_STEP)) //the character is agile enough to don't mess their clothing and hands just from one blood splatter at floor
+ if(HAS_TRAIT(parent_atom, TRAIT_LIGHT_STEP) || (wielder && HAS_TRAIT(wielder, TRAIT_LIGHT_STEP))) //the character is agile enough to don't mess their clothing and hands just from one blood splatter at floor
return TRUE
parent_atom.add_blood_DNA(GET_ATOM_BLOOD_DNA(pool))
@@ -211,7 +211,6 @@
// Create new footprints
if(theoretical_new_blood >= BLOOD_FOOTPRINTS_MIN)
adjust_bloody_shoes(last_blood_state, blood_lost)
- update_icon()
var/obj/effect/decal/cleanable/blood/footprints/FP = new(get_turf(parent_atom), footprint_sprite)
if(!QDELETED(FP)) ///prints merged
diff --git a/code/datums/components/bullet_intercepting.dm b/code/datums/components/bullet_intercepting.dm
index 32e757c1823e1..f327cae954306 100644
--- a/code/datums/components/bullet_intercepting.dm
+++ b/code/datums/components/bullet_intercepting.dm
@@ -56,7 +56,7 @@
wearer = null
/// Called when wearer is shot, check if we're going to block the hit
-/datum/component/bullet_intercepting/proc/on_wearer_shot(mob/living/victim, list/signal_args, obj/projectile/bullet)
+/datum/component/bullet_intercepting/proc/on_wearer_shot(mob/living/victim, obj/projectile/bullet)
SIGNAL_HANDLER
if (victim != wearer || victim.stat == DEAD || bullet.armor_flag != block_type)
return NONE
diff --git a/code/datums/components/burning.dm b/code/datums/components/burning.dm
index 2535a5b6f904c..7264689d13cc7 100644
--- a/code/datums/components/burning.dm
+++ b/code/datums/components/burning.dm
@@ -8,8 +8,10 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e
/datum/component/burning
/// Fire overlay appearance we apply
var/fire_overlay
- /// Particle holder for fire particles, if any
+ /// Particle holder for fire particles, if any. Still utilized over shared holders because they're movable-only
var/obj/effect/abstract/particle_holder/particle_effect
+ /// Particle type we're using for cleaning up our shared holder
+ var/particle_type
/datum/component/burning/Initialize(fire_overlay = GLOB.fire_overlay, fire_particles = /particles/smoke/burning)
if(!isatom(parent))
@@ -25,9 +27,14 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e
return
src.fire_overlay = fire_overlay
- if(fire_particles)
- // burning particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
- particle_effect = new(atom_parent, fire_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB)
+ if (fire_particles)
+ if(ismovable(parent))
+ var/atom/movable/movable_parent = parent
+ // burning particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
+ movable_parent.add_shared_particles(fire_particles, "[fire_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)
+ particle_type = fire_particles
+ else
+ particle_effect = new(atom_parent, fire_particles)
START_PROCESSING(SSburning, src)
/datum/component/burning/Destroy(force)
@@ -35,6 +42,9 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e
fire_overlay = null
if(particle_effect)
QDEL_NULL(particle_effect)
+ if (ismovable(parent) && particle_type)
+ var/atom/movable/movable_parent = parent
+ movable_parent.remove_shared_particles("[particle_type]_[isitem(parent)]")
return ..()
/datum/component/burning/RegisterWithParent()
@@ -81,16 +91,10 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e
source.extinguish()
return COMPONENT_CANCEL_ATTACK_CHAIN
- var/obj/item/bodypart/affecting = user.get_active_hand()
- //Should not happen!
- if(!affecting)
- return NONE
-
- affecting.receive_damage(burn = 5)
+ user.apply_damage(5, BURN, user.get_active_hand())
to_chat(user, span_userdanger("You burn your hand on [source]!"))
INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream")
playsound(source, SFX_SEAR, 50, TRUE)
- user.update_damage_overlays()
return COMPONENT_CANCEL_ATTACK_CHAIN
/// Maintains the burning overlay on the parent atom
diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm
index 0d65d2840f3c8..c281addacc231 100644
--- a/code/datums/components/chasm.dm
+++ b/code/datums/components/chasm.dm
@@ -49,7 +49,7 @@
//otherwise don't do anything because turfs and areas are initialized before movables.
if(!mapload)
addtimer(CALLBACK(src, PROC_REF(drop_stuff)), 0)
- parent.AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/chasm)
+ parent.AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/chasm])
/datum/component/chasm/UnregisterFromParent()
storage = null
diff --git a/code/datums/components/combustible_flooder.dm b/code/datums/components/combustible_flooder.dm
index 07df03671c16c..c24fae55b843b 100644
--- a/code/datums/components/combustible_flooder.dm
+++ b/code/datums/components/combustible_flooder.dm
@@ -57,7 +57,11 @@
message_admins(admin_message)
if(delete_parent && !QDELETED(parent))
- qdel(parent) // For things with the explodable component like plasma mats this isn't necessary, but there's no harm.
+ if(isobj(parent))
+ var/obj/obj_parent = parent
+ obj_parent.deconstruct(disassembled = FALSE)
+ else
+ qdel(parent) // For things with the explodable component like plasma mats this isn't necessary, but there's no harm.
qdel(src)
/// fire_act reaction.
diff --git a/code/datums/components/crafting/chemistry.dm b/code/datums/components/crafting/chemistry.dm
index 70d6c76dea249..66847281ec463 100644
--- a/code/datums/components/crafting/chemistry.dm
+++ b/code/datums/components/crafting/chemistry.dm
@@ -150,6 +150,8 @@
category = CAT_CHEMISTRY
/datum/crafting_recipe/improvised_chem_heater/on_craft_completion(mob/user, atom/result)
+ if(!istype(user))
+ return
var/obj/item/stock_parts/power_store/cell/cell = locate(/obj/item/stock_parts/power_store/cell) in range(1)
if(!cell)
return
diff --git a/code/datums/components/crafting/furniture.dm b/code/datums/components/crafting/furniture.dm
index 39f5a25a19f8f..c3f6557f89a2b 100644
--- a/code/datums/components/crafting/furniture.dm
+++ b/code/datums/components/crafting/furniture.dm
@@ -22,12 +22,22 @@
result = /obj/structure/aquarium
time = 10 SECONDS
reqs = list(
- /obj/item/stack/sheet/iron = 15,
+ /obj/item/stack/sheet/iron = 10,
/obj/item/stack/sheet/glass = 10,
/obj/item/aquarium_kit = 1,
)
category = CAT_FURNITURE
+/datum/crafting_recipe/fish_tank
+ name = "Portable Fish Tank"
+ result = /obj/item/fish_tank
+ time = 10 SECONDS
+ reqs = list(
+ /obj/item/stack/sheet/plastic = 5,
+ /obj/item/aquarium_kit = 1,
+ )
+ category = CAT_FURNITURE
+
/datum/crafting_recipe/mirror
name = "Mirror"
result = /obj/item/wallframe/mirror
diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm
index 21abedb8b47f8..8a6a014d5a4e5 100644
--- a/code/datums/components/crafting/robot.dm
+++ b/code/datums/components/crafting/robot.dm
@@ -42,12 +42,12 @@
time = 4 SECONDS
category = CAT_ROBOT
-/datum/crafting_recipe/floorbot
- name = "Floorbot"
- result = /mob/living/simple_animal/bot/floorbot
+/datum/crafting_recipe/repairbot
+ name = "Repairbot"
+ result = /mob/living/basic/bot/repairbot
reqs = list(
/obj/item/storage/toolbox = 1,
- /obj/item/stack/tile/iron = 10,
+ /obj/item/stack/conveyor = 1,
/obj/item/assembly/prox_sensor = 1,
/obj/item/bodypart/arm/right/robot = 1,
)
diff --git a/code/datums/components/customizable_reagent_holder.dm b/code/datums/components/customizable_reagent_holder.dm
index fd1b8a2ac6479..fda64d6c2568b 100644
--- a/code/datums/components/customizable_reagent_holder.dm
+++ b/code/datums/components/customizable_reagent_holder.dm
@@ -82,10 +82,10 @@
))
REMOVE_TRAIT(parent, TRAIT_CUSTOMIZABLE_REAGENT_HOLDER, REF(src))
-/datum/component/customizable_reagent_holder/PostTransfer()
- if(!isatom(parent))
+/datum/component/customizable_reagent_holder/PostTransfer(datum/new_parent)
+ if(!isatom(new_parent))
return COMPONENT_INCOMPATIBLE
- var/atom/atom_parent = parent
+ var/atom/atom_parent = new_parent
if (!atom_parent.reagents)
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/dart_insert.dm b/code/datums/components/dart_insert.dm
index ad869903051d2..459da9d217cbe 100644
--- a/code/datums/components/dart_insert.dm
+++ b/code/datums/components/dart_insert.dm
@@ -135,8 +135,6 @@
/datum/component/dart_insert/proc/apply_var_modifiers(obj/projectile/projectile)
var_modifiers = istype(modifier_getter) ? modifier_getter.Invoke() : list()
projectile.damage += var_modifiers["damage"]
- if(var_modifiers["speed"])
- var_modifiers["speed"] = reciprocal_add(projectile.speed, var_modifiers["speed"]) - projectile.speed
projectile.speed += var_modifiers["speed"]
projectile.armour_penetration += var_modifiers["armour_penetration"]
projectile.wound_bonus += var_modifiers["wound_bonus"]
diff --git a/code/datums/components/earprotection.dm b/code/datums/components/earprotection.dm
index 6439e49b831f5..6dfa7d9568baf 100644
--- a/code/datums/components/earprotection.dm
+++ b/code/datums/components/earprotection.dm
@@ -2,10 +2,13 @@
signals = list(COMSIG_CARBON_SOUNDBANG)
mobtype = /mob/living/carbon
proctype = PROC_REF(reducebang)
+ var/reduce_amount = 1
-/datum/component/wearertargeting/earprotection/Initialize(_valid_slots)
+/datum/component/wearertargeting/earprotection/Initialize(valid_slots, reduce_amount = 1)
. = ..()
- valid_slots = _valid_slots
+ src.valid_slots = valid_slots
+ if(reduce_amount)
+ src.reduce_amount = reduce_amount
/datum/component/wearertargeting/earprotection/proc/reducebang(datum/source, list/reflist)
- reflist[1]--
+ reflist[1] -= reduce_amount
diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm
index 09e583a0fcf7d..92404e3903e8e 100644
--- a/code/datums/components/embedded.dm
+++ b/code/datums/components/embedded.dm
@@ -65,8 +65,20 @@
if(damage > 0)
var/armor = victim.run_armor_check(limb.body_zone, MELEE, "Your armor has protected your [limb.plaintext_zone].", "Your armor has softened a hit to your [limb.plaintext_zone].", weapon.armour_penetration, weak_against_armour = weapon.weak_against_armour)
- limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, blocked = armor, wound_bonus = weapon.wound_bonus, bare_wound_bonus = weapon.bare_wound_bonus, sharpness = weapon.get_sharpness())
- victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage)
+ victim.apply_damage(
+ damage = (1 - embed_data.pain_stam_pct) * damage,
+ damagetype = BRUTE,
+ def_zone = limb,
+ blocked = armor,
+ wound_bonus = weapon.wound_bonus,
+ bare_wound_bonus = weapon.bare_wound_bonus,
+ sharpness = weapon.get_sharpness(),
+ attacking_item = weapon,
+ )
+ victim.apply_damage(
+ damage = embed_data.pain_stam_pct * damage,
+ damagetype = STAMINA,
+ )
/datum/component/embedded/Destroy()
var/mob/living/carbon/victim = parent
@@ -111,8 +123,18 @@
pain_chance_current *= 0.2
if(harmful && prob(pain_chance_current))
- limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND)
- victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage)
+ victim.apply_damage(
+ damage = (1 - embed_data.pain_stam_pct) * damage,
+ damagetype = BRUTE,
+ def_zone = limb,
+ wound_bonus = CANT_WOUND,
+ sharpness = weapon.get_sharpness(),
+ attacking_item = weapon,
+ )
+ victim.apply_damage(
+ damage = embed_data.pain_stam_pct * damage,
+ damagetype = STAMINA,
+ )
to_chat(victim, span_userdanger("[weapon] embedded in your [limb.plaintext_zone] hurts!"))
var/fall_chance_current = SPT_PROB_RATE(embed_data.fall_chance / 100, seconds_per_tick) * 100
@@ -152,8 +174,18 @@
if(harmful && prob(chance))
var/damage = weapon.w_class * embed_data.jostle_pain_mult
- limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND)
- victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage)
+ victim.apply_damage(
+ damage = (1 - embed_data.pain_stam_pct) * damage,
+ damagetype = BRUTE,
+ def_zone = limb,
+ wound_bonus = CANT_WOUND,
+ sharpness = weapon.get_sharpness(),
+ attacking_item = weapon,
+ )
+ victim.apply_damage(
+ damage = embed_data.pain_stam_pct * damage,
+ damagetype = STAMINA,
+ )
to_chat(victim, span_userdanger("[weapon] embedded in your [limb.plaintext_zone] jostles and stings!"))
@@ -164,8 +196,18 @@
if(harmful)
var/damage = weapon.w_class * embed_data.remove_pain_mult
- limb.receive_damage(brute= (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND)
- victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage)
+ victim.apply_damage(
+ damage = (1 - embed_data.pain_stam_pct) * damage,
+ damagetype = BRUTE,
+ def_zone = limb,
+ wound_bonus = CANT_WOUND,
+ sharpness = weapon.get_sharpness(),
+ attacking_item = weapon,
+ )
+ victim.apply_damage(
+ damage = embed_data.pain_stam_pct * damage,
+ damagetype = STAMINA,
+ )
victim.visible_message(span_danger("[weapon] falls [harmful ? "out" : "off"] of [victim.name]'s [limb.plaintext_zone]!"), span_userdanger("[weapon] falls [harmful ? "out" : "off"] of your [limb.plaintext_zone]!"))
safeRemove()
@@ -199,8 +241,18 @@
/datum/component/embedded/proc/damaging_removal(mob/living/carbon/victim, obj/item/removed, obj/item/bodypart/limb, ouch_multiplier = 1)
var/datum/embed_data/embed_data = weapon.get_embed()
var/damage = weapon.w_class * embed_data.remove_pain_mult * ouch_multiplier
- limb.receive_damage(brute= (1 - embed_data.pain_stam_pct) * damage, sharpness = SHARP_EDGED) //It hurts to rip it out, get surgery you dingus. unlike the others, this CAN wound + increase slash bloodflow
- victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage)
+ victim.apply_damage(
+ damage = (1 - embed_data.pain_stam_pct) * damage,
+ damagetype = BRUTE,
+ def_zone = limb,
+ wound_bonus = max(0, weapon.wound_bonus), // It hurts to rip it out, get surgery you dingus. unlike the others, this CAN wound + increase slash bloodflow
+ sharpness = weapon.get_sharpness() || SHARP_EDGED, // always sharp, even if the object isn't
+ attacking_item = weapon,
+ )
+ victim.apply_damage(
+ damage = embed_data.pain_stam_pct * damage,
+ damagetype = STAMINA,
+ )
victim.emote("scream")
/// This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely.
@@ -301,10 +353,20 @@
var/datum/embed_data/embed_data = weapon.get_embed()
var/damage = weapon.w_class * embed_data.remove_pain_mult
- limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage * 1.5, sharpness = SHARP_EDGED) // Performs exit wounds and flings the user to the caster if nearby
+ victim.apply_damage(
+ damage = (1 - embed_data.pain_stam_pct) * damage * 1.5,
+ damagetype = BRUTE,
+ def_zone = limb,
+ wound_bonus = max(0, weapon.wound_bonus), // Performs exit wounds and flings the user to the caster if nearby
+ sharpness = weapon.get_sharpness() || SHARP_EDGED,
+ attacking_item = weapon,
+ )
+ victim.apply_damage(
+ damage = embed_data.pain_stam_pct * damage,
+ damagetype = STAMINA,
+ )
victim.cause_wound_of_type_and_severity(WOUND_PIERCE, limb, WOUND_SEVERITY_MODERATE)
- victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage)
- playsound(get_turf(victim), 'sound/effects/wounds/blood2.ogg', 50, TRUE)
+ playsound(victim, 'sound/effects/wounds/blood2.ogg', 50, TRUE)
var/dist = get_dist(caster, victim) //Check if the caster is close enough to yank them in
if(dist < 7)
diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm
index 9dc8db3bbc4f1..db77f865fd7ae 100644
--- a/code/datums/components/explodable.dm
+++ b/code/datums/components/explodable.dm
@@ -147,18 +147,20 @@
return // If we don't do this and this doesn't delete it can lock the MC into only processing Input, Timers, and Explosions.
var/atom/bomb = parent
- var/log = TRUE
- if(light_impact_range < 1)
- log = FALSE
+ var/do_log = light_impact_range >= 1
exploding = TRUE
- explosion(bomb, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, log, uncapped) //epic explosion time
+ explosion(bomb, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, do_log, uncapped) //epic explosion time
switch(delete_after)
if(EXPLODABLE_DELETE_SELF)
qdel(src)
if(EXPLODABLE_DELETE_PARENT)
- qdel(bomb)
+ if(isobj(bomb))
+ var/obj/obj_bomb = bomb
+ obj_bomb.deconstruct(disassembled = FALSE)
+ else
+ qdel(bomb)
else
addtimer(CALLBACK(src, PROC_REF(reset_exploding)), 0.1 SECONDS)
diff --git a/code/datums/components/fishing_spot.dm b/code/datums/components/fishing_spot.dm
index 982b0da2df71a..3ce68dce33959 100644
--- a/code/datums/components/fishing_spot.dm
+++ b/code/datums/components/fishing_spot.dm
@@ -13,7 +13,6 @@
else
return COMPONENT_INCOMPATIBLE
fish_source.on_fishing_spot_init(src)
- RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(handle_attackby))
RegisterSignal(parent, COMSIG_FISHING_ROD_CAST, PROC_REF(handle_cast))
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined))
RegisterSignal(parent, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(on_examined_more))
@@ -36,19 +35,13 @@
return FISHING_ROD_CAST_HANDLED
return NONE
-/datum/component/fishing_spot/proc/handle_attackby(datum/source, obj/item/item, mob/user, params)
- SIGNAL_HANDLER
- if(try_start_fishing(item,user))
- return COMPONENT_NO_AFTERATTACK
- return NONE
-
///If the fish source has fishes that are shown in the
/datum/component/fishing_spot/proc/on_examined(datum/source, mob/user, list/examine_text)
SIGNAL_HANDLER
if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT))
return
- if(!fish_source.has_known_fishes())
+ if(!fish_source.has_known_fishes(source))
return
examine_text += span_tinynoticeital("This is a fishing spot. You can look again to list its fishes...")
diff --git a/code/datums/components/food/decomposition.dm b/code/datums/components/food/decomposition.dm
index a3850ab39a6bc..c883f82f658f4 100644
--- a/code/datums/components/food/decomposition.dm
+++ b/code/datums/components/food/decomposition.dm
@@ -27,8 +27,6 @@
var/produce_ants = FALSE
/// Stink particle type, if we are supposed to create stink particles
var/stink_particles
- /// Stink particle holder
- var/obj/effect/abstract/particle_holder/particle_effect
/datum/component/decomposition/Initialize(mapload, decomp_req_handle, decomp_flags = NONE, decomp_result, ant_attracting = FALSE, custom_time = 0, stink_particles = /particles/stink)
if(!ismovable(parent) || !HAS_TRAIT(parent, TRAIT_GERM_SENSITIVE))
@@ -52,9 +50,11 @@
src.stink_particles = stink_particles
/datum/component/decomposition/Destroy()
- . = ..()
- if(particle_effect)
- QDEL_NULL(particle_effect)
+ remove_timer()
+ if (stink_particles)
+ var/atom/movable/movable_parent = parent
+ movable_parent.remove_shared_particles("[stink_particles]_[isitem(parent)]")
+ return ..()
/datum/component/decomposition/RegisterWithParent()
RegisterSignal(parent, COMSIG_ATOM_GERM_EXPOSED, PROC_REF(start_timer))
@@ -78,17 +78,13 @@
// If all other checks fail, then begin decomposition.
decomp_timerid = addtimer(CALLBACK(src, PROC_REF(decompose)), time_remaining, TIMER_STOPPABLE | TIMER_UNIQUE)
- // Also start the stinking timer, if have stink particles and aren't stinking yet
- if(!stink_particles || particle_effect)
+ // Also start the stinking timer, if have stink particles
+ if(!stink_particles)
return
var/stink_time = max(0, time_remaining - (original_time * 0.5))
stink_timerid = addtimer(CALLBACK(src, PROC_REF(stink_up)), stink_time, TIMER_STOPPABLE | TIMER_UNIQUE)
-/datum/component/decomposition/Destroy()
- remove_timer()
- return ..()
-
/// Returns the time remaining in decomp, either from our potential timer or our own value, whichever is more useful
/datum/component/decomposition/proc/get_time()
if(!decomp_timerid)
@@ -108,11 +104,12 @@
/datum/component/decomposition/proc/stink_up()
stink_timerid = null
- // Neither should happen, but to be sure
- if(particle_effect || !stink_particles)
+ // Shouldn't happen, but to be sure
+ if(!stink_particles)
return
// we don't want stink lines on mobs (even though it'd be quite funny)
- particle_effect = new(parent, stink_particles, isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)
+ var/atom/movable/movable_parent = parent
+ movable_parent.add_shared_particles(stink_particles, "[stink_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)
/datum/component/decomposition/proc/decompose()
decomp_timerid = null
diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm
index 62e446f5a283a..7d0ca5dbe1275 100644
--- a/code/datums/components/food/edible.dm
+++ b/code/datums/components/food/edible.dm
@@ -368,12 +368,11 @@ Behavior that's still missing from this component that original food items had t
var/fullness = eater.get_fullness() + 10 //The theoretical fullness of the person eating if they were to eat this
var/time_to_eat = (eater == feeder) ? eat_time : EAT_TIME_FORCE_FEED
- if(HAS_TRAIT(eater, TRAIT_VORACIOUS))
+ if(HAS_TRAIT(eater, TRAIT_VORACIOUS) && !HAS_TRAIT(eater, TRAIT_GLUTTON)) //with TRAIT_GLUTTON you consume food without delay
if(fullness < NUTRITION_LEVEL_FAT || (eater != feeder)) // No extra delay when being forcefed
time_to_eat *= EAT_TIME_VORACIOUS_MULT
else
time_to_eat *= (fullness / NUTRITION_LEVEL_FAT) * EAT_TIME_VORACIOUS_FULL_MULT // takes longer to eat the more well fed you are
-
if(eater == feeder)//If you're eating it yourself.
if(eat_time > 0 && !do_after(feeder, time_to_eat, eater, timed_action_flags = food_flags & FOOD_FINGER_FOOD ? IGNORE_USER_LOC_CHANGE | IGNORE_TARGET_LOC_CHANGE : NONE)) //Gotta pass the minimal eat time
return
@@ -385,12 +384,12 @@ Behavior that's still missing from this component that original food items had t
var/message_to_consumer = ""
var/message_to_blind_consumer = ""
- if(junkiness && eater.satiety < -150 && eater.nutrition > NUTRITION_LEVEL_STARVING + 50 && !HAS_TRAIT(eater, TRAIT_VORACIOUS))
+ if(junkiness && eater.satiety < -150 && eater.nutrition > NUTRITION_LEVEL_STARVING + 50 && !HAS_TRAIT(eater, TRAIT_VORACIOUS) && !HAS_TRAIT(eater, TRAIT_GLUTTON))
to_chat(eater, span_warning("You don't feel like eating any more junk food at the moment!"))
return
else if(fullness > (600 * (1 + eater.overeatduration / (4000 SECONDS)))) // The more you eat - the more you can eat
- if(HAS_TRAIT(eater, TRAIT_VORACIOUS))
- message_to_nearby_audience = span_notice("[eater] voraciously forces \the [parent] down [eater.p_their()] throat..")
+ if(HAS_TRAIT(eater, TRAIT_VORACIOUS) || HAS_TRAIT(eater, TRAIT_GLUTTON))
+ message_to_nearby_audience = span_notice("[eater] voraciously forces \the [parent] down [eater.p_their()] throat.")
message_to_consumer = span_notice("You voraciously force \the [parent] down your throat.")
else
message_to_nearby_audience = span_warning("[eater] cannot force any more of \the [parent] to go down [eater.p_their()] throat!")
diff --git a/code/datums/components/food_storage.dm b/code/datums/components/food_storage.dm
index 843f611e5ff3e..32fb27c7b729a 100644
--- a/code/datums/components/food_storage.dm
+++ b/code/datums/components/food_storage.dm
@@ -4,7 +4,7 @@
/datum/component/food_storage
/// Reference to what we have in our food.
- var/obj/item/stored_item
+ VAR_FINAL/obj/item/stored_item
/// The amount of volume the food has on creation - Used for probabilities
var/initial_volume = 10
/// Minimum size items that can be inserted
@@ -13,16 +13,14 @@
var/bad_chance_of_discovery = 0
/// What are the odds we see the stored item before we bite it?
var/good_chance_of_discovery = 100
- /// The stored item was found out somehow.
- var/discovered = FALSE
/datum/component/food_storage/Initialize(_minimum_weight_class = WEIGHT_CLASS_SMALL, _bad_chance = 0, _good_chance = 100)
RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY, PROC_REF(try_inserting_item))
+ RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item))
RegisterSignal(parent, COMSIG_CLICK_CTRL, PROC_REF(try_removing_item))
RegisterSignal(parent, COMSIG_FOOD_EATEN, PROC_REF(consume_food_storage))
- RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item))
-
+ RegisterSignals(parent, list(COMSIG_FOOD_CONSUMED, COMSIG_OBJ_DECONSTRUCT), PROC_REF(storage_consumed))
var/atom/food = parent
initial_volume = food.reagents.total_volume
@@ -33,12 +31,19 @@
food.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1
-/datum/component/food_storage/Destroy(force)
- if(stored_item)
- stored_item.forceMove(stored_item.drop_location())
- stored_item.dropped()
- stored_item = null
- . = ..()
+/datum/component/food_storage/UnregisterFromParent()
+ UnregisterSignal(parent, list(
+ COMSIG_ATOM_ITEM_INTERACTION_SECONDARY,
+ COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM,
+ COMSIG_CLICK_CTRL,
+ COMSIG_FOOD_CONSUMED,
+ COMSIG_FOOD_EATEN,
+ COMSIG_OBJ_DECONSTRUCT,
+ ))
+ if(QDELING(parent) || QDELETED(stored_item))
+ return
+ stored_item.forceMove(stored_item.drop_location())
+ stored_item = null
/** Begins the process of inserted an item.
*
@@ -60,19 +65,17 @@
return NONE
if(inserted_item.w_class > minimum_weight_class)
- to_chat(user, span_warning("\The [inserted_item.name] won't fit in \the [parent]."))
+ to_chat(user, span_warning("[inserted_item] won't fit in [parent]."))
return ITEM_INTERACT_BLOCKING
if(!QDELETED(stored_item))
- to_chat(user, span_warning("There's something in \the [parent]."))
- return ITEM_INTERACT_BLOCKING
-
- if(HAS_TRAIT(inserted_item, TRAIT_NODROP))
- to_chat(user, span_warning("\the [inserted_item] is stuck to your hand, you can't put into \the [parent]!"))
+ to_chat(user, span_warning("There's something in [parent]."))
return ITEM_INTERACT_BLOCKING
- user.visible_message(span_notice("[user.name] begins inserting [inserted_item.name] into \the [parent]."), \
- span_notice("You start to insert the [inserted_item.name] into \the [parent]."))
+ user.visible_message(
+ span_notice("[user] begins inserting [inserted_item] into [parent]."),
+ span_notice("You start to insert the [inserted_item] into [parent]."),
+ )
INVOKE_ASYNC(src, PROC_REF(insert_item), inserted_item, user)
return ITEM_INTERACT_SUCCESS
@@ -89,14 +92,11 @@
var/atom/food = parent
- if(QDELETED(stored_item))
- return CLICK_ACTION_BLOCKING
-
if(!food.can_interact(user))
return CLICK_ACTION_BLOCKING
- user.visible_message(span_notice("[user.name] begins tearing at \the [parent]."), \
- span_notice("You start to rip into \the [parent]."))
+ user.visible_message(span_notice("[user] begins tearing at [parent]."), \
+ span_notice("You start to rip into [parent]."))
INVOKE_ASYNC(src, PROC_REF(begin_remove_item), user)
return CLICK_ACTION_SUCCESS
@@ -110,9 +110,12 @@
/datum/component/food_storage/proc/insert_item(obj/item/inserted_item, mob/user)
if(!do_after(user, 1.5 SECONDS, target = parent))
return
+ if(!user.temporarilyRemoveItemFromInventory(inserted_item))
+ to_chat(user, span_warning("You can't seem to insert [inserted_item] into [parent]."))
+ return
var/atom/food = parent
- to_chat(user, span_notice("You slip [inserted_item.name] inside \the [parent]."))
+ to_chat(user, span_notice("You slip [inserted_item] inside [parent]."))
inserted_item.forceMove(food)
user.log_message("inserted [inserted_item] into [parent].", LOG_ATTACK)
food.add_fingerprint(user)
@@ -126,19 +129,22 @@
* user - person removing the item.
*/
/datum/component/food_storage/proc/begin_remove_item(mob/user)
- if(do_after(user, 10 SECONDS, target = parent))
- remove_item(user)
+ if(!do_after(user, 10 SECONDS, target = parent))
+ return
+ if(QDELETED(stored_item))
+ to_chat(user, span_warning("There's nothing in [parent]."))
+ return
+ remove_item(user)
/**
* Removes the stored item, putting it in user's hands or on the ground, then updates the reference.
*/
/datum/component/food_storage/proc/remove_item(mob/user)
if(user.put_in_hands(stored_item))
- user.visible_message(span_warning("[user.name] slowly pulls [stored_item.name] out of \the [parent]."), \
- span_warning("You slowly pull [stored_item.name] out of \the [parent]."))
+ user.visible_message(span_warning("[user] slowly pulls [stored_item] out of [parent]."), \
+ span_warning("You slowly pull [stored_item] out of [parent]."))
else
- stored_item.dropped()
- stored_item.visible_message(span_warning("[stored_item.name] falls out of \the [parent]."))
+ stored_item.visible_message(span_warning("[stored_item] falls out of [parent]."))
update_stored_item()
@@ -167,9 +173,10 @@
/// Chance of finding the held item = bad chance - 50
good_chance_of_discovery = bad_chance_of_discovery - 50
+ var/discovered = FALSE
if(prob(good_chance_of_discovery)) //finding the item, without biting it
discovered = TRUE
- to_chat(target, span_warning("It feels like there's something in \the [parent]...!"))
+ to_chat(target, span_warning("It feels like there's something in [parent]...!"))
else if(prob(bad_chance_of_discovery)) //finding the item, BY biting it
user.log_message("just fed [key_name(target)] \a [stored_item] which was hidden in [parent].", LOG_ATTACK)
@@ -179,6 +186,14 @@
if(!QDELETED(stored_item) && discovered)
INVOKE_ASYNC(src, PROC_REF(remove_item), user)
+/// When fully consumed, just drop the item out on the ground.
+/datum/component/food_storage/proc/storage_consumed(datum/source, mob/living/target, mob/living/user)
+ SIGNAL_HANDLER
+ if(QDELETED(stored_item))
+ return
+ stored_item.forceMove(stored_item.drop_location())
+ stored_item = null
+
/** Updates the reference of the stored item.
*
* Checks the food's contents for if an alternate item was placed into the food.
diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm
index edde591c0c386..3699ee75b8c34 100644
--- a/code/datums/components/gunpoint.dm
+++ b/code/datums/components/gunpoint.dm
@@ -194,7 +194,7 @@
return
var/flinch_chance = 50
- var/gun_hand = (source.get_held_index_of_item(weapon) % 2) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM
+ var/gun_hand = IS_LEFT_INDEX(source.get_held_index_of_item(weapon)) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM
if(isbodypart(def_zone))
var/obj/item/bodypart/hitting = def_zone
diff --git a/code/datums/components/happiness.dm b/code/datums/components/happiness.dm
index a131e86960eb3..beaad4b7ca93b 100644
--- a/code/datums/components/happiness.dm
+++ b/code/datums/components/happiness.dm
@@ -105,8 +105,7 @@
/datum/component/happiness/proc/view_happiness(mob/living/source, mob/living/clicker)
if(HAS_TRAIT(source, TRAIT_MOB_HIDE_HAPPINESS) || !istype(clicker) || !COOLDOWN_FINISHED(src, happiness_inspect) || !clicker.CanReach(source))
return
- var/list/offset_to_add = get_icon_dimensions(source.icon)
- var/y_position = offset_to_add["height"] + 1
+ var/y_position = source.get_cached_height() + 1
var/obj/effect/overlay/happiness_overlay/hearts = new
hearts.pixel_y = y_position
hearts.set_hearts(happiness_level/maximum_happiness)
diff --git a/code/datums/components/hat_stabilizer.dm b/code/datums/components/hat_stabilizer.dm
index 40cae0633f48b..9a79895153023 100644
--- a/code/datums/components/hat_stabilizer.dm
+++ b/code/datums/components/hat_stabilizer.dm
@@ -1,7 +1,10 @@
/// Allows players to place hats on the atom this is attached to
/datum/component/hat_stabilizer
+ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
/// Currently "stored" hat. No armor or function will be inherited, only the icon and cover flags.
var/obj/item/clothing/head/attached_hat
+ /// If TRUE, the hat will fall to the ground when the owner does so. It can also be shot off.
+ var/loose_hat = FALSE
/// Original cover flags for the helmet, before a hat is placed
var/former_flags
var/former_visor_flags
@@ -10,7 +13,7 @@
/// Pixel_y offset for the hat
var/pixel_y_offset
-/datum/component/hat_stabilizer/Initialize(add_overlay = FALSE, use_worn_icon = TRUE, pixel_y_offset = 0)
+/datum/component/hat_stabilizer/Initialize(use_worn_icon = FALSE, pixel_y_offset = 0, loose_hat = FALSE)
if(!ismovable(parent))
return COMPONENT_INCOMPATIBLE
@@ -19,14 +22,37 @@
src.use_worn_icon = use_worn_icon
src.pixel_y_offset = pixel_y_offset
+ src.loose_hat = loose_hat
+ // Examine signals
RegisterSignal(source, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
+ RegisterSignal(source, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item))
+
+ // Equip signals, used to drop loose hats
+ RegisterSignal(source, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
+ RegisterSignal(source, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
+
+ // Wear & Remove
RegisterSignal(source, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby))
- RegisterSignal(source, COMSIG_QDELETING, PROC_REF(on_qdel))
RegisterSignal(source, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(on_secondary_attack_hand))
+
+ // Overlays
RegisterSignals(source, list(COMSIG_MODULE_GENERATE_WORN_OVERLAY, COMSIG_ITEM_GET_WORN_OVERLAYS), PROC_REF(get_worn_overlays))
- RegisterSignal(source, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item))
- if (add_overlay)
- RegisterSignal(source, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlays))
+
+ RegisterSignal(source, COMSIG_QDELETING, PROC_REF(on_qdel))
+
+// Inherit the new values passed to the component
+/datum/component/hat_stabilizer/InheritComponent(datum/component/hat_stabilizer/new_comp, original, use_worn_icon, pixel_y_offset, loose_hat)
+ if(!original)
+ return
+
+ if(!isnull(use_worn_icon))
+ src.use_worn_icon = use_worn_icon
+ if(!isnull(use_worn_icon))
+ src.use_worn_icon = use_worn_icon
+ if(!isnull(pixel_y_offset))
+ src.pixel_y_offset = pixel_y_offset
+ if(!isnull(loose_hat))
+ src.loose_hat = loose_hat
/datum/component/hat_stabilizer/UnregisterFromParent()
if (attached_hat)
@@ -34,12 +60,44 @@
UnregisterSignal(parent, list(COMSIG_ATOM_EXAMINE, COMSIG_ATOM_ATTACKBY,
COMSIG_ATOM_ATTACK_HAND_SECONDARY, COMSIG_MODULE_GENERATE_WORN_OVERLAY,
COMSIG_ITEM_GET_WORN_OVERLAYS, COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_QDELETING,
- COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM))
+ COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
+
+/datum/component/hat_stabilizer/proc/on_equip(datum/source, mob/equipper, slot)
+ SIGNAL_HANDLER
+
+ if(!loose_hat)
+ return
+
+ var/obj/item/our_item = parent
+ if(!(slot & our_item.slot_flags))
+ return
+ RegisterSignals(equipper, list(COMSIG_MOB_SLIPPED, COMSIG_LIVING_SLAPPED, COMSIG_MOVABLE_POST_THROW), PROC_REF(throw_hat))
+ RegisterSignal(equipper, COMSIG_LIVING_THUD, PROC_REF(drop_hat))
+
+/datum/component/hat_stabilizer/proc/on_drop(datum/source, mob/dropper)
+ SIGNAL_HANDLER
+ UnregisterSignal(dropper, list(COMSIG_MOB_SLIPPED, COMSIG_LIVING_SLAPPED, COMSIG_MOVABLE_POST_THROW, COMSIG_LIVING_THUD))
+
+/datum/component/hat_stabilizer/proc/throw_hat(mob/hatless)
+ SIGNAL_HANDLER
+ if(!loose_hat)
+ return
+ var/obj/item/hat = remove_hat()
+ if(!hat)
+ return
+ hat.visible_message(span_danger("[hat] goes flying off [hatless]'s head!"))
+ hat.throw_at(get_edge_target_turf(get_turf(hat), pick(GLOB.alldirs)), 2, 1, spin = TRUE)
+
+/datum/component/hat_stabilizer/proc/drop_hat(mob/hatless)
+ SIGNAL_HANDLER
+ if(!loose_hat)
+ return
+ remove_hat()
/datum/component/hat_stabilizer/proc/on_examine(datum/source, mob/user, list/base_examine)
SIGNAL_HANDLER
if(attached_hat)
- base_examine += span_notice("There's \a [attached_hat] placed on [parent].")
+ base_examine += span_notice("There's \a [attached_hat] [loose_hat ? "loosely" : ""] placed on [parent].")
else
base_examine += span_notice("There's nothing placed on [parent]. Yet.")
@@ -49,17 +107,15 @@
return
if(attached_hat)
var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER-0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi')
+ // loose hats are slightly angled
+ if(loose_hat)
+ var/matrix/tilt_trix = matrix(worn_overlay.transform)
+ var/angle = 5
+ tilt_trix.Turn(angle * pick(1, -1))
+ worn_overlay.transform = tilt_trix
worn_overlay.pixel_y = pixel_y_offset + attached_hat.worn_y_offset
overlays += worn_overlay
-/datum/component/hat_stabilizer/proc/on_update_overlays(atom/movable/source, list/overlays)
- SIGNAL_HANDLER
- if (isnull(attached_hat))
- return
- var/mutable_appearance/worn_overlay = use_worn_icon ? attached_hat.build_worn_icon(default_layer = ABOVE_OBJ_LAYER, default_icon_file = 'icons/mob/clothing/head/default.dmi') : mutable_appearance(attached_hat, layer = ABOVE_OBJ_LAYER)
- worn_overlay.pixel_y = pixel_y_offset
- overlays += worn_overlay
-
/datum/component/hat_stabilizer/proc/on_qdel(atom/movable/source)
SIGNAL_HANDLER
@@ -90,7 +146,7 @@
/datum/component/hat_stabilizer/proc/attach_hat(obj/item/clothing/hat, mob/user)
var/atom/movable/movable_parent = parent
attached_hat = hat
- RegisterSignal(hat, COMSIG_MOVABLE_MOVED, PROC_REF(remove_hat))
+ RegisterSignal(hat, COMSIG_MOVABLE_MOVED, PROC_REF(on_hat_movement))
if (!isnull(user))
movable_parent.balloon_alert(user, "hat attached")
@@ -111,6 +167,10 @@
var/mob/wearer = apparel.loc
wearer.update_clothing(wearer.get_slot_by_item(apparel))
+/datum/component/hat_stabilizer/proc/on_hat_movement(obj/hat, mob/user)
+ SIGNAL_HANDLER
+ remove_hat(user)
+
/datum/component/hat_stabilizer/proc/on_secondary_attack_hand(datum/source, mob/user)
SIGNAL_HANDLER
. = COMPONENT_CANCEL_ATTACK_CHAIN
@@ -122,9 +182,9 @@
else
movable_parent.balloon_alert_to_viewers("the hat falls to the floor!")
-/datum/component/hat_stabilizer/proc/remove_hat(mob/user)
- SIGNAL_HANDLER
+/datum/component/hat_stabilizer/proc/on_retraction()
+/datum/component/hat_stabilizer/proc/remove_hat(mob/user)
if(QDELETED(attached_hat))
return
@@ -144,6 +204,7 @@
movable_parent.update_appearance()
return
+ var/former_hat = attached_hat
var/obj/item/clothing/apparel = parent
apparel.detach_clothing_traits(attached_hat)
apparel.flags_cover = former_flags
@@ -154,6 +215,8 @@
var/mob/wearer = apparel.loc
wearer.update_clothing(wearer.get_slot_by_item(apparel))
+ return former_hat
+
/datum/component/hat_stabilizer/proc/on_requesting_context_from_item(atom/source, list/context, obj/item/held_item, mob/user)
SIGNAL_HANDLER
diff --git a/code/datums/components/heart_eater.dm b/code/datums/components/heart_eater.dm
index 122716b3be5b9..3e6e072803111 100644
--- a/code/datums/components/heart_eater.dm
+++ b/code/datums/components/heart_eater.dm
@@ -50,7 +50,7 @@
eater_tongue.disliked_foodtypes &= ~GORE
eater_tongue.liked_foodtypes |= GORE
-/datum/component/heart_eater/proc/on_species_change(mob/living/carbon/human/eater, datum/species/new_species, datum/species/old_species)
+/datum/component/heart_eater/proc/on_species_change(mob/living/carbon/human/eater, datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons)
SIGNAL_HANDLER
eater.dna?.species?.damage_modifier += remember_modifier
diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm
index ecd2f1ff836fd..f168a3eba35de 100644
--- a/code/datums/components/infective.dm
+++ b/code/datums/components/infective.dm
@@ -13,7 +13,7 @@
return COMPONENT_INCOMPATIBLE
if(!islist(diseases))
- diseases = islist(diseases)
+ diseases = list(diseases)
///Make sure the diseases list is populated with instances of diseases so that it doesn't have to be for each AddComponent call.
for(var/datum/disease/disease as anything in diseases)
@@ -115,8 +115,8 @@
return
if(!is_weak)
- var/appendage_zone = feeder.held_items.Find(source)
- appendage_zone = appendage_zone == 0 ? BODY_ZONE_CHEST : (appendage_zone % 2 ? BODY_ZONE_R_ARM : BODY_ZONE_L_ARM)
+ var/appendage_zone = feeder.get_held_index_of_item(source)
+ appendage_zone = appendage_zone == 0 ? BODY_ZONE_CHEST : (IS_RIGHT_INDEX(appendage_zone) ? BODY_ZONE_R_ARM : BODY_ZONE_L_ARM)
try_infect(feeder, appendage_zone)
for(var/datum/disease/disease as anything in diseases)
diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm
index a798124528c06..6df77dbfdc9fd 100644
--- a/code/datums/components/irradiated.dm
+++ b/code/datums/components/irradiated.dm
@@ -181,10 +181,10 @@
if (isliving(source))
var/mob/living/living_source = source
- to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Subject is irradiated. Contamination traces back to roughly [DisplayTimeText(world.time - beginning_of_irradiation, 5)] ago. Current toxin levels: [living_source.getToxLoss()]."))
+ to_chat(user, span_bolddanger("[icon2html(geiger_counter, user)] Subject is irradiated. Contamination traces back to roughly [DisplayTimeText(world.time - beginning_of_irradiation, 5)] ago. Current toxin levels: [living_source.getToxLoss()]."))
else
// In case the green wasn't obvious enough...
- to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Target is irradiated."))
+ to_chat(user, span_bolddanger("[icon2html(geiger_counter, user)] Target is irradiated."))
return COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL
diff --git a/code/datums/components/item_killsound.dm b/code/datums/components/item_killsound.dm
new file mode 100644
index 0000000000000..f6e5b4d9b76e9
--- /dev/null
+++ b/code/datums/components/item_killsound.dm
@@ -0,0 +1,41 @@
+/datum/component/item_killsound
+ /// list of allowed types, not null/empty
+ var/list/allowed_mobs
+ /// list of blacklisted types
+ var/list/blacklisted_mobs
+ var/killsound
+ var/killsound_volume = 100
+ /**
+ * on true will act as replacement for mob's death sound,
+ * otherwise it will just play sound on death
+ */
+ var/replace_default_death_sound
+
+/datum/component/item_killsound/Initialize(
+ allowed_mobs,
+ blacklisted_mobs,
+ killsound,
+ killsound_volume = 100,
+ replace_default_death_sound = FALSE
+)
+ src.allowed_mobs = allowed_mobs
+ src.blacklisted_mobs = blacklisted_mobs
+ src.killsound = killsound
+ src.killsound_volume = killsound_volume
+ src.replace_default_death_sound = replace_default_death_sound
+
+/datum/component/item_killsound/RegisterWithParent()
+ var/obj/item/item_parent = parent
+ RegisterSignal(item_parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack))
+
+/datum/component/item_killsound/proc/on_attack(host, target_mob, user, params)
+ SIGNAL_HANDLER
+
+ if(!allowed_mobs || is_type_in_list(target_mob, allowed_mobs))
+ if(is_type_in_list(target_mob, blacklisted_mobs))
+ return
+ var/mob/living/mob = target_mob
+ if(replace_default_death_sound)
+ mob.apply_status_effect(/datum/status_effect/replace_death_sound, 1 SECONDS, killsound)
+ else
+ mob.apply_status_effect(/datum/status_effect/death_sound, 1 SECONDS, killsound, killsound_volume)
diff --git a/code/datums/components/itempicky.dm b/code/datums/components/itempicky.dm
index bda8b1ae13881..f8e4e2256d857 100644
--- a/code/datums/components/itempicky.dm
+++ b/code/datums/components/itempicky.dm
@@ -27,8 +27,8 @@
/datum/component/itempicky/UnregisterFromParent()
UnregisterSignal(parent, COMSIG_LIVING_TRY_PUT_IN_HAND)
-/datum/component/itempicky/PostTransfer()
- if(!ismob(parent))
+/datum/component/itempicky/PostTransfer(datum/new_parent)
+ if(!ismob(new_parent))
return COMPONENT_INCOMPATIBLE
/datum/component/itempicky/InheritComponent(datum/component/itempicky/friend, i_am_original, list/arguments)
diff --git a/code/datums/components/jetpack.dm b/code/datums/components/jetpack.dm
index fd49aa2b67b6a..c7ff096029b97 100644
--- a/code/datums/components/jetpack.dm
+++ b/code/datums/components/jetpack.dm
@@ -3,8 +3,10 @@
// So propulsion through space on move, that sort of thing
/datum/component/jetpack
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
- /// Checks to ensure if we can move & if we can activate
+ /// Checks to ensure if we can move
var/datum/callback/check_on_move
+ /// Checks to ensure we can activate
+ var/datum/callback/check_on_activation
/// If we should stabilize ourselves when not drifting
var/stabilize = FALSE
/// The signal we listen for as an activation
@@ -23,6 +25,10 @@
var/stabilization_force
/// Our current user
var/mob/user
+ /// Last tick on which we triggered, to prevent double-dipping
+ var/last_force_tick
+ /// Last tick on which we stabilized
+ var/last_stabilization_tick
/**
* Arguments:
@@ -35,7 +41,7 @@
* * check_on_move - Callback we call each time we attempt a move, we expect it to retun true if the move is ok, false otherwise. It expects an arg, TRUE if fuel should be consumed, FALSE othewise
* * effect_type - Type of trail_follow to spawn
*/
-/datum/component/jetpack/Initialize(stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type)
+/datum/component/jetpack/Initialize(stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/callback/check_on_activation, datum/effect_system/trail_follow/effect_type)
. = ..()
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
@@ -48,6 +54,7 @@
src.stabilize = stabilize
src.check_on_move = check_on_move
+ src.check_on_activation = check_on_activation
src.activation_signal = activation_signal
src.deactivation_signal = deactivation_signal
src.return_flag = return_flag
@@ -55,7 +62,7 @@
src.drift_force = drift_force
src.stabilization_force = stabilization_force
-/datum/component/jetpack/InheritComponent(datum/component/component, original, stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type)
+/datum/component/jetpack/InheritComponent(datum/component/component, original, stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/callback/check_on_activation, datum/effect_system/trail_follow/effect_type)
UnregisterSignal(parent, src.activation_signal)
if(src.deactivation_signal)
UnregisterSignal(parent, src.deactivation_signal)
@@ -65,6 +72,7 @@
src.stabilize = stabilize
src.check_on_move = check_on_move
+ src.check_on_activation = check_on_activation
src.activation_signal = activation_signal
src.deactivation_signal = deactivation_signal
src.return_flag = return_flag
@@ -80,6 +88,7 @@
QDEL_NULL(trail)
user = null
check_on_move = null
+ check_on_activation = null
return ..()
/datum/component/jetpack/proc/setup_trail(mob/user)
@@ -93,7 +102,7 @@
/datum/component/jetpack/proc/activate(datum/source, mob/new_user)
SIGNAL_HANDLER
- if(!check_on_move.Invoke(TRUE))
+ if(!isnull(check_on_activation) && !check_on_activation.Invoke())
return return_flag
user = new_user
@@ -101,8 +110,11 @@
RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(pre_move_react))
RegisterSignal(user, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move))
RegisterSignal(user, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff))
+ RegisterSignal(user, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT, PROC_REF(on_input_block))
+ last_stabilization_tick = world.time
START_PROCESSING(SSnewtonian_movement, src)
- setup_trail(user)
+ if (effect_type)
+ setup_trail(user)
/datum/component/jetpack/proc/deactivate(datum/source, mob/old_user)
SIGNAL_HANDLER
@@ -119,7 +131,7 @@
if (!should_trigger(source))
return
- if(source.client.intended_direction && check_on_move.Invoke(FALSE))//You use jet when press keys. yes.
+ if(source.client.intended_direction && check_on_move.Invoke(FALSE) && trail) //You use jet when press keys. yes.
trail.generate_effect()
/datum/component/jetpack/proc/should_trigger(mob/source)
@@ -142,24 +154,62 @@
trail.oldposition = get_turf(source)
/datum/component/jetpack/process(seconds_per_tick)
+ if (last_stabilization_tick == world.time)
+ return
+
+ last_stabilization_tick = world.time
+
if (!should_trigger(user) || !stabilize || isnull(user.drift_handler))
return
- var/max_drift_force = (DEFAULT_INERTIA_SPEED / user.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
+ var/max_drift_force = MOVE_DELAY_TO_DRIFT(user.cached_multiplicative_slowdown)
user.drift_handler.stabilize_drift(user.client.intended_direction ? dir2angle(user.client.intended_direction) : null, user.client.intended_direction ? max_drift_force : 0, stabilization_force * (seconds_per_tick * 1 SECONDS))
+/datum/component/jetpack/proc/on_input_block(mob/source)
+ SIGNAL_HANDLER
+
+ if (!should_trigger(source))
+ return
+
+ if (!check_on_move.Invoke(TRUE))
+ return
+
+ return DRIFT_ALLOW_INPUT
+
/datum/component/jetpack/proc/on_client_move(mob/source, list/move_args)
SIGNAL_HANDLER
if (!should_trigger(source))
return
+ if (last_force_tick == world.time)
+ return
+
if (!check_on_move.Invoke(TRUE))
return
- var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
- source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = drift_force, controlled_cap = max_drift_force)
- source.setDir(source.client.intended_direction)
+ var/max_drift_force = MOVE_DELAY_TO_DRIFT(source.cached_multiplicative_slowdown)
+ var/applied_force = drift_force
+ var/move_dir = source.client.intended_direction
+ // Try to see if we can simulate pushing off a wall
+ var/atom/movable/backup = source.get_spacemove_backup(move_dir, FALSE, include_floors = TRUE)
+ if (backup && !(backup.dir & move_dir))
+ applied_force = max_drift_force
+
+ // We don't want to force the loop to fire before stabilizing if we're going to, otherwise its effects will be delayed until the next tick which is jank
+ var/force_stabilize = FALSE
+ if (last_stabilization_tick < world.time)
+ force_stabilize = TRUE
+
+ source.newtonian_move(dir2angle(move_dir), instant = TRUE, drift_force = applied_force, controlled_cap = max_drift_force, force_loop = !force_stabilize)
+ source.setDir(move_dir)
+ last_force_tick = world.time
+
+ if (force_stabilize)
+ // Newphys is an SS_TICKER subsystem and under ideal circumstances should be firing every tick, thus a period of world.tick_lag
+ // However, since our servers are jank, even SSinput can end up overtiming - which is also an SS_TICKER subsystem that just so
+ // happens to be what is calling this proc - so we can be assured that this is not above world.tick_lag, or at least should not be
+ process(world.tick_lag)
/datum/component/jetpack/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
SIGNAL_HANDLER
@@ -167,7 +217,10 @@
if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
return
- if (!source.client.intended_direction || (source.client.intended_direction & get_dir(source, backup)))
+ if (!source.client?.intended_direction || source.client.intended_direction == get_dir(source, backup))
+ return
+
+ if (isnull(source.drift_handler))
return
if (!should_trigger(source) || !check_on_move.Invoke(FALSE))
diff --git a/code/datums/components/leanable.dm b/code/datums/components/leanable.dm
index 3d2a4e0b73e5b..b823cf5ec503c 100644
--- a/code/datums/components/leanable.dm
+++ b/code/datums/components/leanable.dm
@@ -2,26 +2,21 @@
/datum/component/leanable
/// How much will mobs that lean onto this object be offset
var/leaning_offset = 11
- /// List of click modifiers that are required to be present for leaning to trigger
- var/list/click_mods = null
- /// Callback called for additional checks if a lean is valid
- var/datum/callback/lean_check = null
- /// Whenever this object can be leaned on from the same turf as its' own. Do not use without a custom lean_check!
- var/same_turf = FALSE
/// List of mobs currently leaning on our parent
var/list/leaning_mobs = list()
-/datum/component/leanable/Initialize(leaning_offset = 11, list/click_mods = null, datum/callback/lean_check = null, same_turf = FALSE)
+/datum/component/leanable/Initialize(mob/living/leaner, leaning_offset = 11)
. = ..()
src.leaning_offset = leaning_offset
- src.click_mods = click_mods
- src.lean_check = lean_check
- src.same_turf = same_turf
+ mousedrop_receive(parent, leaner, leaner)
/datum/component/leanable/RegisterWithParent()
RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(mousedrop_receive))
RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved))
+/datum/component/leanable/UnregisterFromParent()
+ UnregisterSignal(parent, list(COMSIG_MOUSEDROPPED_ONTO, COMSIG_MOVABLE_MOVED))
+
/datum/component/leanable/Destroy(force)
for (var/mob/living/leaner as anything in leaning_mobs)
leaner.stop_leaning()
@@ -30,17 +25,13 @@
/datum/component/leanable/proc/on_moved(datum/source)
SIGNAL_HANDLER
+
for (var/mob/living/leaner as anything in leaning_mobs)
leaner.stop_leaning()
/datum/component/leanable/proc/mousedrop_receive(atom/source, atom/movable/dropped, mob/user, params)
if (dropped != user)
return
- if (islist(click_mods))
- var/list/modifiers = params2list(params)
- for (var/modifier in click_mods)
- if (!LAZYACCESS(modifiers, modifier))
- return
if (!iscarbon(dropped) && !iscyborg(dropped))
return
var/mob/living/leaner = dropped
@@ -49,9 +40,7 @@
if (HAS_TRAIT_FROM(leaner, TRAIT_UNDENSE, LEANING_TRAIT))
return
var/turf/checked_turf = get_step(leaner, REVERSE_DIR(leaner.dir))
- if (checked_turf != get_turf(source) && (!same_turf || get_turf(source) != get_turf(leaner)))
- return
- if (!isnull(lean_check) && !lean_check.Invoke(dropped, params))
+ if (checked_turf != get_turf(source))
return
leaner.start_leaning(source, leaning_offset)
leaning_mobs += leaner
@@ -63,6 +52,13 @@
leaning_mobs -= source
UnregisterSignal(source, list(COMSIG_LIVING_STOPPED_LEANING, COMSIG_QDELETING))
+/**
+ * Makes the mob lean on an atom
+ * Arguments
+ *
+ * * atom/lean_target - the target the mob is trying to lean on
+ * * leaning_offset - pixel offset to apply on the mob when leaning
+ */
/mob/living/proc/start_leaning(atom/lean_target, leaning_offset)
var/new_x = lean_target.pixel_x + base_pixel_x + body_position_pixel_x_offset
var/new_y = lean_target.pixel_y + base_pixel_y + body_position_pixel_y_offset
@@ -86,19 +82,31 @@
COMSIG_MOB_CLIENT_PRE_MOVE,
COMSIG_LIVING_DISARM_HIT,
COMSIG_LIVING_GET_PULLED,
- COMSIG_MOVABLE_TELEPORTING,
), PROC_REF(stop_leaning))
+
+ RegisterSignal(src, COMSIG_MOVABLE_TELEPORTED, PROC_REF(teleport_away_while_leaning))
RegisterSignal(src, COMSIG_ATOM_POST_DIR_CHANGE, PROC_REF(lean_dir_changed))
update_fov()
+/// You fall on your face if you get teleported while leaning
+/mob/living/proc/teleport_away_while_leaning()
+ SIGNAL_HANDLER
+
+ // Make sure we unregister signal handlers and reset animation
+ stop_leaning()
+ // -1000 aura
+ visible_message(span_notice("[src] falls flat on [p_their()] face from losing [p_their()] balance!"), span_warning("You fall suddenly as the object you were leaning on vanishes from contact with you!"))
+ Knockdown(3 SECONDS)
+
/mob/living/proc/stop_leaning()
SIGNAL_HANDLER
+
UnregisterSignal(src, list(
COMSIG_MOB_CLIENT_PRE_MOVE,
COMSIG_LIVING_DISARM_HIT,
COMSIG_LIVING_GET_PULLED,
- COMSIG_MOVABLE_TELEPORTING,
COMSIG_ATOM_POST_DIR_CHANGE,
+ COMSIG_MOVABLE_TELEPORTED,
))
animate(src, 0.2 SECONDS, pixel_x = base_pixel_x + body_position_pixel_x_offset, pixel_y = base_pixel_y + body_position_pixel_y_offset)
remove_traits(list(TRAIT_UNDENSE, TRAIT_EXPANDED_FOV), LEANING_TRAIT)
@@ -107,5 +115,6 @@
/mob/living/proc/lean_dir_changed(atom/source, old_dir, new_dir)
SIGNAL_HANDLER
+
if (old_dir != new_dir)
INVOKE_ASYNC(src, PROC_REF(stop_leaning))
diff --git a/code/datums/components/life_link.dm b/code/datums/components/life_link.dm
index 314a3d7931bde..26484674e8080 100644
--- a/code/datums/components/life_link.dm
+++ b/code/datums/components/life_link.dm
@@ -127,16 +127,14 @@
if(isnull(holder))
return
holder.icon_state = "hud[RoundHealth(host)]"
- var/icon/size_check = icon(mob_parent.icon, mob_parent.icon_state, mob_parent.dir)
- holder.pixel_y = size_check.Height() - ICON_SIZE_Y
+ holder.pixel_y = mob_parent.get_cached_height() - ICON_SIZE_Y
/// Update our vital status on the medical hud
/datum/component/life_link/proc/update_med_hud_status(mob/living/mob_parent)
var/image/holder = mob_parent.hud_list?[STATUS_HUD]
if(isnull(holder))
return
- var/icon/size_check = icon(mob_parent.icon, mob_parent.icon_state, mob_parent.dir)
- holder.pixel_y = size_check.Height() - ICON_SIZE_Y
+ holder.pixel_y = mob_parent.get_cached_height() - ICON_SIZE_Y
if(host.stat == DEAD || HAS_TRAIT(host, TRAIT_FAKEDEATH))
holder.icon_state = "huddead"
else
diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm
index 8e5f096766a92..c8b1af483d034 100644
--- a/code/datums/components/manual_breathing.dm
+++ b/code/datums/components/manual_breathing.dm
@@ -71,7 +71,7 @@
/datum/component/manual_breathing/proc/check_added_organ(mob/who_cares, obj/item/organ/O)
SIGNAL_HANDLER
- var/obj/item/organ/eyes/new_lungs = O
+ var/obj/item/organ/lungs/new_lungs = O
if(istype(new_lungs,/obj/item/organ/lungs))
L = new_lungs
diff --git a/code/datums/components/material/remote_materials.dm b/code/datums/components/material/remote_materials.dm
index 3c919ab15d4a4..65ba94e8b021b 100644
--- a/code/datums/components/material/remote_materials.dm
+++ b/code/datums/components/material/remote_materials.dm
@@ -44,11 +44,9 @@ handles linking back and forth.
var/connect_to_silo = FALSE
if(force_connect || (mapload && is_station_level(T.z)))
connect_to_silo = TRUE
- if(!(mat_container_flags & MATCONTAINER_NO_INSERT))
- RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy))
if(mapload) // wait for silo to initialize during mapload
- addtimer(CALLBACK(src, PROC_REF(_PrepareStorage), connect_to_silo))
+ SSticker.OnRoundstart(CALLBACK(src, PROC_REF(_PrepareStorage), connect_to_silo))
else //directly register in round
_PrepareStorage(connect_to_silo)
@@ -66,17 +64,19 @@ handles linking back and forth.
silo = GLOB.ore_silo_default
if (silo)
silo.ore_connected_machines += src
- mat_container = silo.GetComponent(/datum/component/material_container)
+ mat_container = silo.materials
+ if(!(mat_container_flags & MATCONTAINER_NO_INSERT))
+ RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert))
+
if (!mat_container && allow_standalone)
_MakeLocal()
/datum/component/remote_materials/Destroy()
- if (silo)
- silo.ore_connected_machines -= src
- silo.holds -= src
- silo = null
- UnregisterSignal(parent, COMSIG_ATOM_ATTACKBY)
+ if(silo)
+ allow_standalone = FALSE
+ disconnect_from(silo)
mat_container = null
+
return ..()
/datum/component/remote_materials/proc/_MakeLocal()
@@ -93,13 +93,12 @@ handles linking back and forth.
allowed_items = /obj/item/stack \
)
-/datum/component/remote_materials/proc/toggle_holding(force_hold = FALSE)
+/// Adds/Removes this connection from the silo
+/datum/component/remote_materials/proc/toggle_holding()
if(isnull(silo))
return
- if(force_hold)
- silo.holds[src] = TRUE
- else if(!silo.holds[src])
+ if(!silo.holds[src])
silo.holds[src] = TRUE
else
silo.holds -= src
@@ -122,28 +121,17 @@ handles linking back and forth.
* old_silo- The silo we are trying to disconnect from
*/
/datum/component/remote_materials/proc/disconnect_from(obj/machinery/ore_silo/old_silo)
- if (!old_silo || silo != old_silo)
+ if (QDELETED(old_silo) || silo != old_silo)
return
+
+ UnregisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION)
silo.ore_connected_machines -= src
silo = null
mat_container = null
- UnregisterSignal(parent, COMSIG_ATOM_ATTACKBY)
+
if (allow_standalone)
_MakeLocal()
-///Insert mats into silo
-/datum/component/remote_materials/proc/SiloAttackBy(datum/source, obj/item/target, mob/living/user)
- SIGNAL_HANDLER
-
- //Allows you to attack the machine with iron sheets for e.g.
- if(!(mat_container_flags & MATCONTAINER_ANY_INTENT) && user.combat_mode)
- return
-
- if(silo)
- mat_container.user_insert(target, user, parent)
-
- return COMPONENT_NO_AFTERATTACK
-
/datum/component/remote_materials/proc/OnMultitool(datum/source, mob/user, obj/item/multitool/M)
SIGNAL_HANDLER
@@ -175,10 +163,24 @@ handles linking back and forth.
silo.ore_connected_machines += src
mat_container = new_container
if(!(mat_container_flags & MATCONTAINER_NO_INSERT))
- RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy))
+ RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert))
to_chat(user, span_notice("You connect [parent] to [silo] from the multitool's buffer."))
return ITEM_INTERACT_SUCCESS
+///Insert mats into silo
+/datum/component/remote_materials/proc/on_item_insert(datum/source, mob/living/user, obj/item/target)
+ SIGNAL_HANDLER
+
+ //Allows you to attack the machine with iron sheets for e.g.
+ if(!(mat_container_flags & MATCONTAINER_ANY_INTENT) && user.combat_mode)
+ return
+
+ if(silo)
+ mat_container.user_insert(target, user, parent)
+
+ return ITEM_INTERACT_SUCCESS
+
+
/**
* Checks if the param silo is in the same level as this components parent i.e. connected machine, rcd, etc
*
diff --git a/code/datums/components/mirv.dm b/code/datums/components/mirv.dm
index 52b4053babb5a..ead33d476d459 100644
--- a/code/datums/components/mirv.dm
+++ b/code/datums/components/mirv.dm
@@ -32,12 +32,12 @@
var/turf/target_turf = get_turf(target)
for(var/turf/shootat_turf in RANGE_TURFS(radius, target) - RANGE_TURFS(radius-1, target))
- var/obj/projectile/P = new projectile_type(target_turf)
+ var/obj/projectile/proj = new projectile_type(target_turf)
//Shooting Code:
- P.range = radius+1
+ proj.range = radius+1
if(override_projectile_range)
- P.range = override_projectile_range
- P.preparePixelProjectile(shootat_turf, target)
- P.firer = firer // don't hit ourself that would be really annoying
- P.impacted = list(WEAKREF(target) = TRUE) // don't hit the target we hit already with the flak
- P.fire()
+ proj.range = override_projectile_range
+ proj.aim_projectile(shootat_turf, target)
+ proj.firer = firer // don't hit ourself that would be really annoying
+ proj.impacted = list(WEAKREF(target) = TRUE) // don't hit the target we hit already with the flak
+ proj.fire()
diff --git a/code/datums/components/multiple_lives.dm b/code/datums/components/multiple_lives.dm
index ce2c4a5053f1e..f374b3e37750d 100644
--- a/code/datums/components/multiple_lives.dm
+++ b/code/datums/components/multiple_lives.dm
@@ -51,6 +51,6 @@
/datum/component/multiple_lives/InheritComponent(datum/component/multiple_lives/new_comp , lives_left)
src.lives_left += new_comp ? new_comp.lives_left : lives_left
-/datum/component/multiple_lives/PostTransfer()
- if(!isliving(parent))
+/datum/component/multiple_lives/PostTransfer(datum/new_parent)
+ if(!isliving(new_parent))
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/mutant_hands.dm b/code/datums/components/mutant_hands.dm
index f7e19e59fb5ac..66e19852ae7e4 100644
--- a/code/datums/components/mutant_hands.dm
+++ b/code/datums/components/mutant_hands.dm
@@ -160,11 +160,9 @@
if(!base_icon_state)
return
- // Even hand indexes are right hands,
- // Odd hand indexes are left hand
- // ...But also, we swap it intentionally here,
+ // We swap it intentionally here,
// so right icon is shown on the left (Because hands)
- if(user.get_held_index_of_item(src) % 2 == 1)
+ if(IS_LEFT_INDEX(user.get_held_index_of_item(src)))
icon_state = "[base_icon_state]_right"
else
icon_state = "[base_icon_state]_left"
diff --git a/code/datums/components/omen.dm b/code/datums/components/omen.dm
index 080ee58a0f815..e250bb7124f31 100644
--- a/code/datums/components/omen.dm
+++ b/code/datums/components/omen.dm
@@ -208,14 +208,11 @@
INVOKE_ASYNC(our_guy, TYPE_PROC_REF(/mob, emote), "scream")
to_chat(our_guy, span_warning("What a horrible night... To have a curse!"))
- if(prob(30 * luck_mod)) /// Bonk!
- var/obj/item/bodypart/the_head = our_guy.get_bodypart(BODY_ZONE_HEAD)
- if(!the_head)
- return
- playsound(get_turf(our_guy), 'sound/effects/tableheadsmash.ogg', 90, TRUE)
+ if(prob(30 * luck_mod) && our_guy.get_bodypart(BODY_ZONE_HEAD)) /// Bonk!
+ playsound(our_guy, 'sound/effects/tableheadsmash.ogg', 90, TRUE)
our_guy.visible_message(span_danger("[our_guy] hits [our_guy.p_their()] head really badly falling down!"), span_userdanger("You hit your head really badly falling down!"))
- the_head.receive_damage(75 * damage_mod, damage_source = "slipping")
- our_guy.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100 * damage_mod)
+ our_guy.apply_damage(75 * damage_mod, BRUTE, BODY_ZONE_HEAD, attacking_item = "slipping")
+ our_guy.apply_damage(100 * damage_mod, BRAIN)
consume_omen()
return
diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm
index 71f391e599ad8..74a59301e7339 100644
--- a/code/datums/components/orbiter.dm
+++ b/code/datums/components/orbiter.dm
@@ -56,10 +56,10 @@
orbiter_list += newcomp.orbiter_list
newcomp.orbiter_list = null
-/datum/component/orbiter/PostTransfer()
- if(!isatom(parent) || isarea(parent) || !get_turf(parent))
+/datum/component/orbiter/PostTransfer(datum/new_parent)
+ if(!isatom(parent) || isarea(new_parent) || !get_turf(new_parent))
return COMPONENT_INCOMPATIBLE
- move_react(parent)
+ move_react(new_parent)
/datum/component/orbiter/proc/begin_orbit(atom/movable/orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation)
if(orbiter.orbiting)
diff --git a/code/datums/components/parry.dm b/code/datums/components/parry.dm
index 98bc9e3a84d07..4b49096a6e261 100644
--- a/code/datums/components/parry.dm
+++ b/code/datums/components/parry.dm
@@ -23,7 +23,7 @@
/// Callback for special effects upon parrying
var/datum/callback/parry_callback
-/datum/component/parriable_projectile/Initialize(parry_speed_mult = 0.8, parry_damage_mult = 1.15, boost_speed_mult = 0.6, boost_damage_mult = 1.5, parry_trait = TRAIT_MINING_PARRYING, grace_period = 0.25 SECONDS, datum/callback/parry_callback = null)
+/datum/component/parriable_projectile/Initialize(parry_speed_mult = 1.25, parry_damage_mult = 1.15, boost_speed_mult = 1.6, boost_damage_mult = 1.5, parry_trait = TRAIT_MINING_PARRYING, grace_period = 0.25 SECONDS, datum/callback/parry_callback = null)
if(!isprojectile(parent))
return COMPONENT_INCOMPATIBLE
src.parry_speed_mult = parry_speed_mult
@@ -41,13 +41,13 @@
. = ..()
/datum/component/parriable_projectile/RegisterWithParent()
- RegisterSignal(parent, COMSIG_PROJECTILE_PIXEL_STEP, PROC_REF(on_moved))
+ RegisterSignal(parent, COMSIG_PROJECTILE_MOVE_PROCESS_STEP, PROC_REF(on_moved))
RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(before_move))
RegisterSignal(parent, COMSIG_PROJECTILE_BEFORE_MOVE, PROC_REF(before_move))
RegisterSignal(parent, COMSIG_PROJECTILE_SELF_PREHIT, PROC_REF(before_hit))
/datum/component/parriable_projectile/UnregisterFromParent()
- UnregisterSignal(parent, list(COMSIG_PROJECTILE_PIXEL_STEP, COMSIG_MOVABLE_MOVED, COMSIG_PROJECTILE_BEFORE_MOVE, COMSIG_PROJECTILE_SELF_PREHIT))
+ UnregisterSignal(parent, list(COMSIG_PROJECTILE_MOVE_PROCESS_STEP, COMSIG_MOVABLE_MOVED, COMSIG_PROJECTILE_BEFORE_MOVE, COMSIG_PROJECTILE_SELF_PREHIT))
/datum/component/parriable_projectile/proc/before_move(obj/projectile/source)
SIGNAL_HANDLER
@@ -71,7 +71,7 @@
/datum/component/parriable_projectile/proc/on_moved(obj/projectile/source)
SIGNAL_HANDLER
- if (!isturf(source.loc))
+ if (!isturf(source.loc) || parry_turfs[source.loc])
return
parry_turfs[source.loc] = world.time + grace_period
RegisterSignal(source.loc, COMSIG_CLICK, PROC_REF(on_turf_click))
@@ -86,25 +86,28 @@
return
parriers[user] = world.time + grace_period
-/datum/component/parriable_projectile/proc/before_hit(obj/projectile/source, list/bullet_args)
+/datum/component/parriable_projectile/proc/before_hit(obj/projectile/source, mob/living/user)
SIGNAL_HANDLER
- var/mob/user = bullet_args[2]
if (!istype(user) || !parriers[user] || parried)
return
+
parriers -= user
- attempt_parry(source, user)
+ return attempt_parry(source, user)
/datum/component/parriable_projectile/proc/attempt_parry(obj/projectile/source, mob/user)
+ if (QDELETED(source) || source.deletion_queued)
+ return NONE
+
if (SEND_SIGNAL(user, COMSIG_LIVING_PROJECTILE_PARRIED, source) & INTERCEPT_PARRY_EFFECTS)
- return
+ return NONE
parried = TRUE
if (source.firer != user)
- if (abs(source.angle - dir2angle(user)) < 15)
+ if (abs(source.angle - dir2angle(user.dir)) < 15)
source.set_angle((source.angle + 180) % 360 + rand(-3, 3))
else
- source.set_angle(dir2angle(user) + rand(-3, 3))
+ source.set_angle(dir2angle(user.dir) + rand(-3, 3))
user.visible_message(span_warning("[user] expertly parries [source] with [user.p_their()] bare hand!"), span_warning("You parry [source] with your hand!"))
else
user.visible_message(span_warning("[user] boosts [source] with [user.p_their()] bare hand!"), span_warning("You boost [source] with your hand!"))
@@ -118,4 +121,4 @@
user.playsound_local(source.loc, 'sound/effects/parry.ogg', 50, TRUE)
user.overlay_fullscreen("projectile_parry", /atom/movable/screen/fullscreen/crit/projectile_parry, 2)
addtimer(CALLBACK(user, TYPE_PROC_REF(/mob, clear_fullscreen), "projectile_parry"), 0.25 SECONDS)
- return PROJECTILE_INTERRUPT_HIT
+ return PROJECTILE_INTERRUPT_HIT_PHASE
diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm
index e9b7fad34fc20..41f18a6cb1809 100644
--- a/code/datums/components/pellet_cloud.dm
+++ b/code/datums/components/pellet_cloud.dm
@@ -224,10 +224,10 @@
break
///One of our pellets hit something, record what it was and check if we're done (terminated == num_pellets)
-/datum/component/pellet_cloud/proc/pellet_hit(obj/projectile/P, atom/movable/firer, atom/target, Angle, hit_zone)
+/datum/component/pellet_cloud/proc/pellet_hit(obj/projectile/proj, atom/movable/firer, atom/target, Angle, hit_zone)
SIGNAL_HANDLER
- pellets -= P
+ pellets -= proj
terminated++
hits++
var/obj/item/bodypart/hit_part
@@ -237,34 +237,34 @@
hit_part = hit_carbon.get_bodypart(hit_zone)
if(hit_part)
target = hit_part
- if(P.wound_bonus != CANT_WOUND) // handle wounding
+ if(proj.wound_bonus != CANT_WOUND) // handle wounding
// unfortunately, due to how pellet clouds handle finalizing only after every pellet is accounted for, that also means there might be a short delay in dealing wounds if one pellet goes wide
// while buckshot may reach a target or miss it all in one tick, we also have to account for possible ricochets that may take a bit longer to hit the target
if(isnull(wound_info_by_part[hit_part]))
wound_info_by_part[hit_part] = list(0, 0, 0)
- wound_info_by_part[hit_part][CLOUD_POSITION_DAMAGE] += P.damage // these account for decay
- wound_info_by_part[hit_part][CLOUD_POSITION_W_BONUS] += P.wound_bonus
- wound_info_by_part[hit_part][CLOUD_POSITION_BW_BONUS] += P.bare_wound_bonus
- P.wound_bonus = CANT_WOUND // actual wounding will be handled aggregate
+ wound_info_by_part[hit_part][CLOUD_POSITION_DAMAGE] += proj.damage // these account for decay
+ wound_info_by_part[hit_part][CLOUD_POSITION_W_BONUS] += proj.wound_bonus
+ wound_info_by_part[hit_part][CLOUD_POSITION_BW_BONUS] += proj.bare_wound_bonus
+ proj.wound_bonus = CANT_WOUND // actual wounding will be handled aggregate
else if(isobj(target))
var/obj/hit_object = target
- if(hit_object.damage_deflection > P.damage || !P.damage)
+ if(hit_object.damage_deflection > proj.damage || !proj.damage)
damage = FALSE
LAZYADDASSOC(targets_hit[target], "hits", 1)
LAZYSET(targets_hit[target], "damage", damage)
if(targets_hit[target]["hits"] == 1)
- RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_qdel), override=TRUE)
- UnregisterSignal(P, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT))
+ RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_qdel), override = TRUE)
+ UnregisterSignal(proj, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT))
if(terminated == num_pellets)
finalize()
///One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets)
-/datum/component/pellet_cloud/proc/pellet_range(obj/projectile/P)
+/datum/component/pellet_cloud/proc/pellet_range(obj/projectile/proj)
SIGNAL_HANDLER
- pellets -= P
+ pellets -= proj
terminated++
- UnregisterSignal(P, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT))
+ UnregisterSignal(proj, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT))
if(terminated == num_pellets)
finalize()
@@ -279,18 +279,18 @@
pellet.firer = parent // don't hit ourself that would be really annoying
pellet.impacted = list(WEAKREF(parent) = TRUE) // don't hit the target we hit already with the flak
pellet.suppressed = SUPPRESSED_VERY // set the projectiles to make no message so we can do our own aggregate message
- pellet.preparePixelProjectile(target, parent)
+ pellet.aim_projectile(target, parent)
RegisterSignal(pellet, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(pellet_hit))
RegisterSignals(pellet, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_QDELETING), PROC_REF(pellet_range))
pellets += pellet
pellet.fire()
if(landmine_victim)
- pellet.process_hit_loop(target)
+ pellet.impact(target)
///All of our pellets are accounted for, time to go target by target and tell them how many things they got hit by.
/datum/component/pellet_cloud/proc/finalize()
- var/obj/projectile/P = projectile_type
- var/proj_name = initial(P.name)
+ var/obj/projectile/proj_type = projectile_type
+ var/proj_name = initial(proj_type.name)
for(var/atom/target in targets_hit)
var/num_hits = targets_hit[target]["hits"]
@@ -303,24 +303,24 @@
hit_part = null //so the visible_message later on doesn't generate extra text.
else
target = hit_part.owner
- if(wound_info_by_part[hit_part] && (initial(P.damage_type) == BRUTE || initial(P.damage_type) == BURN)) // so a cloud of disablers that deal stamina don't inadvertently end up causing burn wounds)
+ if(wound_info_by_part[hit_part] && (initial(proj_type.damage_type) == BRUTE || initial(proj_type.damage_type) == BURN)) // so a cloud of disablers that deal stamina don't inadvertently end up causing burn wounds)
var/damage_dealt = wound_info_by_part[hit_part][CLOUD_POSITION_DAMAGE]
var/w_bonus = wound_info_by_part[hit_part][CLOUD_POSITION_W_BONUS]
var/bw_bonus = wound_info_by_part[hit_part][CLOUD_POSITION_BW_BONUS]
- var/wounding_type = (initial(P.damage_type) == BRUTE) ? WOUND_BLUNT : WOUND_BURN // sharpness is handled in the wound rolling
+ var/wounding_type = (initial(proj_type.damage_type) == BRUTE) ? WOUND_BLUNT : WOUND_BURN // sharpness is handled in the wound rolling
wound_info_by_part -= hit_part
// technically this only checks armor worn the moment that all the pellets resolve rather than as each one hits you,
// but this isn't important enough to warrant all the extra loops of mostly redundant armor checks
var/mob/living/carbon/hit_carbon = target
- var/armor_factor = hit_carbon.getarmor(hit_part, initial(P.armor_flag))
+ var/armor_factor = hit_carbon.getarmor(hit_part, initial(proj_type.armor_flag))
armor_factor = min(ARMOR_MAX_BLOCK, armor_factor) //cap damage reduction at 90%
if(armor_factor > 0)
- if(initial(P.weak_against_armour) && armor_factor >= 0)
+ if(initial(proj_type.weak_against_armour) && armor_factor >= 0)
armor_factor *= ARMOR_WEAKENED_MULTIPLIER
damage_dealt *= max(0, 1 - armor_factor*0.01)
- hit_part.painless_wound_roll(wounding_type, damage_dealt, w_bonus, bw_bonus, initial(P.sharpness))
+ hit_part.painless_wound_roll(wounding_type, damage_dealt, w_bonus, bw_bonus, initial(proj_type.sharpness))
var/limb_hit_text = ""
if(hit_part)
diff --git a/code/datums/components/profound_fisher.dm b/code/datums/components/profound_fisher.dm
index cc7e87aeb40af..62019ee3f6c67 100644
--- a/code/datums/components/profound_fisher.dm
+++ b/code/datums/components/profound_fisher.dm
@@ -17,6 +17,7 @@
if(!isgloves)
RegisterSignal(parent, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(pre_attack))
+ RegisterSignal(parent, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(stop_fishing))
else
var/obj/item/clothing/gloves = parent
RegisterSignal(gloves, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
@@ -68,6 +69,7 @@
if(slot != ITEM_SLOT_GLOVES)
return
RegisterSignal(equipper, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarmed_attack))
+ RegisterSignal(equipper, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(stop_fishing))
/datum/component/profound_fisher/proc/open_rod_menu(datum/source, mob/user, list/modifiers)
SIGNAL_HANDLER
@@ -76,7 +78,7 @@
/datum/component/profound_fisher/proc/on_drop(datum/source, atom/dropper)
SIGNAL_HANDLER
- UnregisterSignal(dropper, COMSIG_LIVING_UNARMED_ATTACK)
+ UnregisterSignal(dropper, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_COMPLETE_FISHING))
REMOVE_TRAIT(dropper, TRAIT_PROFOUND_FISHER, TRAIT_GENERIC) //this will cancel the current minigame if the fishing rod was internal.
/datum/component/profound_fisher/proc/on_unarmed_attack(mob/living/source, atom/attack_target, proximity_flag, list/modifiers)
@@ -108,19 +110,12 @@
return TRUE
/datum/component/profound_fisher/proc/begin_fishing(mob/living/user, atom/target)
- RegisterSignal(user, COMSIG_MOB_BEGIN_FISHING, PROC_REF(actually_fishing_with_internal_rod))
our_rod.melee_attack_chain(user, target)
- UnregisterSignal(user, COMSIG_MOB_BEGIN_FISHING)
+ ADD_TRAIT(user, TRAIT_PROFOUND_FISHER, TRAIT_GENERIC)
-/datum/component/profound_fisher/proc/actually_fishing_with_internal_rod(datum/source)
- SIGNAL_HANDLER
- ADD_TRAIT(source, TRAIT_PROFOUND_FISHER, REF(parent))
- RegisterSignal(source, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(remove_profound_fisher))
-
-/datum/component/profound_fisher/proc/remove_profound_fisher(datum/source)
+/datum/component/profound_fisher/proc/stop_fishing(datum/source)
SIGNAL_HANDLER
REMOVE_TRAIT(source, TRAIT_PROFOUND_FISHER, TRAIT_GENERIC)
- UnregisterSignal(source, COMSIG_MOB_COMPLETE_FISHING)
/datum/component/profound_fisher/proc/pretend_fish(mob/living/source, atom/target)
if(DOING_INTERACTION_WITH_TARGET(source, target))
diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm
index 724495b7c88c6..f5162bf918a35 100644
--- a/code/datums/components/riding/riding_mob.dm
+++ b/code/datums/components/riding/riding_mob.dm
@@ -541,7 +541,7 @@
RegisterSignal(parent, COMSIG_PROJECTILE_PREHIT, PROC_REF(on_bullet_hit))
RegisterSignal(parent, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(on_attacked))
-/datum/component/riding/creature/raptor/proc/on_bullet_hit(atom/target, list/bullet_args, obj/projectile/hit_projectile)
+/datum/component/riding/creature/raptor/proc/on_bullet_hit(atom/target, obj/projectile/hit_projectile)
SIGNAL_HANDLER
if(hit_projectile.armor_flag == ENERGY)
diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm
index 40df294af12a8..16d7bddec8708 100644
--- a/code/datums/components/rotation.dm
+++ b/code/datums/components/rotation.dm
@@ -28,7 +28,7 @@
RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item))
return ..()
-/datum/component/simple_rotation/PostTransfer()
+/datum/component/simple_rotation/PostTransfer(datum/new_parent)
//Because of the callbacks which we don't track cleanly we can't transfer this
//item cleanly, better to let the new of the new item create a new rotation datum
//instead (there's no real state worth transferring)
diff --git a/code/datums/components/seethrough_mob.dm b/code/datums/components/seethrough_mob.dm
index b6951c5489b6d..a788ef6e8611f 100644
--- a/code/datums/components/seethrough_mob.dm
+++ b/code/datums/components/seethrough_mob.dm
@@ -55,9 +55,8 @@
for(var/atom/movable/screen/plane_master/seethrough as anything in our_hud.get_true_plane_masters(SEETHROUGH_PLANE))
seethrough.unhide_plane(fool)
- var/icon/current_mob_icon = icon(fool.icon, fool.icon_state)
render_source_atom.pixel_x = -fool.pixel_x
- render_source_atom.pixel_y = ((current_mob_icon.Height() - 32) * 0.5)
+ render_source_atom.pixel_y = (fool.get_cached_height() - ICON_SIZE_Y * 0.5)
initial_render_target_value = fool.render_target
fool.render_target = "*transparent_bigmob[personal_uid]"
diff --git a/code/datums/components/shell.dm b/code/datums/components/shell.dm
index bb3054aea6ae6..feb6e572bfd0f 100644
--- a/code/datums/components/shell.dm
+++ b/code/datums/components/shell.dm
@@ -346,7 +346,11 @@
))
if(attached_circuit.loc == parent || (!QDELETED(attached_circuit) && attached_circuit.loc == null))
var/atom/parent_atom = parent
- attached_circuit.forceMove(parent_atom.drop_location())
+ var/drop_location = parent_atom.drop_location()
+ if(drop_location)
+ attached_circuit.forceMove(drop_location)
+ else
+ attached_circuit.moveToNullspace()
for(var/obj/item/circuit_component/to_remove as anything in unremovable_circuit_components)
attached_circuit.remove_component(to_remove)
@@ -376,7 +380,7 @@
return COMSIG_USB_CABLE_CONNECTED_TO_CIRCUIT
/**
- * Determines if a user is authorized to see the existance of this shell. Returns false if they are not
+ * Determines if a user is authorized to see the existence of this shell. Returns false if they are not
*
* Arguments:
* * user - The user to check if they are authorized
diff --git a/code/datums/components/shy.dm b/code/datums/components/shy.dm
index a9b50a07efb26..a6303b87a0328 100644
--- a/code/datums/components/shy.dm
+++ b/code/datums/components/shy.dm
@@ -59,7 +59,7 @@
COMSIG_TRY_ALT_ACTION,
))
-/datum/component/shy/PostTransfer()
+/datum/component/shy/PostTransfer(datum/new_parent)
if(!ismob(parent))
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/shy_in_room.dm b/code/datums/components/shy_in_room.dm
index 4e0c2421561e7..d4eeeb108d93f 100644
--- a/code/datums/components/shy_in_room.dm
+++ b/code/datums/components/shy_in_room.dm
@@ -31,7 +31,7 @@
COMSIG_TRY_ALT_ACTION,
))
-/datum/component/shy_in_room/PostTransfer()
+/datum/component/shy_in_room/PostTransfer(datum/new_parent)
if(!ismob(parent))
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/spill.dm b/code/datums/components/spill.dm
index 9112706046c44..6c84299f68938 100644
--- a/code/datums/components/spill.dm
+++ b/code/datums/components/spill.dm
@@ -25,7 +25,7 @@
dropsound = _dropsound
drop_memory = _drop_memory
-/datum/component/spill/PostTransfer()
+/datum/component/spill/PostTransfer(datum/new_parent)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/splat.dm b/code/datums/components/splat.dm
index d22613204bbbd..0ae407166abff 100644
--- a/code/datums/components/splat.dm
+++ b/code/datums/components/splat.dm
@@ -48,9 +48,9 @@
/datum/component/splat/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_MOVABLE_IMPACT, COMSIG_PROJECTILE_SELF_ON_HIT))
-/datum/component/splat/proc/projectile_splat(obj/projectile/source, atom/firer, atom/target, angle, hit_limb_zone, blocked)
+/datum/component/splat/proc/projectile_splat(obj/projectile/source, atom/firer, atom/target, angle, hit_limb_zone, blocked, pierce_hit)
SIGNAL_HANDLER
- if(blocked != 100)
+ if(blocked != 100 && !pierce_hit)
splat(source, target)
/datum/component/splat/proc/throw_splat(atom/movable/source, atom/hit_atom, datum/thrownthing/throwing_datum, caught)
diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm
index 4dac194c158b2..14183e4beb63e 100644
--- a/code/datums/components/supermatter_crystal.dm
+++ b/code/datums/components/supermatter_crystal.dm
@@ -107,7 +107,7 @@
if(iscyborg(user) && atom_source.Adjacent(user))
dust_mob(source, user, cause = "cyborg attack")
return
- if(isaicamera(user))
+ if(iscameramob(user))
return
if(islarva(user))
dust_mob(source, user, cause = "larva attack")
@@ -165,10 +165,7 @@
var/obj/item/cigarette/cig = item
var/clumsy = HAS_TRAIT(user, TRAIT_CLUMSY)
if(clumsy)
- var/which_hand = BODY_ZONE_L_ARM
- if(!(user.active_hand_index % 2))
- which_hand = BODY_ZONE_R_ARM
- var/obj/item/bodypart/dust_arm = user.get_bodypart(which_hand)
+ var/obj/item/bodypart/dust_arm = user.get_active_hand()
dust_arm.dismember()
user.visible_message(span_danger("The [item] flashes out of existence on contact with \the [atom_source], resonating with a horrible sound..."),\
span_danger("Oops! The [item] flashes out of existence on contact with \the [atom_source], taking your arm with it! That was clumsy of you!"))
diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 8c5e10ddd655a..ed7f3f340c1a3 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -527,12 +527,8 @@
if(99 to INFINITY)
// can you imagine standing around minding your own business when all of the sudden some guy fucking launches himself into a wall at full speed and irreparably paralyzes himself?
user.visible_message(span_danger("[user] slams face-first into [hit] at an awkward angle, severing [user.p_their()] spinal column with a sickening crack! Fucking shit!"), span_userdanger("You slam face-first into [hit] at an awkward angle, severing your spinal column with a sickening crack! Fucking shit!"))
- var/obj/item/bodypart/head/hed = user.get_bodypart(BODY_ZONE_HEAD)
- if(hed)
- hed.receive_damage(brute=40, updating_health=FALSE, wound_bonus = 40)
- else
- user.adjustBruteLoss(40, updating_health=FALSE)
- user.adjustStaminaLoss(30)
+ user.apply_damage(40, BRUTE, BODY_ZONE_HEAD, wound_bonus = 40)
+ user.apply_damage(30, STAMINA)
playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
playsound(user, 'sound/effects/wounds/crack2.ogg', 70, TRUE)
@@ -543,12 +539,8 @@
if(97 to 98)
user.visible_message(span_danger("[user] slams skull-first into [hit] with a sound like crumpled paper, revealing a horrifying breakage in [user.p_their()] cranium! Holy shit!"), span_userdanger("You slam skull-first into [hit] and your senses are filled with warm goo flooding across your face! Your skull is open!"))
- var/obj/item/bodypart/head/hed = user.get_bodypart(BODY_ZONE_HEAD)
- if(hed)
- hed.receive_damage(brute = 30, updating_health = FALSE, wound_bonus = 25)
- else
- user.adjustBruteLoss(40, updating_health = FALSE)
- user.adjustStaminaLoss(30)
+ user.apply_damage(30, BRUTE, BODY_ZONE_HEAD, wound_bonus = 25)
+ user.apply_damage(30, STAMINA)
user.gain_trauma_type(BRAIN_TRAUMA_MILD)
playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
@@ -558,8 +550,8 @@
if(93 to 96)
user.visible_message(span_danger("[user] slams face-first into [hit] with a concerning squish, immediately going limp!"), span_userdanger("You slam face-first into [hit], and immediately lose consciousness!"))
- user.adjustStaminaLoss(30)
- user.adjustBruteLoss(30)
+ user.apply_damage(30, BRUTE, spread_damage = TRUE)
+ user.apply_damage(30, STAMINA)
user.Unconscious(10 SECONDS)
user.gain_trauma_type(BRAIN_TRAUMA_MILD)
user.playsound_local(get_turf(user), 'sound/items/weapons/flashbang.ogg', 100, TRUE, 8)
@@ -568,8 +560,8 @@
if(86 to 92)
user.visible_message(span_danger("[user] slams head-first into [hit], suffering major cranial trauma!"), span_userdanger("You slam head-first into [hit], and the world explodes around you!"))
- user.adjustStaminaLoss(30, updating_stamina = FALSE)
- user.adjustBruteLoss(30)
+ user.apply_damage(30, BRUTE, spread_damage = TRUE)
+ user.apply_damage(30, STAMINA)
user.adjust_confusion(15 SECONDS)
if(prob(80))
user.gain_trauma(/datum/brain_trauma/mild/concussion)
@@ -580,16 +572,16 @@
if(68 to 85)
user.visible_message(span_danger("[user] slams hard into [hit], knocking [user.p_them()] senseless!"), span_userdanger("You slam hard into [hit], knocking yourself senseless!"))
- user.adjustStaminaLoss(30, updating_stamina = FALSE)
- user.adjustBruteLoss(10)
+ user.apply_damage(10, BRUTE, spread_damage = TRUE)
+ user.apply_damage(30, STAMINA)
user.adjust_confusion(10 SECONDS)
user.Knockdown(3 SECONDS)
shake_camera(user, 3, 4)
if(1 to 67)
user.visible_message(span_danger("[user] slams into [hit]!"), span_userdanger("You slam into [hit]!"))
- user.adjustStaminaLoss(20, updating_stamina = FALSE)
- user.adjustBruteLoss(10)
+ user.apply_damage(10, BRUTE, spread_damage = TRUE)
+ user.apply_damage(20, STAMINA)
user.Knockdown(2 SECONDS)
shake_camera(user, 2, 2)
diff --git a/code/datums/components/tameable.dm b/code/datums/components/tameable.dm
index 0d77688a22e7a..747d729ee1dcf 100644
--- a/code/datums/components/tameable.dm
+++ b/code/datums/components/tameable.dm
@@ -2,8 +2,6 @@
/datum/component/tameable
///If true, this atom can only be domesticated by one person
var/unique
- ///What the mob eats, typically used for taming or animal husbandry.
- var/list/food_types
///Starting success chance for taming.
var/tame_chance
///Added success chance after every failed tame attempt.
@@ -15,8 +13,6 @@
if(!isatom(parent)) //yes, you could make a tameable toolbox.
return COMPONENT_INCOMPATIBLE
- if(food_types)
- src.food_types = food_types
if(tame_chance)
src.tame_chance = tame_chance
src.current_tame_chance = tame_chance
@@ -24,35 +20,30 @@
src.bonus_tame_chance = bonus_tame_chance
src.unique = unique
- RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(try_tame))
+ if(food_types && !HAS_TRAIT(parent, TRAIT_MOB_EATER))
+ parent.AddElement(/datum/element/basic_eating, food_types = food_types)
+
+ RegisterSignal(parent, COMSIG_MOB_ATE, PROC_REF(try_tame))
RegisterSignal(parent, COMSIG_SIMPLEMOB_SENTIENCEPOTION, PROC_REF(on_tame)) //Instantly succeeds
RegisterSignal(parent, COMSIG_SIMPLEMOB_TRANSFERPOTION, PROC_REF(on_tame)) //Instantly succeeds
-/datum/component/tameable/proc/try_tame(datum/source, obj/item/food, mob/living/attacker, params)
+/datum/component/tameable/proc/try_tame(atom/source, obj/item/food, mob/living/attacker)
SIGNAL_HANDLER
- if(!is_type_in_list(food, food_types))
+
+ if(isnull(attacker) || already_friends(attacker))
return
- if(isliving(source))
- var/mob/living/potentially_dead_horse = source
- if(potentially_dead_horse.stat == DEAD)
- to_chat(attacker, span_warning("[parent] is dead!"))
- return COMPONENT_CANCEL_ATTACK_CHAIN
- var/atom/atom_parent = source
var/inform_tamer = FALSE
- atom_parent.balloon_alert(attacker, "fed")
var/modified_tame_chance = current_tame_chance
if(HAS_TRAIT(attacker, TRAIT_BEAST_EMPATHY))
modified_tame_chance += 50
inform_tamer = TRUE
- if(unique || !already_friends(attacker))
- if(prob(modified_tame_chance)) //note: lack of feedback message is deliberate, keep them guessing unless they're an expert!
- on_tame(source, attacker, food, inform_tamer)
- else
- current_tame_chance += bonus_tame_chance
- qdel(food)
- return COMPONENT_CANCEL_ATTACK_CHAIN
+ source.balloon_alert(attacker, "eats from your hand")
+ if(prob(modified_tame_chance)) //note: lack of feedback message is deliberate, keep them guessing unless they're an expert!
+ on_tame(source, attacker, food, inform_tamer)
+ else
+ current_tame_chance += bonus_tame_chance
/// Check if the passed mob is already considered one of our friends
/datum/component/tameable/proc/already_friends(mob/living/potential_friend)
diff --git a/code/datums/components/technointrovert.dm b/code/datums/components/technointrovert.dm
index c6f51f8041653..0797d24cb4868 100644
--- a/code/datums/components/technointrovert.dm
+++ b/code/datums/components/technointrovert.dm
@@ -20,7 +20,7 @@
/datum/component/technointrovert/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_TRY_USE_MACHINE, COMSIG_TRY_WIRES_INTERACT))
-/datum/component/technointrovert/PostTransfer()
+/datum/component/technointrovert/PostTransfer(datum/new_parent)
if(!ismob(parent))
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/technoshy.dm b/code/datums/components/technoshy.dm
index e8d4441a287f3..168f6d61ab5a9 100644
--- a/code/datums/components/technoshy.dm
+++ b/code/datums/components/technoshy.dm
@@ -26,7 +26,7 @@
/datum/component/technoshy/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_TRY_USE_MACHINE, COMSIG_TRY_WIRES_INTERACT))
-/datum/component/technoshy/PostTransfer()
+/datum/component/technoshy/PostTransfer(datum/new_parent)
if(!ismob(parent))
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm
index 1e8313fa53b2b..ba11306cd8936 100644
--- a/code/datums/components/tether.dm
+++ b/code/datums/components/tether.dm
@@ -15,8 +15,13 @@
var/datum/beam/tether_beam
/// Tether module if we were created by one
var/obj/item/mod/module/tether/parent_module
+ /// Source, if any, for TRAIT_TETHER_ATTACHED we add
+ var/tether_trait_source
+ /// If TRUE, only add TRAIT_TETHER_ATTACHED to our parent
+ var/no_target_trait
-/datum/component/tether/Initialize(atom/tether_target, max_dist = 7, tether_name, atom/embed_target = null, start_distance = null, parent_module = null)
+/datum/component/tether/Initialize(atom/tether_target, max_dist = 7, tether_name, atom/embed_target = null, start_distance = null, \
+ parent_module = null, tether_trait_source = null, no_target_trait = FALSE)
if(!ismovable(parent) || !istype(tether_target) || !tether_target.loc)
return COMPONENT_INCOMPATIBLE
@@ -24,6 +29,8 @@
src.embed_target = embed_target
src.max_dist = max_dist
src.parent_module = parent_module
+ src.tether_trait_source = tether_trait_source
+ src.no_target_trait = no_target_trait
cur_dist = max_dist
if (start_distance != null)
cur_dist = start_distance
@@ -34,6 +41,10 @@
src.tether_name = initial(tmp.name)
else
src.tether_name = tether_name
+ if (!isnull(tether_trait_source))
+ ADD_TRAIT(parent, TRAIT_TETHER_ATTACHED, tether_trait_source)
+ if (!no_target_trait)
+ ADD_TRAIT(tether_target, TRAIT_TETHER_ATTACHED, tether_trait_source)
/datum/component/tether/RegisterWithParent()
RegisterSignal(parent, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(check_tether))
@@ -54,8 +65,12 @@
/datum/component/tether/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED))
+ if (!isnull(tether_trait_source))
+ REMOVE_TRAIT(parent, TRAIT_TETHER_ATTACHED, tether_trait_source)
if (!QDELETED(tether_target))
UnregisterSignal(tether_target, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED, COMSIG_QDELETING))
+ if (!isnull(tether_trait_source) && !no_target_trait)
+ REMOVE_TRAIT(tether_target, TRAIT_TETHER_ATTACHED, tether_trait_source)
if (!QDELETED(tether_beam))
UnregisterSignal(tether_beam.visuals, list(COMSIG_CLICK, COMSIG_QDELETING))
qdel(tether_beam)
@@ -72,9 +87,11 @@
to_chat(source, span_warning("[tether_name] prevents you from entering [new_loc]!"))
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
+ // If this was called, we know its a movable
+ var/atom/movable/movable_source = source
var/atom/movable/anchor = (source == tether_target ? parent : tether_target)
if (get_dist(anchor, new_loc) > cur_dist)
- if (!istype(anchor) || anchor.anchored || !anchor.Move(get_step_towards(anchor, new_loc)))
+ if (!istype(anchor) || anchor.anchored || !(!anchor.anchored && anchor.move_resist <= movable_source.move_force && anchor.Move(get_step_towards(anchor, new_loc))))
to_chat(source, span_warning("[tether_name] runs out of slack and prevents you from moving!"))
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
@@ -105,7 +122,6 @@
if (get_dist(anchor, new_loc) != cur_dist || !ismovable(source))
return
- var/atom/movable/movable_source = source
var/datum/drift_handler/handler = movable_source.drift_handler
if (isnull(handler))
return
@@ -142,12 +158,23 @@
INVOKE_ASYNC(src, PROC_REF(process_beam_click), source, location, params, user)
/datum/component/tether/proc/process_beam_click(atom/source, atom/location, params, mob/user)
- if (!location.can_interact(user))
+ var/turf/nearest_turf
+ for (var/turf/line_turf in get_line(get_turf(parent), get_turf(tether_target)))
+ if (user.CanReach(line_turf))
+ nearest_turf = line_turf
+ break
+
+ if (isnull(nearest_turf))
return
+
+ if (!user.can_perform_action(nearest_turf))
+ nearest_turf.balloon_alert(user, "cannot reach!")
+ return
+
var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, CTRL_CLICK))
location.balloon_alert(user, "cutting the tether...")
- if (!do_after(user, 1 SECONDS, user))
+ if (!do_after(user, 2 SECONDS, user))
return
qdel(src)
@@ -179,12 +206,12 @@
var/atom/movable/movable_parent = parent
var/atom/movable/movable_target = tether_target
- if (istype(movable_parent) && movable_parent.Move(get_step(movable_parent.loc, get_dir(movable_parent, movable_target))))
+ if (istype(movable_parent) && !movable_parent.anchored && movable_parent.move_resist <= movable_target.move_force && movable_parent.Move(get_step(movable_parent.loc, get_dir(movable_parent, movable_target))))
cur_dist -= 1
location.balloon_alert(user, "tether shortened")
return
- if (istype(movable_target) && movable_target.Move(get_step(movable_target.loc, get_dir(movable_target, movable_parent))))
+ if (istype(movable_target) && !movable_target.anchored && movable_target.move_resist <= movable_parent.move_force && movable_target.Move(get_step(movable_target.loc, get_dir(movable_target, movable_parent))))
cur_dist -= 1
location.balloon_alert(user, "tether shortened")
return
diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm
index 1fac66c07cd64..718ef86647b96 100644
--- a/code/datums/components/thermite.dm
+++ b/code/datums/components/thermite.dm
@@ -179,16 +179,10 @@
if(!iscarbon(user) || user.can_touch_burning(source))
return NONE
- var/obj/item/bodypart/affecting = user.get_active_hand()
- //Should not happen!
- if(!affecting)
- return NONE
-
- affecting.receive_damage(burn = 5)
+ user.apply_damage(5, BURN, user.get_active_hand())
to_chat(user, span_userdanger("The ignited thermite on \the [source] burns your hand!"))
INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream")
playsound(source, SFX_SEAR, 50, TRUE)
- user.update_damage_overlays()
return COMPONENT_CANCEL_ATTACK_CHAIN
/**
diff --git a/code/datums/components/throwbonus_on_windup.dm b/code/datums/components/throwbonus_on_windup.dm
index ed505d69697de..a96d9294e8010 100644
--- a/code/datums/components/throwbonus_on_windup.dm
+++ b/code/datums/components/throwbonus_on_windup.dm
@@ -52,8 +52,7 @@
return
if(throw_text)
to_chat(our_holder, span_warning(throw_text))
- var/list/offset_to_add = get_icon_dimensions(our_holder.icon)
- var/x_position = CEILING(offset_to_add["width"] * 0.5, 1)
+ var/x_position = CEILING(our_holder.get_cached_width() * 0.5, 1)
our_bar = new()
our_bar.maximum_count = maximum_bonus
our_bar.pixel_x = x_position
diff --git a/code/datums/components/tug_towards.dm b/code/datums/components/tug_towards.dm
new file mode 100644
index 0000000000000..f34cc05bc97fe
--- /dev/null
+++ b/code/datums/components/tug_towards.dm
@@ -0,0 +1,135 @@
+/// "Tugs" an atom towards another atom. That is to say, it will visually
+/// pixel offset to look like it is close to the point it's tugging to,
+/// but not actually move position.
+/datum/component/tug_towards
+ // If multiple are specified, will tug in between them.
+ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
+
+ VAR_PRIVATE
+ /// atom -> strength
+ list/list/tugging_to_targets = list()
+
+
+ current_tug_offset_x = 0
+ current_tug_offset_y = 0
+
+/datum/component/tug_towards/Initialize(
+ /// The atom we are tugging towards.
+ atom/tugging_to,
+
+ /// Strength of the tug, as a number 0 through 1.
+ /// 0 means no tug, 1 means that if you're on an adjacent tile
+ /// you will be directly at the corner of the tugging_to_target.
+ /// Default is 0.8, which provides a healthy amount of
+ /// distance.
+ strength
+)
+ if (!isatom(parent))
+ return COMPONENT_INCOMPATIBLE
+
+ ASSERT(istype(tugging_to))
+
+ add_tugging_to_target(tugging_to, strength)
+
+ RegisterSignals(parent, list(
+ COMSIG_MOVABLE_MOVED,
+ COMSIG_MOB_BUCKLED,
+ COMSIG_MOB_UNBUCKLED,
+ ), PROC_REF(update_tug))
+
+/datum/component/tug_towards/Destroy(force)
+ tugging_to_targets.Cut()
+
+ animate(
+ parent,
+ pixel_x = -current_tug_offset_x,
+ pixel_y = -current_tug_offset_y,
+ time = 0.2 SECONDS,
+ flags = ANIMATION_RELATIVE
+ )
+
+ return ..()
+
+/datum/component/tug_towards/InheritComponent(
+ datum/component/tug_towards/new_tug_towards,
+ i_am_original,
+
+ atom/tugging_to,
+ strength,
+)
+ add_tugging_to_target(tugging_to, strength)
+
+/datum/component/tug_towards/proc/remove_tug_target(atom/target)
+ tugging_to_targets -= target
+
+ if (tugging_to_targets.len == 0)
+ qdel(src)
+ else
+ update_tug()
+
+/datum/component/tug_towards/proc/add_tugging_to_target(
+ atom/tugging_to,
+ strength = 0.8,
+)
+ PRIVATE_PROC(TRUE)
+
+ tugging_to_targets[tugging_to] = strength
+ RegisterSignal(tugging_to, COMSIG_PREQDELETED, PROC_REF(on_tugging_to_qdeleting))
+ RegisterSignal(tugging_to, COMSIG_MOVABLE_MOVED, PROC_REF(update_tug))
+
+ update_tug()
+
+/datum/component/tug_towards/proc/on_tugging_to_qdeleting(datum/target)
+ SIGNAL_HANDLER
+ PRIVATE_PROC(TRUE)
+
+ tugging_to_targets -= target
+ if (tugging_to_targets.len == 0)
+ qdel(src)
+ else
+ update_tug()
+
+/datum/component/tug_towards/proc/update_tug()
+ SIGNAL_HANDLER
+ PRIVATE_PROC(TRUE)
+
+ var/atom/atom_parent = parent
+ var/mob/mob_parent = parent
+
+ var/total_tug_x = 0
+ var/total_tug_y = 0
+
+ if (!istype(mob_parent) || !mob_parent.buckled)
+ var/tuggers = 0
+
+ for (var/atom/target as anything in tugging_to_targets)
+ if (target.z != atom_parent.z)
+ continue
+
+ tuggers += 1
+ var/strength = tugging_to_targets[target]
+ total_tug_x += SIGN(target.x - atom_parent.x) * strength
+ total_tug_y += SIGN(target.y - atom_parent.y) * strength
+
+ // Intentionally not trig--something at a corner with a strength of 1 should have
+ // you at the corner, rather than root(2).
+ total_tug_x /= tuggers
+ total_tug_y /= tuggers
+
+ var/half_size = world.icon_size * 0.5
+ total_tug_x *= half_size
+ total_tug_y *= half_size
+
+ if (total_tug_x == current_tug_offset_x && total_tug_y == current_tug_offset_y)
+ return
+
+ animate(
+ atom_parent,
+ pixel_x = -current_tug_offset_x + total_tug_x,
+ pixel_y = -current_tug_offset_y + total_tug_y,
+ time = 0.2 SECONDS,
+ flags = ANIMATION_RELATIVE
+ )
+
+ current_tug_offset_x = total_tug_x
+ current_tug_offset_y = total_tug_y
diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm
index d1f5b0fb1b86e..f362359f3cde5 100644
--- a/code/datums/components/wet_floor.dm
+++ b/code/datums/components/wet_floor.dm
@@ -159,14 +159,14 @@
for(var/i in time_left_list)
. |= text2num(i)
-/datum/component/wet_floor/PreTransfer()
+/datum/component/wet_floor/PreTransfer(datum/new_parent)
var/turf/O = parent
O.cut_overlay(current_overlay)
//That turf is no longer slippery, we're out of here
//Slippery components don't transfer due to callbacks
qdel(O.GetComponent(/datum/component/slippery))
-/datum/component/wet_floor/PostTransfer()
+/datum/component/wet_floor/PostTransfer(datum/new_parent)
if(!isopenturf(parent))
return COMPONENT_INCOMPATIBLE
var/turf/T = parent
diff --git a/code/datums/diseases/chronic_illness.dm b/code/datums/diseases/chronic_illness.dm
index 617cfde763d11..be4525fd5a411 100644
--- a/code/datums/diseases/chronic_illness.dm
+++ b/code/datums/diseases/chronic_illness.dm
@@ -60,7 +60,7 @@
affected_mob.visible_message(span_warning("[affected_mob] collapses!"))
if(prob(30))
to_chat(affected_mob, span_danger("Your vision blurs as you faint!"))
- affected_mob.AdjustSleeping(10)
+ affected_mob.AdjustSleeping(1 SECONDS)
if(SPT_PROB(0.5, seconds_per_tick))
to_chat(affected_mob, span_danger("[pick("You feel as though your atoms are accelerating in place.", "You feel like you're being torn apart!")]"))
affected_mob.emote("scream")
diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm
index 2a77195e311c4..4b01ef804af29 100644
--- a/code/datums/diseases/tuberculosis.dm
+++ b/code/datums/diseases/tuberculosis.dm
@@ -51,7 +51,7 @@
if(SPT_PROB(5, seconds_per_tick))
need_mob_update += affected_mob.adjustStaminaLoss(100, updating_stamina = FALSE)
affected_mob.visible_message(span_warning("[affected_mob] faints!"), span_userdanger("You surrender yourself and feel at peace..."))
- affected_mob.AdjustSleeping(100)
+ affected_mob.AdjustSleeping(10 SECONDS)
if(SPT_PROB(1, seconds_per_tick))
to_chat(affected_mob, span_userdanger("You feel your mind relax and your thoughts drift!"))
affected_mob.adjust_confusion_up_to(8 SECONDS, 100 SECONDS)
diff --git a/code/datums/diseases/weightlessness.dm b/code/datums/diseases/weightlessness.dm
new file mode 100644
index 0000000000000..c561b3c9205ec
--- /dev/null
+++ b/code/datums/diseases/weightlessness.dm
@@ -0,0 +1,43 @@
+/datum/disease/weightlessness
+ name = "Localized Weightloss Malfunction"
+ max_stages = 4
+ spread_text = "On Contact"
+ spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS
+ cure_text = "Liquid dark matter"
+ cures = list(/datum/reagent/liquid_dark_matter)
+ agent = "Sub-quantum DNA Repulsion"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ disease_flags = CAN_CARRY|CAN_RESIST|CURABLE
+ spreading_modifier = 0.5
+ cure_chance = 4
+ desc = "This disease results in a low level rewrite of the patient's bio-electric signature, causing them to reject the phenomena of \"weight\". Injestion of liquid dark matter tends to stabilize the field."
+ severity = DISEASE_SEVERITY_MEDIUM
+ infectable_biotypes = MOB_ORGANIC
+
+
+/datum/disease/weightlessness/stage_act(seconds_per_tick, times_fired)
+ . = ..()
+ if(!.)
+ return
+
+ switch(stage)
+ if(1)
+ if(SPT_PROB(1, seconds_per_tick))
+ to_chat(affected_mob, span_danger("You almost lose your balance for a second."))
+ if(2)
+ if(SPT_PROB(3, seconds_per_tick) && !HAS_TRAIT_FROM(affected_mob, TRAIT_MOVE_FLOATING, NO_GRAVITY_TRAIT))
+ to_chat(affected_mob, span_danger("You feel yourself lift off the ground."))
+ affected_mob.reagents.add_reagent(/datum/reagent/gravitum, 1)
+
+ if(4)
+ if(SPT_PROB(3, seconds_per_tick) && !affected_mob.has_quirk(/datum/quirk/spacer_born))
+ to_chat(affected_mob, span_danger("You feel sick as the world starts moving around you."))
+ affected_mob.adjust_confusion(3 SECONDS)
+ if(SPT_PROB(8, seconds_per_tick) && !HAS_TRAIT_FROM(affected_mob, TRAIT_MOVE_FLOATING, NO_GRAVITY_TRAIT))
+ to_chat(affected_mob, span_danger("You suddenly lift off the ground."))
+ affected_mob.reagents.add_reagent(/datum/reagent/gravitum, 5)
+
+/datum/disease/weightlessness/cure(add_resistance)
+ . = ..()
+ affected_mob.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 95, purge_ratio = 0.4)
+ to_chat(affected_mob, span_danger("You fall to the floor as your body stops rejecting gravity."))
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index f084184f850e3..221dff6aaccf9 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -553,7 +553,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
if (old_species.properly_gained)
old_species.on_species_loss(src, new_race, pref_load)
- dna.species.on_species_gain(src, old_species, pref_load)
+ dna.species.on_species_gain(src, old_species, pref_load, regenerate_icons = icon_update)
log_mob_tag("TAG: [tag] SPECIES: [key_name(src)] \[[mrace]\]")
/mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE)
diff --git a/code/datums/drift_handler.dm b/code/datums/drift_handler.dm
index 2153058436470..dcf0771d8a5e8 100644
--- a/code/datums/drift_handler.dm
+++ b/code/datums/drift_handler.dm
@@ -36,7 +36,6 @@
RegisterSignal(drifting_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, PROC_REF(before_move))
RegisterSignal(drifting_loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(after_move))
RegisterSignal(drifting_loop, COMSIG_QDELETING, PROC_REF(loop_death))
- RegisterSignal(parent, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(attempt_halt))
if(drifting_loop.status & MOVELOOP_STATUS_RUNNING)
drifting_start(drifting_loop) // There's a good chance it'll autostart, gotta catch that
@@ -49,6 +48,9 @@
visual_delay = start_delay
apply_initial_visuals(visual_delay)
+ // Fire the engines!
+ if (drifting_loop.timer <= world.time)
+ SSnewtonian_movement.fire_moveloop(drifting_loop)
/datum/drift_handler/Destroy()
inertia_last_loc = null
@@ -76,7 +78,7 @@
//It's ok if it's not, it's just important if it is.
mob_parent.client?.visual_delay = MOVEMENT_ADJUSTED_GLIDE_SIZE(visual_delay, SSnewtonian_movement.visual_delay)
-/datum/drift_handler/proc/newtonian_impulse(inertia_angle, start_delay, additional_force, controlled_cap)
+/datum/drift_handler/proc/newtonian_impulse(inertia_angle, start_delay, additional_force, controlled_cap, force_loop = TRUE)
SIGNAL_HANDLER
inertia_last_loc = parent.loc
// We've been told to move in the middle of deletion process, tell parent to create a new handler instead
@@ -96,6 +98,9 @@
drifting_loop.set_angle(delta_to_angle(force_x, force_y))
drifting_loop.set_delay(get_loop_delay(parent))
+ // We have to forcefully fire it here to avoid stuttering in case of server lag
+ if (drifting_loop.timer <= world.time && force_loop)
+ SSnewtonian_movement.fire_moveloop(drifting_loop)
return TRUE
/datum/drift_handler/proc/drifting_start()
@@ -202,28 +207,28 @@
if(world.time < block_inputs_until)
return COMSIG_MOB_CLIENT_BLOCK_PRE_MOVE
-/datum/drift_handler/proc/attempt_halt(mob/source, movement_dir, continuous_move, atom/backup)
- SIGNAL_HANDLER
-
- if ((backup.density || !backup.CanPass(source, get_dir(backup, source))) && (get_dir(source, backup) == movement_dir || source.loc == backup.loc))
+/datum/drift_handler/proc/attempt_halt(movement_dir, continuous_move, atom/backup)
+ if ((backup.density || !backup.CanPass(parent, get_dir(backup, parent))) && (get_dir(parent, backup) == movement_dir || parent.loc == backup.loc))
if (drift_force >= INERTIA_FORCE_THROW_FLOOR)
- source.throw_at(backup, 1, floor(1 + (drift_force - INERTIA_FORCE_THROW_FLOOR) / INERTIA_FORCE_PER_THROW_FORCE), spin = FALSE)
- return
+ parent.throw_at(backup, 1, floor(1 + (drift_force - INERTIA_FORCE_THROW_FLOOR) / INERTIA_FORCE_PER_THROW_FORCE), spin = FALSE)
+ return FALSE
if (drift_force < INERTIA_FORCE_SPACEMOVE_GRAB || isnull(drifting_loop))
- return
+ return FALSE
- if (!isnull(source.client) && source.client.intended_direction)
- if ((source.client.intended_direction & movement_dir) && !(get_dir(source, backup) & movement_dir))
- return
+ if (ismob(parent))
+ var/mob/source_user = parent
+ if (!isnull(source_user.client) && source_user.client.intended_direction)
+ if ((source_user.client.intended_direction & movement_dir) && !(get_dir(source_user, backup) & movement_dir))
+ return FALSE
- if (drift_force <= INERTIA_FORCE_SPACEMOVE_REDUCTION / source.inertia_force_weight)
- glide_to_halt(get_loop_delay(source))
- return COMPONENT_PREVENT_SPACEMOVE_HALT
+ if (drift_force <= INERTIA_FORCE_SPACEMOVE_REDUCTION / parent.inertia_force_weight)
+ glide_to_halt(get_loop_delay(parent))
+ return TRUE
- drift_force -= INERTIA_FORCE_SPACEMOVE_REDUCTION / source.inertia_force_weight
- drifting_loop.set_delay(get_loop_delay(source))
- return COMPONENT_PREVENT_SPACEMOVE_HALT
+ drift_force -= INERTIA_FORCE_SPACEMOVE_REDUCTION / parent.inertia_force_weight
+ drifting_loop.set_delay(get_loop_delay(parent))
+ return TRUE
/datum/drift_handler/proc/get_loop_delay(atom/movable/movable)
return (DEFAULT_INERTIA_SPEED / ((1 - INERTIA_SPEED_COEF) + drift_force * INERTIA_SPEED_COEF)) * movable.inertia_move_multiplier
diff --git a/code/datums/elements/basic_eating.dm b/code/datums/elements/basic_eating.dm
index 4f4f493e0ef33..75caa272ef9bd 100644
--- a/code/datums/elements/basic_eating.dm
+++ b/code/datums/elements/basic_eating.dm
@@ -30,16 +30,25 @@
src.drinking = drinking
src.food_types = food_types
- //this lets players eat
+ RegisterSignal(target, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(try_feed))
RegisterSignal(target, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarm_attack))
- //this lets ai eat. yes, i'm serious
- RegisterSignal(target, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(on_pre_attackingtarget))
/datum/element/basic_eating/Detach(datum/target)
REMOVE_TRAIT(target, TRAIT_MOB_EATER, REF(src))
- UnregisterSignal(target, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET))
+
+ UnregisterSignal(target, list(
+ COMSIG_LIVING_UNARMED_ATTACK,
+ COMSIG_ATOM_ITEM_INTERACTION,
+ ))
return ..()
+/datum/element/basic_eating/proc/try_feed(atom/source, mob/living/user, atom/possible_food)
+ SIGNAL_HANDLER
+ if(user.combat_mode || !is_type_in_list(possible_food, food_types))
+ return NONE
+
+ try_eating(source, possible_food, user)
+
/datum/element/basic_eating/proc/on_unarm_attack(mob/living/eater, atom/target, proximity, modifiers)
SIGNAL_HANDLER
if(!proximity)
@@ -49,14 +58,10 @@
return COMPONENT_CANCEL_ATTACK_CHAIN
return NONE
-/datum/element/basic_eating/proc/on_pre_attackingtarget(mob/living/eater, atom/target)
- SIGNAL_HANDLER
- try_eating(eater, target)
-
-/datum/element/basic_eating/proc/try_eating(mob/living/eater, atom/target)
+/datum/element/basic_eating/proc/try_eating(mob/living/eater, atom/target, mob/living/feeder)
if(!is_type_in_list(target, food_types))
return FALSE
- if(SEND_SIGNAL(eater, COMSIG_MOB_PRE_EAT, target) & COMSIG_MOB_CANCEL_EAT)
+ if(SEND_SIGNAL(eater, COMSIG_MOB_PRE_EAT, target, feeder) & COMSIG_MOB_CANCEL_EAT)
return FALSE
var/eat_verb
if(drinking)
@@ -75,21 +80,22 @@
if (damage_amount > 0 && damage_type)
eater.apply_damage(damage_amount, damage_type)
eater.visible_message(span_notice("[eater] [eat_verb]s [target], and seems to hurt itself."), span_notice("You [eat_verb] [target], hurting yourself in the process."))
- finish_eating(eater, target)
+ finish_eating(eater, target, feeder)
return TRUE
eater.visible_message(span_notice("[eater] [eat_verb]s [target]."), span_notice("You [eat_verb] [target]."))
- finish_eating(eater, target)
+ finish_eating(eater, target, feeder)
return TRUE
-/datum/element/basic_eating/proc/finish_eating(mob/living/eater, atom/target)
+/datum/element/basic_eating/proc/finish_eating(mob/living/eater, atom/target, mob/living/feeder)
set waitfor = FALSE
- SEND_SIGNAL(eater, COMSIG_MOB_ATE)
if(drinking)
playsound(eater.loc,'sound/items/drink.ogg', rand(10,50), TRUE)
else
playsound(eater.loc,'sound/items/eatfood.ogg', rand(10,50), TRUE)
var/atom/final_target = target
+ if(SEND_SIGNAL(eater, COMSIG_MOB_ATE, final_target, feeder) & COMSIG_MOB_TERMINATE_EAT)
+ return
if(isstack(target)) //if stack, only consume 1
var/obj/item/stack/food_stack = target
final_target = food_stack.split_stack(eater, 1)
diff --git a/code/datums/elements/beauty.dm b/code/datums/elements/beauty.dm
index ddd3a8f5eabe5..8bfa298c1a725 100644
--- a/code/datums/elements/beauty.dm
+++ b/code/datums/elements/beauty.dm
@@ -20,57 +20,76 @@
src.beauty = beauty
- if(!beauty_counter[target] && ismovable(target))
+ var/area/current_area = get_area(target)
+ var/beauty_active = TRUE
+ if(ismovable(target))
var/atom/movable/mov_target = target
- mov_target.become_area_sensitive(BEAUTY_ELEMENT_TRAIT)
- RegisterSignal(mov_target, COMSIG_ENTER_AREA, PROC_REF(enter_area))
- RegisterSignal(mov_target, COMSIG_EXIT_AREA, PROC_REF(exit_area))
+ var/is_item = isitem(mov_target)
+ beauty_active = !is_item || isturf(mov_target.loc)
+ if(!beauty_counter[target])
+ if(is_item)
+ RegisterSignal(mov_target, COMSIG_MOVABLE_MOVED, PROC_REF(on_item_moved))
+ if(beauty_active)
+ mov_target.become_area_sensitive(BEAUTY_ELEMENT_TRAIT)
+ RegisterSignal(mov_target, COMSIG_ENTER_AREA, PROC_REF(enter_area))
+ RegisterSignal(mov_target, COMSIG_EXIT_AREA, PROC_REF(exit_area))
beauty_counter[target]++
- var/area/current_area = get_area(target)
- if(current_area && !current_area.outdoors)
+ if(current_area && !current_area.outdoors && beauty_active)
current_area.totalbeauty += beauty
current_area.update_beauty()
/datum/element/beauty/proc/enter_area(datum/source, area/new_area)
SIGNAL_HANDLER
- if(new_area.outdoors)
+ if(new_area.outdoors || HAS_TRAIT(source, TRAIT_BEAUTY_APPLIED))
return
new_area.totalbeauty += beauty * beauty_counter[source]
new_area.update_beauty()
+ ADD_TRAIT(source, TRAIT_BEAUTY_APPLIED, INNATE_TRAIT)
/datum/element/beauty/proc/exit_area(datum/source, area/old_area)
SIGNAL_HANDLER
- if(old_area.outdoors)
+ if(old_area.outdoors || !HAS_TRAIT(source, TRAIT_BEAUTY_APPLIED))
return
old_area.totalbeauty -= beauty * beauty_counter[source]
old_area.update_beauty()
+ REMOVE_TRAIT(source, TRAIT_BEAUTY_APPLIED, INNATE_TRAIT)
-/datum/element/beauty/Detach(datum/source)
+///Items only contribute to beauty while not inside other objects or mobs (e.g on the floor, on a table etc.).
+/datum/element/beauty/proc/on_item_moved(obj/item/source, atom/old_loc, direction, forced)
+ SIGNAL_HANDLER
+
+ var/is_old_turf = isturf(old_loc)
+ if(!is_old_turf && isturf(source.loc))
+ source.become_area_sensitive(BEAUTY_ELEMENT_TRAIT)
+ RegisterSignal(source, COMSIG_ENTER_AREA, PROC_REF(enter_area), TRUE)
+ RegisterSignal(source, COMSIG_EXIT_AREA, PROC_REF(exit_area), TRUE)
+ enter_area(source, get_area(source.loc))
+ else if(is_old_turf && !isturf(source.loc))
+ source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT)
+ UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA))
+ exit_area(source, get_area(old_loc))
+
+/datum/element/beauty/Detach(atom/source)
if(!beauty_counter[source])
return ..()
- var/area/current_area = get_area(source)
- if(QDELETED(source))
- . = ..()
- UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA))
- if(current_area)
- exit_area(source, current_area)
- beauty_counter -= source
- var/atom/movable/movable_source = source
- if(istype(movable_source))
- movable_source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT)
- else //lower the 'counter' down by one, update the area, and call parent if it's reached zero.
+
+ var/area/current_area = (!isitem(source) || isturf(source.loc)) ? get_area(source) : null
+ if(!QDELETED(source))//lower the 'counter' down by one, update the area, and call parent if it's reached zero.
beauty_counter[source]--
if(current_area && !current_area.outdoors)
current_area.totalbeauty -= beauty
current_area.update_beauty()
- if(!beauty_counter[source])
- . = ..()
- UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA))
- beauty_counter -= source
- var/atom/movable/movable_source = source
- if(istype(movable_source))
- movable_source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT)
+ if(beauty_counter[source])
+ return
+ else if(current_area)
+ exit_area(source, current_area)
+
+ UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA, COMSIG_MOVABLE_MOVED))
+ beauty_counter -= source
+ var/atom/movable/movable_source = source
+ if(istype(movable_source))
+ movable_source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT)
diff --git a/code/datums/elements/chewable.dm b/code/datums/elements/chewable.dm
index d520597f4310b..fb1d1e995b2b6 100644
--- a/code/datums/elements/chewable.dm
+++ b/code/datums/elements/chewable.dm
@@ -22,6 +22,10 @@
var/obj/item/target_item = target
if (metabolization_amount)
+ // this prevents microdosing which causes the reagent to enter and then delete itself before it can be processed
+ if(metabolization_amount < REAGENTS_METABOLISM)
+ CRASH("Attatching /datum/element/chewable to [target] requires metabolization_amount to be higher than [REAGENTS_METABOLISM]u. The amount used was [metabolization_amount]u!")
+
src.metabolization_amount = metabolization_amount
src.slots_to_check = slots_to_check || target_item.slot_flags
diff --git a/code/datums/elements/cuffsnapping.dm b/code/datums/elements/cuffsnapping.dm
index df445f4acc971..1abdc4a7a6bd2 100644
--- a/code/datums/elements/cuffsnapping.dm
+++ b/code/datums/elements/cuffsnapping.dm
@@ -42,13 +42,20 @@
src.snap_time_strong = snap_time_strong
RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
- RegisterSignal(target, COMSIG_ITEM_ATTACK , PROC_REF(try_cuffsnap_target))
+ RegisterSignal(target, COMSIG_ITEM_ATTACK_SECONDARY, PROC_REF(try_cuffsnap_target))
+ RegisterSignal(target, COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET, PROC_REF(add_item_context))
/datum/element/cuffsnapping/Detach(datum/target)
- UnregisterSignal(target, list(COMSIG_ITEM_ATTACK, COMSIG_ATOM_EXAMINE))
-
+ UnregisterSignal(target, list(COMSIG_ITEM_ATTACK_SECONDARY, COMSIG_ATOM_EXAMINE, COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET))
return ..()
+/datum/element/cuffsnapping/proc/add_item_context(obj/item/source, list/context, mob/living/carbon/target, mob/living/user)
+ SIGNAL_HANDLER
+ if(!iscarbon(target) || !target.handcuffed)
+ return NONE
+ context[SCREENTIP_CONTEXT_RMB] = "Cut Restraints"
+ return CONTEXTUAL_SCREENTIP_SET
+
///signal called on parent being examined
/datum/element/cuffsnapping/proc/on_examine(datum/target, mob/user, list/examine_list)
SIGNAL_HANDLER
@@ -56,7 +63,7 @@
var/examine_string
if(isnull(snap_time_weak))
return
- examine_string = "It looks like it could cut zipties or cable restraints off someone in [snap_time_weak] seconds"
+ examine_string = "It looks like it could be used to cut zipties or cable restraints off someone in [snap_time_weak] seconds"
if(!isnull(snap_time_strong))
examine_string += ", and handcuffs in [snap_time_strong] seconds."
@@ -65,7 +72,7 @@
examine_list += span_notice(examine_string)
-/datum/element/cuffsnapping/proc/try_cuffsnap_target(obj/item/cutter, mob/living/carbon/target, mob/cutter_user, params)
+/datum/element/cuffsnapping/proc/try_cuffsnap_target(obj/item/cutter, mob/living/carbon/target, mob/living/cutter_user, params)
SIGNAL_HANDLER
if(!istype(target)) //we aren't the kind of mob that can even have cuffs, so we skip.
diff --git a/code/datums/elements/dryable.dm b/code/datums/elements/dryable.dm
index d66ea96d8c1f1..583c74764eec9 100644
--- a/code/datums/elements/dryable.dm
+++ b/code/datums/elements/dryable.dm
@@ -22,10 +22,13 @@
/datum/element/dryable/proc/finish_drying(atom/source, datum/weakref/drying_user)
SIGNAL_HANDLER
+ var/static/list/dried_color
+ if (isnull(dried_color))
+ dried_color = color_transition_filter(COLOR_DRIED_TAN)
var/atom/dried_atom = source
if(dry_result == dried_atom.type)//if the dried type is the same as our currrent state, don't bother creating a whole new item, just re-color it.
var/atom/movable/resulting_atom = dried_atom
- resulting_atom.add_atom_colour(COLOR_DRIED_TAN, FIXED_COLOUR_PRIORITY)
+ resulting_atom.add_atom_colour(dried_color, FIXED_COLOUR_PRIORITY)
apply_dried_status(resulting_atom, drying_user)
return
else if(isstack(source)) //Check if its a sheet
diff --git a/code/datums/elements/embed.dm b/code/datums/elements/embed.dm
index fbaf638bdd520..90787f8581798 100644
--- a/code/datums/elements/embed.dm
+++ b/code/datums/elements/embed.dm
@@ -98,12 +98,16 @@
* That's awful, and it'll limit us to drop-deletable shrapnels in the worry of stuff like
* arrows and harpoons being embeddable even when not let loose by their weapons.
*/
-/datum/element/embed/proc/check_embed_projectile(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone, blocked)
+/datum/element/embed/proc/check_embed_projectile(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone, blocked, pierce_hit)
SIGNAL_HANDLER
+ if (pierce_hit)
+ return
+
if(!source.can_embed_into(hit) || blocked)
Detach(source)
return // we don't care
+
var/payload_type = source.shrapnel_type
var/obj/item/payload = new payload_type(get_turf(hit))
payload.set_embed(source.get_embed())
diff --git a/code/datums/elements/fish_safe_storage.dm b/code/datums/elements/fish_safe_storage.dm
index bb7864ced0e6a..ec5c59848646d 100644
--- a/code/datums/elements/fish_safe_storage.dm
+++ b/code/datums/elements/fish_safe_storage.dm
@@ -22,7 +22,7 @@
/datum/element/fish_safe_storage/Detach(atom/source)
for(var/obj/item/fish/fish in source)
tracked_fish -= fish
- fish.exit_stasis()
+ REMOVE_TRAIT(fish, TRAIT_FISH_STASIS, REF(src))
UnregisterSignal(source, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_EXITED, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON))
return ..()
@@ -30,19 +30,19 @@
SIGNAL_HANDLER
if(isfish(arrived))
tracked_fish |= arrived
- arrived.enter_stasis()
+ ADD_TRAIT(arrived, TRAIT_FISH_STASIS, REF(src))
/datum/element/fish_safe_storage/proc/on_init_on(datum/source, obj/item/fish/created)
SIGNAL_HANDLER
if(isfish(created) && !QDELETED(created))
tracked_fish |= created
- created.enter_stasis()
+ ADD_TRAIT(created, TRAIT_FISH_STASIS, REF(src))
/datum/element/fish_safe_storage/proc/on_exit(datum/source, obj/item/fish/gone)
SIGNAL_HANDLER
if(isfish(gone))
tracked_fish -= gone
- gone.exit_stasis()
+ REMOVE_TRAIT(gone, TRAIT_FISH_STASIS, REF(src))
/datum/element/fish_safe_storage/process(seconds_per_tick)
for(var/obj/item/fish/fish as anything in tracked_fish)
diff --git a/code/datums/elements/food/fried_item.dm b/code/datums/elements/food/fried_item.dm
index bc21e51f24cd7..7f8613a537f70 100644
--- a/code/datums/elements/food/fried_item.dm
+++ b/code/datums/elements/food/fried_item.dm
@@ -2,18 +2,21 @@
/datum/element/fried_item
/// List of colors to apply the element target.
/// Each index corresponds to a different level.
- var/static/list/fried_colors = list(
- COLOR_LIGHT_BROWN,
- COLOR_BROWNER_BROWN,
- COLOR_DARKER_BROWN,
- COLOR_BLACK,
- )
+ var/static/list/fried_colors
/datum/element/fried_item/Attach(datum/target, fry_time)
. = ..()
if(!isatom(target))
return ELEMENT_INCOMPATIBLE
+ if (isnull(fried_colors))
+ fried_colors = list(
+ color_transition_filter(COLOR_LIGHT_BROWN, SATURATION_OVERRIDE),
+ color_transition_filter(COLOR_BROWNER_BROWN, SATURATION_OVERRIDE),
+ color_transition_filter(COLOR_DARKER_BROWN, SATURATION_OVERRIDE),
+ color_transition_filter(COLOR_BLACK, SATURATION_OVERRIDE),
+ )
+
var/atom/this_food = target
switch(fry_time)
diff --git a/code/datums/elements/footstep.dm b/code/datums/elements/footstep.dm
index 698f7896a70b4..77a06dcdc4e96 100644
--- a/code/datums/elements/footstep.dm
+++ b/code/datums/elements/footstep.dm
@@ -1,5 +1,3 @@
-#define SHOULD_DISABLE_FOOTSTEPS(source) ((SSlag_switch.measures[DISABLE_FOOTSTEPS] && !(HAS_TRAIT(source, TRAIT_BYPASS_MEASURES))) || HAS_TRAIT(source, TRAIT_SILENT_FOOTSTEPS))
-
///Footstep element. Plays footsteps at parents location when it is appropriate.
/datum/element/footstep
element_flags = ELEMENT_DETACH_ON_HOST_DESTROY|ELEMENT_BESPOKE
@@ -231,5 +229,3 @@
return
playsound(source_loc, footstep_sounds, 50, falloff_distance = 1, vary = sound_vary)
-
-#undef SHOULD_DISABLE_FOOTSTEPS
diff --git a/code/datums/elements/immerse.dm b/code/datums/elements/immerse.dm
index d50ae906c0a55..4c57c40a79113 100644
--- a/code/datums/elements/immerse.dm
+++ b/code/datums/elements/immerse.dm
@@ -1,3 +1,10 @@
+/// A list of movables that shouldn't be affected by the element, either because it'd look bad or barely perceptible
+GLOBAL_LIST_INIT(immerse_ignored_movable, typecacheof(list(
+ /obj/effect,
+ /mob/dead,
+ /obj/projectile,
+)))
+
/**
* A visual element that makes movables entering the attached turfs look immersed into that turf.
*
@@ -9,11 +16,6 @@
///An association list of turfs that have this element attached and their affected contents.
var/list/attached_turfs_and_movables = list()
- /**
- * A list of movables that shouldn't be affected by the element, either because it'd look bad
- * or barely perceptible.
- */
- var/static/list/movables_to_ignore
///A list of icons generated from a target and a mask, later used as appearances for the overlays.
var/static/list/generated_immerse_icons = list()
///A list of instances of /atom/movable/immerse_overlay then used as visual overlays for the immersed movables.
@@ -32,16 +34,6 @@
if(!isturf(target) || !icon || !icon_state || !mask_icon)
return ELEMENT_INCOMPATIBLE
- if(isnull(movables_to_ignore))
- movables_to_ignore = typecacheof(list(
- /obj/effect,
- /mob/dead,
- /obj/projectile,
- ))
-
- movables_to_ignore += GLOB.WALLITEMS_INTERIOR
- movables_to_ignore += GLOB.WALLITEMS_EXTERIOR
-
src.icon = icon
src.icon_state = icon_state
src.color = color
@@ -109,11 +101,15 @@
SIGNAL_HANDLER
if(QDELETED(movable))
return
- if(HAS_TRAIT(movable, TRAIT_IMMERSED))
+ if(HAS_TRAIT(movable, TRAIT_IMMERSED) || HAS_TRAIT(movable, TRAIT_WALLMOUNTED))
+ return
+ if(!ISINRANGE(movable.plane, MUTATE_PLANE(FLOOR_PLANE, source), MUTATE_PLANE(GAME_PLANE, source)))
return
- if(movable.layer >= ABOVE_ALL_MOB_LAYER || !ISINRANGE(movable.plane, MUTATE_PLANE(FLOOR_PLANE, source), MUTATE_PLANE(GAME_PLANE, source)))
+ var/layer_to_check = IS_TOPDOWN_PLANE(source.plane) ? TOPDOWN_ABOVE_WATER_LAYER : ABOVE_ALL_MOB_LAYER
+ //First, floor plane objects use TOPDOWN_LAYER, second this check shouldn't apply to them anyway.
+ if(movable.layer >= layer_to_check)
return
- if(is_type_in_typecache(movable, movables_to_ignore))
+ if(is_type_in_typecache(movable, GLOB.immerse_ignored_movable))
return
var/atom/movable/buckled
@@ -145,7 +141,9 @@
var/width = icon_dimensions["width"] || ICON_SIZE_X
var/height = icon_dimensions["height"] || ICON_SIZE_Y
- var/is_below_water = movable.layer < WATER_LEVEL_LAYER ? "underwater-" : ""
+ ///This determines if the overlay should cover the entire surface of the object or not
+ var/layer_to_check = IS_TOPDOWN_PLANE(movable.plane) ? TOPDOWN_WATER_LEVEL_LAYER : WATER_LEVEL_LAYER
+ var/is_below_water = (movable.layer < layer_to_check) ? "underwater-" : ""
var/atom/movable/immerse_overlay/vis_overlay = generated_visual_overlays["[is_below_water][width]x[height]"]
diff --git a/code/datums/elements/kneecapping.dm b/code/datums/elements/kneecapping.dm
index 977268e94a10b..49b77acedd72b 100644
--- a/code/datums/elements/kneecapping.dm
+++ b/code/datums/elements/kneecapping.dm
@@ -78,15 +78,16 @@
attacker.visible_message(span_warning("[attacker] carefully aims [attacker.p_their()] [weapon] for a swing at [target]'s kneecaps!"), span_danger("You carefully aim \the [weapon] for a swing at [target]'s kneecaps!"))
log_combat(attacker, target, "started aiming a swing to break the kneecaps of", weapon)
- if(do_after(attacker, 3 SECONDS, target, interaction_key = weapon))
- attacker.visible_message(span_warning("[attacker] swings [attacker.p_their()] [weapon] at [target]'s kneecaps!"), span_danger("You swing \the [weapon] at [target]'s kneecaps!"))
-
- var/min_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_SEVERE, return_value_if_no_wound = 30, wound_source = weapon)
- var/max_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_CRITICAL, return_value_if_no_wound = 50, wound_source = weapon)
-
- leg.receive_damage(brute = weapon.force, wound_bonus = rand(min_wound, max_wound + 10), damage_source = "kneecapping")
- target.emote("scream")
- log_combat(attacker, target, "broke the kneecaps of", weapon)
- target.update_damage_overlays()
- attacker.do_attack_animation(target, used_item = weapon)
- playsound(source = get_turf(weapon), soundin = weapon.hitsound, vol = weapon.get_clamped_volume(), vary = TRUE)
+ if(!do_after(attacker, 3 SECONDS, target, interaction_key = weapon))
+ return
+
+ attacker.visible_message(span_warning("[attacker] swings [attacker.p_their()] [weapon] at [target]'s kneecaps!"), span_danger("You swing \the [weapon] at [target]'s kneecaps!"))
+
+ var/min_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_SEVERE, return_value_if_no_wound = 30, wound_source = weapon)
+ var/max_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_CRITICAL, return_value_if_no_wound = 50, wound_source = weapon)
+
+ target.apply_damage(weapon.force, weapon.damtype, leg, wound_bonus = rand(min_wound, max_wound + 10), attacking_item = weapon)
+ target.emote("scream")
+ log_combat(attacker, target, "broke the kneecaps of", weapon)
+ attacker.do_attack_animation(target, used_item = weapon)
+ playsound(source = weapon, soundin = weapon.hitsound, vol = weapon.get_clamped_volume(), vary = TRUE)
diff --git a/code/datums/elements/lazy_fishing_spot.dm b/code/datums/elements/lazy_fishing_spot.dm
deleted file mode 100644
index 67edcea2e88ed..0000000000000
--- a/code/datums/elements/lazy_fishing_spot.dm
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Lazy fishing spot element so fisheable turfs do not have a component each since
- * they're usually pretty common on their respective maps (lava/water/etc)
- */
-/datum/element/lazy_fishing_spot
- element_flags = ELEMENT_BESPOKE | ELEMENT_DETACH_ON_HOST_DESTROY // Detach for turfs
- argument_hash_start_idx = 2
- var/configuration
-
-/datum/element/lazy_fishing_spot/Attach(datum/target, configuration)
- . = ..()
- if(!isatom(target))
- return ELEMENT_INCOMPATIBLE
- if(!ispath(configuration, /datum/fish_source) || configuration == /datum/fish_source)
- CRASH("Lazy fishing spot has incorrect configuration passed in: [configuration].")
- src.configuration = configuration
- ADD_TRAIT(target, TRAIT_FISHING_SPOT, REF(src))
- RegisterSignal(target, COMSIG_PRE_FISHING, PROC_REF(create_fishing_spot))
- RegisterSignal(target, COMSIG_NPC_FISHING, PROC_REF(return_glob_fishing_spot))
- RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined))
- RegisterSignal(target, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(on_examined_more))
- RegisterSignal(target, COMSIG_ATOM_EX_ACT, PROC_REF(explosive_fishing))
- RegisterSignal(target, COMSIG_FISH_RELEASED_INTO, PROC_REF(fish_released))
- RegisterSignal(target, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(link_to_fish_porter))
-
-/datum/element/lazy_fishing_spot/Detach(datum/target)
- UnregisterSignal(target, list(
- COMSIG_FISH_RELEASED_INTO,
- COMSIG_PRE_FISHING,
- COMSIG_NPC_FISHING,
- COMSIG_ATOM_EXAMINE,
- COMSIG_ATOM_EXAMINE_MORE,
- COMSIG_ATOM_EX_ACT,
- COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL),
- ))
- REMOVE_TRAIT(target, TRAIT_FISHING_SPOT, REF(src))
- return ..()
-
-/datum/element/lazy_fishing_spot/proc/create_fishing_spot(datum/source)
- SIGNAL_HANDLER
-
- source.AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[configuration])
- Detach(source)
-
-///If the fish source has fishes that are shown in the
-/datum/element/lazy_fishing_spot/proc/on_examined(datum/source, mob/user, list/examine_text)
- SIGNAL_HANDLER
- if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT))
- return
-
- var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration]
-
- if(!fish_source.has_known_fishes())
- return
-
- examine_text += span_tinynoticeital("This is a fishing spot. You can look again to list its fishes...")
-
-/datum/element/lazy_fishing_spot/proc/on_examined_more(datum/source, mob/user, list/examine_text)
- SIGNAL_HANDLER
- if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT))
- return
-
- var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration]
- fish_source.get_catchable_fish_names(user, source, examine_text)
-
-/datum/element/lazy_fishing_spot/proc/explosive_fishing(atom/location, severity)
- SIGNAL_HANDLER
- var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration]
- fish_source.spawn_reward_from_explosion(location, severity)
-
-/datum/element/lazy_fishing_spot/proc/return_glob_fishing_spot(datum/source, list/fish_spot_container)
- fish_spot_container[NPC_FISHING_SPOT] = GLOB.preset_fish_sources[configuration]
-
-/datum/element/lazy_fishing_spot/proc/link_to_fish_porter(atom/source, mob/user, obj/item/multitool/tool)
- SIGNAL_HANDLER
- if(!istype(tool.buffer, /obj/machinery/fishing_portal_generator))
- return
- var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration]
- var/obj/machinery/fishing_portal_generator/portal = tool.buffer
- return portal.link_fishing_spot(fish_source, source, user)
-
-/datum/element/lazy_fishing_spot/proc/fish_released(datum/source, obj/item/fish/fish, mob/living/releaser)
- SIGNAL_HANDLER
- var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration]
- fish_source.readd_fish(fish, releaser)
diff --git a/code/datums/elements/organ_set_bonus.dm b/code/datums/elements/organ_set_bonus.dm
index 118c64fbeafa4..a8d1d3c7ad736 100644
--- a/code/datums/elements/organ_set_bonus.dm
+++ b/code/datums/elements/organ_set_bonus.dm
@@ -57,6 +57,10 @@
var/required_biotype = MOB_ORGANIC
/// A list of traits added to the mob upon bonus activation, can be of any length.
var/list/bonus_traits = list()
+ /// Bonus biotype to add on bonus activation.
+ var/bonus_biotype
+ /// If the biotype was added - used to check if we should remove the biotype or not, on organ set loss.
+ var/biotype_added = FALSE
/// Limb overlay to apply upon activation
var/limb_overlay
/// Color priority for limb overlay
@@ -80,10 +84,20 @@
if((required_biotype == MOB_ORGANIC) && !owner.can_mutate())
return FALSE
bonus_active = TRUE
+ // Add traits
if(length(bonus_traits))
owner.add_traits(bonus_traits, REF(src))
+
+ // Add biotype
+ if(owner.mob_biotypes & bonus_biotype)
+ biotype_added = FALSE
+ owner.mob_biotypes |= bonus_biotype
+ biotype_added = TRUE
+
if(bonus_activate_text)
to_chat(owner, bonus_activate_text)
+
+ // Add limb overlay
if(!iscarbon(owner) || !limb_overlay)
return TRUE
var/mob/living/carbon/carbon_owner = owner
@@ -96,10 +110,18 @@
/datum/status_effect/organ_set_bonus/proc/disable_bonus()
SHOULD_CALL_PARENT(TRUE)
bonus_active = FALSE
+
+ // Remove traits
if(length(bonus_traits))
owner.remove_traits(bonus_traits, REF(src))
+ // Remove biotype (if added)
+ if(biotype_added)
+ owner.mob_biotypes &= ~bonus_biotype
+
if(bonus_deactivate_text)
to_chat(owner, bonus_deactivate_text)
+
+ // Remove limb overlay
if(!iscarbon(owner) || QDELETED(owner) || !limb_overlay)
return
var/mob/living/carbon/carbon_owner = owner
diff --git a/code/datums/elements/projectile_drop.dm b/code/datums/elements/projectile_drop.dm
index 36e189d6c3aeb..0b1992ef56097 100644
--- a/code/datums/elements/projectile_drop.dm
+++ b/code/datums/elements/projectile_drop.dm
@@ -28,8 +28,10 @@
//Just to be safe, knowing it won't be spawned multiple times.
Detach(source)
-/datum/element/projectile_drop/proc/spawn_drop_if_not_embeddable(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone)
+/datum/element/projectile_drop/proc/spawn_drop_if_not_embeddable(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone, blocked, pierce_hit)
SIGNAL_HANDLER
+ if (pierce_hit)
+ return
if(source.can_embed_into(hit))
Detach(source)
return
diff --git a/code/datums/elements/ranged_armour.dm b/code/datums/elements/ranged_armour.dm
index 6d1322c687b1a..de5ba61d22337 100644
--- a/code/datums/elements/ranged_armour.dm
+++ b/code/datums/elements/ranged_armour.dm
@@ -40,7 +40,7 @@
return ..()
/// Modify or ignore bullet damage based on projectile properties
-/datum/element/ranged_armour/proc/pre_bullet_impact(atom/parent, list/signal_args, obj/projectile/bullet)
+/datum/element/ranged_armour/proc/pre_bullet_impact(atom/parent, obj/projectile/bullet)
SIGNAL_HANDLER
if (bullet.damage >= minimum_projectile_force || (bullet.damage_type in vulnerable_projectile_types))
return
diff --git a/code/datums/elements/relay_attackers.dm b/code/datums/elements/relay_attackers.dm
index fd87cb3bc2c8e..5b7202608ec0b 100644
--- a/code/datums/elements/relay_attackers.dm
+++ b/code/datums/elements/relay_attackers.dm
@@ -60,7 +60,7 @@
relay_attacker(target, attacker, ATTACKER_DAMAGING_ATTACK)
/// Even if another component blocked this hit, someone still shot at us
-/datum/element/relay_attackers/proc/on_bullet_act(atom/target, list/bullet_args, obj/projectile/hit_projectile)
+/datum/element/relay_attackers/proc/on_bullet_act(atom/target, obj/projectile/hit_projectile)
SIGNAL_HANDLER
if(!hit_projectile.is_hostile_projectile())
return
diff --git a/code/datums/elements/selfknockback.dm b/code/datums/elements/selfknockback.dm
index d330b30debc1a..416240b7cfd33 100644
--- a/code/datums/elements/selfknockback.dm
+++ b/code/datums/elements/selfknockback.dm
@@ -47,15 +47,15 @@ clamping the Knockback_Force value below. */
usertarget.throw_at(move_target, knockback_force, knockback_speed)
usertarget.visible_message(span_warning("[usertarget] gets thrown back by the force of \the [I] impacting \the [attacktarget]!"), span_warning("The force of \the [I] impacting \the [attacktarget] sends you flying!"))
-/datum/element/selfknockback/proc/Projectile_SelfKnockback(obj/projectile/P)
+/datum/element/selfknockback/proc/Projectile_SelfKnockback(obj/projectile/proj)
SIGNAL_HANDLER
- if(!P.firer)
+ if(!proj.firer)
return
- var/knockback_force = Get_Knockback_Force(clamp(CEILING((P.damage / 10), 1), 1, 5))
+ var/knockback_force = Get_Knockback_Force(clamp(CEILING((proj.damage / 10), 1), 1, 5))
var/knockback_speed = Get_Knockback_Speed(clamp(knockback_force, 1, 5))
- var/atom/movable/knockback_target = P.firer
- var/move_target = get_edge_target_turf(knockback_target, angle2dir(P.original_angle+180))
+ var/atom/movable/knockback_target = proj.firer
+ var/move_target = get_edge_target_turf(knockback_target, angle2dir(proj.original_angle+180))
knockback_target.throw_at(move_target, knockback_force, knockback_speed)
diff --git a/code/datums/elements/tenacious.dm b/code/datums/elements/tenacious.dm
index 4d906812c13ab..35dd5774cf4be 100644
--- a/code/datums/elements/tenacious.dm
+++ b/code/datums/elements/tenacious.dm
@@ -18,6 +18,9 @@
/datum/element/tenacious/Detach(datum/target)
UnregisterSignal(target, COMSIG_MOB_STATCHANGE)
REMOVE_TRAIT(target, TRAIT_TENACIOUS, ELEMENT_TRAIT(type))
+ var/mob/living/carbon/human/valid_target = target
+ if(valid_target.remove_movespeed_modifier(/datum/movespeed_modifier/tenacious))
+ valid_target.balloon_alert(valid_target, "your tenacity wears off")
return ..()
///signal called by the stat of the target changing
@@ -27,6 +30,5 @@
if(new_stat == SOFT_CRIT)
target.balloon_alert(target, "your tenacity kicks in")
target.add_movespeed_modifier(/datum/movespeed_modifier/tenacious)
- else
+ else if(target.remove_movespeed_modifier(/datum/movespeed_modifier/tenacious))
target.balloon_alert(target, "your tenacity wears off")
- target.remove_movespeed_modifier(/datum/movespeed_modifier/tenacious)
diff --git a/code/datums/elements/update_icon_updates_onmob.dm b/code/datums/elements/update_icon_updates_onmob.dm
index cfbf16317fa5e..69346949c596e 100644
--- a/code/datums/elements/update_icon_updates_onmob.dm
+++ b/code/datums/elements/update_icon_updates_onmob.dm
@@ -25,5 +25,3 @@
M.update_held_items()
else
M.update_clothing((target.slot_flags|update_flags))
- if(update_body)
- M.update_body()
diff --git a/code/datums/elements/watery_tile.dm b/code/datums/elements/watery_tile.dm
index 36e893fe0fc3c..878253a89692f 100644
--- a/code/datums/elements/watery_tile.dm
+++ b/code/datums/elements/watery_tile.dm
@@ -54,6 +54,6 @@
duration = STATUS_EFFECT_PERMANENT
status_type = STATUS_EFFECT_UNIQUE
-/datum/status_effect/washing_regen/tick(seconds_between_ticks)
+/datum/status_effect/watery_tile_wetness/tick(seconds_between_ticks)
. = ..()
owner.adjust_wet_stacks(1)
diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm
index bdc2a7d2928c5..54ea9f4185756 100644
--- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm
+++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm
@@ -276,11 +276,6 @@
icon_file = 'icons/mob/inhands/clothing/suits_righthand.dmi'
json_config = 'code/datums/greyscale/json_configs/jumpsuit_prison_inhand.json'
-/datum/greyscale_config/jumpsuit/worn_digi
- name = "Jumpsuit Worn (Digitigrate)"
- icon_file = 'icons/mob/clothing/under/digi_template.dmi'
- json_config = 'code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json'
-
/datum/greyscale_config/eth_tunic
name = "Ethereal Tunic"
icon_file = 'icons/obj/clothing/under/ethereal.dmi'
@@ -627,6 +622,14 @@
name = "Waistcoat (Worn)"
icon_file = 'icons/mob/clothing/accessories.dmi'
+// Digi Stuff
+
+/datum/greyscale_config/digitigrade
+ name = "Digitigrade Clothes"
+ icon_file = 'icons/mob/clothing/digi_template.dmi'
+ json_config = 'code/datums/greyscale/json_configs/digitigrade.json'
+
+
//
// SUIT + HEAD
// (Specifically for toggleable suits with hats, i.e. winter coats)
diff --git a/code/datums/greyscale/json_configs/digitigrade.json b/code/datums/greyscale/json_configs/digitigrade.json
new file mode 100644
index 0000000000000..899dff334e423
--- /dev/null
+++ b/code/datums/greyscale/json_configs/digitigrade.json
@@ -0,0 +1,39 @@
+{
+ "jumpsuit_worn": [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ],
+ "oversuit_worn": [
+ {
+ "type": "icon_state",
+ "icon_state": "oversuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ],
+ "sneakers_worn": [
+ {
+ "type": "icon_state",
+ "icon_state": "shoes_colored",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shoes_uncolored",
+ "blend_mode": "overlay"
+ }
+ ],
+ "boots_worn": [
+ {
+ "type": "icon_state",
+ "icon_state": "boots",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+}
diff --git a/code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json b/code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json
deleted file mode 100644
index 9aa201cece3c1..0000000000000
--- a/code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "": [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm
index 84889ad6bd931..ceaa53e045523 100644
--- a/code/datums/holocall.dm
+++ b/code/datums/holocall.dm
@@ -1,15 +1,16 @@
-/mob/eye/ai_eye/remote/holo/setLoc(turf/destination, force_update = FALSE)
+/mob/eye/camera/remote/holo/setLoc(turf/destination, force_update = FALSE)
// If we're moving outside the space of our projector, then just... don't
- var/obj/machinery/holopad/H = origin
- if(!H?.move_hologram(eye_user, destination))
+ var/obj/machinery/holopad/H = origin_ref?.resolve()
+ if(!H?.move_hologram(user_ref?.resolve(), destination))
sprint = initial(sprint) // Reset sprint so it doesn't balloon in our calling proc
return
return ..()
/obj/machinery/holopad/remove_eye_control(mob/living/user)
- if(user.client)
- user.reset_perspective(null)
- user.remote_control = null
+ var/mob/eye/camera/remote/eye = user.remote_control
+ if(!istype(eye))
+ CRASH("Attempted to remove eye control from non-camera eye. Something has gone horribly wrong.")
+ eye.assign_user(null)
//this datum manages its own references
@@ -24,7 +25,7 @@
var/list/dialed_holopads
///user's eye, once connected
- var/mob/eye/ai_eye/remote/holo/eye
+ var/mob/eye/camera/remote/holo/eye
///user's hologram, once connected
var/obj/effect/overlay/holo_pad_hologram/hologram
///hangup action
@@ -155,15 +156,8 @@
hologram = answering_holopad.activate_holo(user)
hologram.HC = src
- //eyeobj code is horrid, this is the best copypasta I could make
- eye = new
- eye.origin = answering_holopad
- eye.eye_initialized = TRUE
- eye.eye_user = user
- eye.name = "Camera Eye ([user.name])"
- user.remote_control = eye
- user.reset_perspective(eye)
- eye.setLoc(answering_holopad.loc)
+ eye = new(get_turf(answering_holopad), answering_holopad)
+ eye.assign_user(user)
hangup = new(eye, src)
hangup.Grant(user)
diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm
index d0ad6544ca6e6..1dc2e69f2ca84 100644
--- a/code/datums/looping_sounds/_looping_sound.dm
+++ b/code/datums/looping_sounds/_looping_sound.dm
@@ -174,7 +174,7 @@
if(!each_once)
. = play_from
while(!isfile(.) && !isnull(.))
- . = pick_weight(.)
+ . = pick_weight_recursive(.)
return .
if(in_order)
@@ -192,7 +192,7 @@
// Tree is a list of lists containign files
// If an entry in the tree goes to 0 length, we cut it from the list
tree += list(.)
- . = pick_weight(.)
+ . = pick_weight_recursive(.)
if(!isfile(.))
return
diff --git a/code/datums/looping_sounds/changeling_absorb.dm b/code/datums/looping_sounds/changeling_absorb.dm
new file mode 100644
index 0000000000000..418c2a8dacf54
--- /dev/null
+++ b/code/datums/looping_sounds/changeling_absorb.dm
@@ -0,0 +1,14 @@
+/datum/looping_sound/changeling_absorb
+ mid_sounds = list(
+ 'sound/effects/changeling_absorb/changeling_absorb1.ogg' = 1,
+ 'sound/effects/changeling_absorb/changeling_absorb2.ogg' = 1,
+ 'sound/effects/changeling_absorb/changeling_absorb3.ogg' = 1,
+ 'sound/effects/changeling_absorb/changeling_absorb4.ogg' = 1,
+ 'sound/effects/changeling_absorb/changeling_absorb5.ogg' = 1,
+ 'sound/effects/changeling_absorb/changeling_absorb6.ogg' = 1,
+ 'sound/effects/changeling_absorb/changeling_absorb7.ogg' = 1,
+ )
+ each_once = TRUE
+ mid_length = 3 SECONDS
+ volume = 80
+ ignore_walls = FALSE
diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm
index c4648a929b300..9e33a124e3b45 100644
--- a/code/datums/looping_sounds/machinery_sounds.dm
+++ b/code/datums/looping_sounds/machinery_sounds.dm
@@ -1,13 +1,17 @@
/datum/looping_sound/showering
start_sound = 'sound/machines/shower/shower_start.ogg'
start_length = 2
- mid_sounds = list('sound/machines/shower/shower_mid1.ogg' = 1, 'sound/machines/shower/shower_mid2.ogg' = 1, 'sound/machines/shower/shower_mid3.ogg' = 1)
+ mid_sounds = list(
+ 'sound/machines/shower/shower_mid1.ogg',
+ 'sound/machines/shower/shower_mid2.ogg',
+ 'sound/machines/shower/shower_mid3.ogg',
+ )
mid_length = 10
end_sound = 'sound/machines/shower/shower_end.ogg'
volume = 20
/datum/looping_sound/supermatter
- mid_sounds = list('sound/machines/sm/loops/calm.ogg' = 1)
+ mid_sounds = list('sound/machines/sm/loops/calm.ogg')
mid_length = 60
volume = 40
extra_range = 25
@@ -16,14 +20,14 @@
vary = TRUE
/datum/looping_sound/destabilized_crystal
- mid_sounds = list('sound/machines/sm/loops/delamming.ogg' = 1)
+ mid_sounds = list('sound/machines/sm/loops/delamming.ogg')
mid_length = 60
volume = 55
extra_range = 15
vary = TRUE
/datum/looping_sound/hypertorus
- mid_sounds = list('sound/machines/hypertorus/loops/hypertorus_nominal.ogg' = 1)
+ mid_sounds = list('sound/machines/hypertorus/loops/hypertorus_nominal.ogg')
mid_length = 60
volume = 55
extra_range = 15
@@ -32,35 +36,41 @@
/datum/looping_sound/generator
start_sound = 'sound/machines/generator/generator_start.ogg'
start_length = 4
- mid_sounds = list('sound/machines/generator/generator_mid1.ogg' = 1, 'sound/machines/generator/generator_mid2.ogg' = 1, 'sound/machines/generator/generator_mid3.ogg' = 1)
+ mid_sounds = list(
+ 'sound/machines/generator/generator_mid1.ogg',
+ 'sound/machines/generator/generator_mid2.ogg',
+ 'sound/machines/generator/generator_mid3.ogg',
+ )
mid_length = 4
end_sound = 'sound/machines/generator/generator_end.ogg'
volume = 40
-
/datum/looping_sound/deep_fryer
start_sound = 'sound/machines/fryer/deep_fryer_immerse.ogg' //my immersions
start_length = 10
- mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1)
+ mid_sounds = list(
+ 'sound/machines/fryer/deep_fryer_1.ogg',
+ 'sound/machines/fryer/deep_fryer_2.ogg',
+ )
mid_length = 2
end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg'
volume = 15
/datum/looping_sound/clock
- mid_sounds = list('sound/ambience/misc/ticking_clock.ogg' = 1)
+ mid_sounds = list('sound/ambience/misc/ticking_clock.ogg')
mid_length = 40
volume = 50
ignore_walls = FALSE
/datum/looping_sound/grill
- mid_sounds = list('sound/machines/grill/grillsizzle.ogg' = 1)
+ mid_sounds = list('sound/machines/grill/grillsizzle.ogg')
mid_length = 18
volume = 50
/datum/looping_sound/oven
start_sound = 'sound/machines/oven/oven_loop_start.ogg' //my immersions
start_length = 12
- mid_sounds = list('sound/machines/oven/oven_loop_mid.ogg' = 1)
+ mid_sounds = list('sound/machines/oven/oven_loop_mid.ogg')
mid_length = 13
end_sound = 'sound/machines/oven/oven_loop_end.ogg'
volume = 100
@@ -68,19 +78,25 @@
/datum/looping_sound/deep_fryer
mid_length = 2
- mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1)
+ mid_sounds = list(
+ 'sound/machines/fryer/deep_fryer_1.ogg',
+ 'sound/machines/fryer/deep_fryer_2.ogg',
+ )
volume = 30
/datum/looping_sound/microwave
start_sound = 'sound/machines/microwave/microwave-start.ogg'
start_length = 10
- mid_sounds = list('sound/machines/microwave/microwave-mid1.ogg' = 10, 'sound/machines/microwave/microwave-mid2.ogg' = 1)
+ mid_sounds = list(
+ 'sound/machines/microwave/microwave-mid1.ogg' = 10,
+ 'sound/machines/microwave/microwave-mid2.ogg' = 1,
+ )
mid_length = 10
end_sound = 'sound/machines/microwave/microwave-end.ogg'
volume = 90
/datum/looping_sound/lathe_print
- mid_sounds = list('sound/machines/lathe/lathe_print.ogg' = 1)
+ mid_sounds = list('sound/machines/lathe/lathe_print.ogg')
mid_length = 20
volume = 50
vary = TRUE
@@ -90,19 +106,19 @@
/datum/looping_sound/jackpot
mid_length = 11
- mid_sounds = list('sound/machines/roulette/roulettejackpot.ogg' = 1)
+ mid_sounds = list('sound/machines/roulette/roulettejackpot.ogg')
volume = 85
vary = TRUE
/datum/looping_sound/server
mid_sounds = list(
- 'sound/machines/tcomms/tcomms_mid1.ogg' = 1,
- 'sound/machines/tcomms/tcomms_mid2.ogg' = 1,
- 'sound/machines/tcomms/tcomms_mid3.ogg' = 1,
- 'sound/machines/tcomms/tcomms_mid4.ogg' = 1,
- 'sound/machines/tcomms/tcomms_mid5.ogg' = 1,
- 'sound/machines/tcomms/tcomms_mid6.ogg' = 1,
- 'sound/machines/tcomms/tcomms_mid7.ogg' = 1,
+ 'sound/machines/tcomms/tcomms_mid1.ogg',
+ 'sound/machines/tcomms/tcomms_mid2.ogg',
+ 'sound/machines/tcomms/tcomms_mid3.ogg',
+ 'sound/machines/tcomms/tcomms_mid4.ogg',
+ 'sound/machines/tcomms/tcomms_mid5.ogg',
+ 'sound/machines/tcomms/tcomms_mid6.ogg',
+ 'sound/machines/tcomms/tcomms_mid7.ogg',
)
mid_length = 1.8 SECONDS
extra_range = -8
@@ -116,7 +132,10 @@
start_sound = 'sound/machines/computer/computer_start.ogg'
start_length = 7.2 SECONDS
start_volume = 10
- mid_sounds = list('sound/machines/computer/computer_mid1.ogg' = 1, 'sound/machines/computer/computer_mid2.ogg' = 1)
+ mid_sounds = list(
+ 'sound/machines/computer/computer_mid1.ogg',
+ 'sound/machines/computer/computer_mid2.ogg',
+ )
mid_length = 1.8 SECONDS
end_sound = 'sound/machines/computer/computer_end.ogg'
end_volume = 10
@@ -141,7 +160,12 @@
falloff_exponent = 20
/datum/looping_sound/firealarm
- mid_sounds = list('sound/machines/fire_alarm/FireAlarm1.ogg' = 1,'sound/machines/fire_alarm/FireAlarm2.ogg' = 1,'sound/machines/fire_alarm/FireAlarm3.ogg' = 1,'sound/machines/fire_alarm/FireAlarm4.ogg' = 1)
+ mid_sounds = list(
+ 'sound/machines/fire_alarm/FireAlarm1.ogg',
+ 'sound/machines/fire_alarm/FireAlarm2.ogg',
+ 'sound/machines/fire_alarm/FireAlarm3.ogg',
+ 'sound/machines/fire_alarm/FireAlarm4.ogg',
+ )
mid_length = 2.4 SECONDS
volume = 30
@@ -151,30 +175,30 @@
falloff_exponent = 5
/datum/looping_sound/boiling
- mid_sounds = list('sound/effects/bubbles/bubbles2.ogg' = 1)
+ mid_sounds = list('sound/effects/bubbles/bubbles2.ogg')
mid_length = 7 SECONDS
volume = 25
/datum/looping_sound/typing
mid_sounds = list(
- 'sound/machines/terminal/terminal_button01.ogg' = 1,
- 'sound/machines/terminal/terminal_button02.ogg' = 1,
- 'sound/machines/terminal/terminal_button03.ogg' = 1,
- 'sound/machines/terminal/terminal_button04.ogg' = 1,
- 'sound/machines/terminal/terminal_button05.ogg' = 1,
- 'sound/machines/terminal/terminal_button06.ogg' = 1,
- 'sound/machines/terminal/terminal_button07.ogg' = 1,
- 'sound/machines/terminal/terminal_button08.ogg' = 1,
+ 'sound/machines/terminal/terminal_button01.ogg',
+ 'sound/machines/terminal/terminal_button02.ogg',
+ 'sound/machines/terminal/terminal_button03.ogg',
+ 'sound/machines/terminal/terminal_button04.ogg',
+ 'sound/machines/terminal/terminal_button05.ogg',
+ 'sound/machines/terminal/terminal_button06.ogg',
+ 'sound/machines/terminal/terminal_button07.ogg',
+ 'sound/machines/terminal/terminal_button08.ogg',
)
mid_length = 0.3 SECONDS
/datum/looping_sound/soup
mid_sounds = list(
- 'sound/effects/soup_boil/soup_boil1.ogg' = 1,
- 'sound/effects/soup_boil/soup_boil2.ogg' = 1,
- 'sound/effects/soup_boil/soup_boil3.ogg' = 1,
- 'sound/effects/soup_boil/soup_boil4.ogg' = 1,
- 'sound/effects/soup_boil/soup_boil5.ogg' = 1,
+ 'sound/effects/soup_boil/soup_boil1.ogg',
+ 'sound/effects/soup_boil/soup_boil2.ogg',
+ 'sound/effects/soup_boil/soup_boil3.ogg',
+ 'sound/effects/soup_boil/soup_boil4.ogg',
+ 'sound/effects/soup_boil/soup_boil5.ogg',
)
mid_length = 3 SECONDS
volume = 80
diff --git a/code/datums/looping_sounds/projectiles.dm b/code/datums/looping_sounds/projectiles.dm
index 6bc9a466ea144..ca96df698e921 100644
--- a/code/datums/looping_sounds/projectiles.dm
+++ b/code/datums/looping_sounds/projectiles.dm
@@ -1,4 +1,4 @@
/datum/looping_sound/moon_parade
mid_sounds = list('sound/effects/moon_parade_soundloop.ogg' = 1)
- mid_length = 0
+ mid_length = 2 SECONDS
volume = 20
diff --git a/code/datums/mind/initialization.dm b/code/datums/mind/initialization.dm
index e3b3e8225dc7a..a09cb040dbe84 100644
--- a/code/datums/mind/initialization.dm
+++ b/code/datums/mind/initialization.dm
@@ -11,8 +11,10 @@
mind.set_current(src)
// There's nowhere else to set this up, mind code makes me depressed
mind.antag_hud = add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/antagonist_hud, "combo_hud", mind)
+ RegisterSignal(src, COMSIG_ADMIN_DELETING, PROC_REF(ghost_before_admin_delete), override = TRUE)
SEND_SIGNAL(src, COMSIG_MOB_MIND_INITIALIZED, mind)
+
/mob/living/carbon/mind_initialize()
..()
last_mind = mind
@@ -35,3 +37,8 @@
. = ..()
mind.set_assigned_role(SSjob.get_job_type(/datum/job/personal_ai))
mind.special_role = ""
+
+/// Signal proc for [COMSIG_ADMIN_DELETING], to ghostize a mob beforehand if an admin is manually deleting it.
+/mob/proc/ghost_before_admin_delete(datum/source)
+ SIGNAL_HANDLER
+ ghostize(can_reenter_corpse = FALSE)
diff --git a/code/datums/mood.dm b/code/datums/mood.dm
index fe91e1db2c66c..d3f2ac70861e0 100644
--- a/code/datums/mood.dm
+++ b/code/datums/mood.dm
@@ -124,6 +124,10 @@
clear_mood_event(MOOD_CATEGORY_NUTRITION)
return FALSE
+ if(HAS_TRAIT(mob_parent, TRAIT_GLUTTON))
+ add_mood_event(MOOD_CATEGORY_NUTRITION, /datum/mood_event/hungry) //you'll never get enough
+ return TRUE
+
if(HAS_TRAIT(mob_parent, TRAIT_FAT) && !HAS_TRAIT(mob_parent, TRAIT_VORACIOUS))
add_mood_event(MOOD_CATEGORY_NUTRITION, /datum/mood_event/fat)
return TRUE
diff --git a/code/datums/mood_events/_mood_event.dm b/code/datums/mood_events/_mood_event.dm
index a07dbe0d48e7b..8f31953380071 100644
--- a/code/datums/mood_events/_mood_event.dm
+++ b/code/datums/mood_events/_mood_event.dm
@@ -18,14 +18,14 @@
/// if false, it will be an overlay instead
var/special_screen_replace = TRUE
/// Owner of this mood event
- var/mob/owner
+ var/mob/living/owner
/// List of required jobs for this mood event
var/list/required_job = list()
-/datum/mood_event/New(mob/M, ...)
- owner = M
+/datum/mood_event/New(mob/living/emotional_mob, ...)
+ owner = emotional_mob
var/list/params = args.Copy(2)
- if ((length(required_job) > 0) && M.mind && !(M.mind.assigned_role.type in required_job))
+ if ((length(required_job) > 0) && owner.mind && !(owner.mind.assigned_role.type in required_job))
qdel(src)
return
add_effects(arglist(params))
diff --git a/code/datums/mood_events/needs_events.dm b/code/datums/mood_events/needs_events.dm
index 434110ff27cc0..66f930fa7840e 100644
--- a/code/datums/mood_events/needs_events.dm
+++ b/code/datums/mood_events/needs_events.dm
@@ -71,15 +71,31 @@
timeout = 4 MINUTES
//Generic needs events
-/datum/mood_event/nice_shower
+/datum/mood_event/shower
description = "I have recently had a nice shower."
mood_change = 4
timeout = 5 MINUTES
-/datum/mood_event/shower_hater
- description = "I hate being wet!"
- mood_change = -2
- timeout = 3 MINUTES
+/datum/mood_event/shower/add_effects(shower_reagent)
+ if(istype(shower_reagent, /datum/reagent/blood))
+ if(HAS_TRAIT(owner, TRAIT_MORBID) || HAS_TRAIT(owner, TRAIT_EVIL) || (owner.mob_biotypes & MOB_UNDEAD))
+ description = "The sensation of a lovely blood shower felt good."
+ mood_change = 6 // you sicko
+ else
+ description = "I have recently had a horrible shower raining blood!"
+ mood_change = -4
+ timeout = 3 MINUTES
+ else if(istype(shower_reagent, /datum/reagent/water))
+ if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION))
+ description = "I hate being wet!"
+ mood_change = -2
+ timeout = 3 MINUTES
+ else
+ return // just normal clean shower
+ else // it's dirty ass water
+ description = "I have recently had a dirty shower!"
+ mood_change = -3
+ timeout = 3 MINUTES
/datum/mood_event/hot_spring
description = "It's so relaxing to bathe in steamy water..."
diff --git a/code/datums/mutations/_combined.dm b/code/datums/mutations/_combined.dm
index 0a71b4bd4ca57..58970faba5151 100644
--- a/code/datums/mutations/_combined.dm
+++ b/code/datums/mutations/_combined.dm
@@ -31,12 +31,12 @@
/datum/generecipe/cindikinesis
input_one = /datum/mutation/human/geladikinesis
- input_two = /datum/mutation/human/firebreath
+ input_two = /datum/mutation/human/fire // fiery sweat NOT fiery breath
result = /datum/mutation/human/cindikinesis
/datum/generecipe/pyrokinesis
input_one = /datum/mutation/human/cryokinesis
- input_two = /datum/mutation/human/firebreath
+ input_two = /datum/mutation/human/fire // fiery sweat NOT fiery breath
result = /datum/mutation/human/pyrokinesis
/datum/generecipe/thermal_adaptation
diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm
index d3627167cb507..d32c35a6239c5 100644
--- a/code/datums/mutations/sight.dm
+++ b/code/datums/mutations/sight.dm
@@ -171,7 +171,7 @@
var/obj/projectile/beam/laser/laser_eyes/LE = new(source.loc)
LE.firer = source
LE.def_zone = ran_zone(source.zone_selected)
- LE.preparePixelProjectile(target, source, modifiers)
+ LE.aim_projectile(target, source, modifiers)
INVOKE_ASYNC(LE, TYPE_PROC_REF(/obj/projectile, fire))
playsound(source, 'sound/items/weapons/taser2.ogg', 75, TRUE)
diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm
index 5197939d709f4..a154a4f30e659 100644
--- a/code/datums/outfit.dm
+++ b/code/datums/outfit.dm
@@ -98,7 +98,7 @@
/**
* extra types for chameleon outfit changes, mostly guns
*
- * Format of this list is (typepath, typepath, typepath)
+ * Valid values are a single typepath or list of typepaths
*
* These are all added and returns in the list for get_chamelon_diguise_info proc
*/
diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm
index b8b697c053bca..02281e2437a08 100644
--- a/code/datums/position_point_vector.dm
+++ b/code/datums/position_point_vector.dm
@@ -1,15 +1,11 @@
/proc/point_midpoint_points(datum/point/a, datum/point/b) //Obviously will not support multiZ calculations! Same for the two below.
- var/datum/point/P = new
- P.x = a.x + (b.x - a.x) * 0.5
- P.y = a.y + (b.y - a.y) * 0.5
- P.z = a.z
- return P
+ return new /datum/point(_z = a.z, _pixel_x = (a.return_px() + b.return_px()) * 0.5, _pixel_y = (a.return_py() + b.return_py()) * 0.5)
/proc/pixel_length_between_points(datum/point/a, datum/point/b)
- return sqrt(((b.x - a.x) ** 2) + ((b.y - a.y) ** 2))
+ return sqrt(((b.return_px() - a.return_px()) ** 2) + ((b.return_py() - a.return_py()) ** 2))
/proc/angle_between_points(datum/point/a, datum/point/b)
- return ATAN2((b.y - a.y), (b.x - a.x))
+ return ATAN2(b.return_py() - a.return_py(), b.return_px() - a.return_px())
/// For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess.
/datum/position
@@ -29,8 +25,8 @@
_x = T.x
_y = T.y
_z = T.z
- _pixel_x = P.return_px()
- _pixel_y = P.return_py()
+ _pixel_x = P.pixel_x
+ _pixel_y = P.pixel_y
else if(isatom(_x))
var/atom/A = _x
_x = A.x
@@ -61,6 +57,8 @@
var/x = 0
var/y = 0
var/z = 0
+ var/pixel_x = 0
+ var/pixel_y = 0
/datum/point/proc/valid()
return x && y && z
@@ -89,143 +87,88 @@
_pixel_y = A.pixel_y
initialize_location(_x, _y, _z, _pixel_x, _pixel_y)
-/datum/point/proc/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0)
+/datum/point/proc/initialize_location(tile_x, tile_y, tile_z, p_x, p_y)
if(!isnull(tile_x))
- x = ((tile_x - 1) * ICON_SIZE_X) + ICON_SIZE_X * 0.5 + p_x + 1
+ x = tile_x
if(!isnull(tile_y))
- y = ((tile_y - 1) * ICON_SIZE_Y) + ICON_SIZE_Y * 0.5 + p_y + 1
+ y = tile_y
if(!isnull(tile_z))
z = tile_z
+ if(!isnull(p_x))
+ var/x_offset = SIGNED_FLOOR_DIVISION(p_x, ICON_SIZE_X)
+ x += x_offset
+ pixel_x = p_x - x_offset * ICON_SIZE_X
+ if(!isnull(p_y))
+ var/y_offset = SIGNED_FLOOR_DIVISION(p_y, ICON_SIZE_Y)
+ y += y_offset
+ pixel_y = p_y - y_offset * ICON_SIZE_Y
+
+/datum/point/proc/increment(p_x, p_y)
+ var/x_offset = SIGNED_FLOOR_DIVISION(p_x, ICON_SIZE_X)
+ x += x_offset
+ pixel_x += p_x - x_offset * ICON_SIZE_X
+ var/y_offset = SIGNED_FLOOR_DIVISION(p_y, ICON_SIZE_Y)
+ y += y_offset
+ pixel_y += p_y - y_offset * ICON_SIZE_Y
/datum/point/proc/debug_out()
var/turf/T = return_turf()
- return "[text_ref(src)] aX [x] aY [y] aZ [z] pX [return_px()] pY [return_py()] mX [T.x] mY [T.y] mZ [T.z]"
+ return "[text_ref(src)] aX [x] aY [y] aZ [z] pX [pixel_x] pY [pixel_y] mX [T.x] mY [T.y] mZ [T.z]"
/datum/point/proc/move_atom_to_src(atom/movable/AM)
AM.forceMove(return_turf())
- AM.pixel_x = return_px()
- AM.pixel_y = return_py()
+ AM.pixel_x = pixel_x
+ AM.pixel_y = pixel_y
/datum/point/proc/return_turf()
- return locate(CEILING(x / ICON_SIZE_X, 1), CEILING(y / ICON_SIZE_Y, 1), z)
+ return locate(x + SIGNED_FLOOR_DIVISION(pixel_x, ICON_SIZE_X), y + SIGNED_FLOOR_DIVISION(pixel_y, ICON_SIZE_Y), z)
/datum/point/proc/return_coordinates() //[turf_x, turf_y, z]
- return list(CEILING(x / ICON_SIZE_X, 1), CEILING(y / ICON_SIZE_Y, 1), z)
+ return list(x + SIGNED_FLOOR_DIVISION(pixel_x, ICON_SIZE_X), y + SIGNED_FLOOR_DIVISION(pixel_y, ICON_SIZE_Y), z)
/datum/point/proc/return_position()
return new /datum/position(src)
/datum/point/proc/return_px()
- return MODULUS(x, ICON_SIZE_X) - (ICON_SIZE_X/2) - 1
+ return x * ICON_SIZE_X + pixel_x
/datum/point/proc/return_py()
- return MODULUS(y, ICON_SIZE_Y) - (ICON_SIZE_Y/2) - 1
+ return y * ICON_SIZE_Y + pixel_y
-/datum/point/vector
- /// Pixels per iteration
- var/speed = ICON_SIZE_ALL
- var/iteration = 0
+/datum/vector
+ var/magnitude = 1
var/angle = 0
- /// Calculated x movement amounts to prevent having to do trig every step.
- var/mpx = 0
- /// Calculated y movement amounts to prevent having to do trig every step.
- var/mpy = 0
- var/starting_x = 0 //just like before, pixels from EDGE of map! This is set in initialize_location().
- var/starting_y = 0
- var/starting_z = 0
-
-/datum/point/vector/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0, _angle, _speed, initial_increment = 0)
- ..()
- initialize_trajectory(_speed, _angle)
- if(initial_increment)
- increment(initial_increment)
-
-/datum/point/vector/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0)
- . = ..()
- starting_x = x
- starting_y = y
- starting_z = z
+ // Calculated coordinate amounts to prevent having to do trig every step.
+ var/pixel_x = 0
+ var/pixel_y = 0
+ var/total_x = 0
+ var/total_y = 0
-/// Same effect as initiliaze_location, but without setting the starting_x/y/z
-/datum/point/vector/proc/set_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0)
- if(!isnull(tile_x))
- x = ((tile_x - 1) * ICON_SIZE_X) + ICON_SIZE_X * 0.5 + p_x + 1
- if(!isnull(tile_y))
- y = ((tile_y - 1) * ICON_SIZE_Y) + ICON_SIZE_Y * 0.5 + p_y + 1
- if(!isnull(tile_z))
- z = tile_z
+/datum/vector/New(new_magnitude, new_angle)
+ . = ..()
+ initialize_trajectory(new_magnitude, new_angle)
-/datum/point/vector/copy_to(datum/point/vector/v = new)
- ..(v)
- v.speed = speed
- v.iteration = iteration
- v.angle = angle
- v.mpx = mpx
- v.mpy = mpy
- v.starting_x = starting_x
- v.starting_y = starting_y
- v.starting_z = starting_z
- return v
-
-/datum/point/vector/proc/initialize_trajectory(pixel_speed, new_angle)
- if(!isnull(pixel_speed))
- speed = pixel_speed
+/datum/vector/proc/initialize_trajectory(new_magnitude, new_angle)
+ if(!isnull(new_magnitude))
+ magnitude = new_magnitude
set_angle(new_angle)
/// Calculations use "byond angle" where north is 0 instead of 90, and south is 180 instead of 270.
-/datum/point/vector/proc/set_angle(new_angle)
+/datum/vector/proc/set_angle(new_angle)
if(isnull(angle))
return
angle = new_angle
update_offsets()
-/datum/point/vector/proc/update_offsets()
- mpx = sin(angle) * speed
- mpy = cos(angle) * speed
-
-/datum/point/vector/proc/set_speed(new_speed)
- if(isnull(new_speed) || speed == new_speed)
- return
- speed = new_speed
- update_offsets()
+/datum/vector/proc/update_offsets()
+ pixel_x = sin(angle)
+ pixel_y = cos(angle)
+ total_x = pixel_x * magnitude
+ total_y = pixel_y * magnitude
-/datum/point/vector/proc/increment(multiplier = 1)
- iteration++
- x += mpx * (multiplier)
- y += mpy * (multiplier)
-
-/datum/point/vector/proc/return_vector_after_increments(amount = 7, multiplier = 1, force_simulate = FALSE)
- var/datum/point/vector/v = copy_to()
- if(force_simulate)
- for(var/i in 1 to amount)
- v.increment(multiplier)
- else
- v.increment(multiplier * amount)
- return v
-
-/datum/point/vector/proc/on_z_change()
- return
-
-/datum/point/vector/processed //pixel_speed is per decisecond.
- var/last_process = 0
- var/last_move = 0
- var/paused = FALSE
-
-/datum/point/vector/processed/Destroy()
- STOP_PROCESSING(SSprojectiles, src)
- return ..()
-
-/datum/point/vector/processed/proc/start()
- last_process = world.time
- last_move = world.time
- START_PROCESSING(SSprojectiles, src)
-
-/datum/point/vector/processed/process()
- if(paused)
- last_move += world.time - last_process
- last_process = world.time
+/datum/vector/proc/set_speed(new_magnitude)
+ if(isnull(new_magnitude) || magnitude == new_magnitude)
return
- var/needed_time = world.time - last_move
- last_process = world.time
- last_move = world.time
- increment(needed_time / SSprojectiles.wait)
+ magnitude = new_magnitude
+ total_x = pixel_x * magnitude
+ total_y = pixel_y * magnitude
diff --git a/code/datums/proximity_monitor/fields/gravity.dm b/code/datums/proximity_monitor/fields/gravity.dm
index 745072d69e10a..51a73978886e7 100644
--- a/code/datums/proximity_monitor/fields/gravity.dm
+++ b/code/datums/proximity_monitor/fields/gravity.dm
@@ -80,6 +80,7 @@
alpha = 200
/// our emissive appearance
var/mutable_appearance/emissive
+ var/particles/particle_type
/obj/gravity_fluff_field/Initialize(mapload, strength)
. = ..()
@@ -89,20 +90,22 @@
QUEUE_SMOOTH_NEIGHBORS(src)
switch(strength)
if(2 to INFINITY)
- particles = new /particles/grav_field_down/strong()
+ particle_type = /particles/grav_field_down/strong
if(1 to 2)
- particles = new /particles/grav_field_down()
+ particle_type = /particles/grav_field_down
if(0 to 1)
- particles = new /particles/grav_field_float()
+ particle_type = /particles/grav_field_float
if(-INFINITY to -1)
- particles = new /particles/grav_field_up()
- color = particles.color
+ particle_type = /particles/grav_field_up
+ if (particle_type)
+ add_shared_particles(/particles/grav_field_down/strong)
+ color = particle_type::color
RegisterSignal(src, COMSIG_ATOM_SMOOTHED_ICON, PROC_REF(smoothed))
/obj/gravity_fluff_field/Destroy(force)
- . = ..()
- QDEL_NULL(particles)
+ remove_shared_particles(particle_type)
emissive = null
+ return ..()
/obj/gravity_fluff_field/proc/smoothed(datum/source)
SIGNAL_HANDLER
diff --git a/code/datums/proximity_monitor/fields/projectile_dampener.dm b/code/datums/proximity_monitor/fields/projectile_dampener.dm
deleted file mode 100644
index fe23fe0be33e5..0000000000000
--- a/code/datums/proximity_monitor/fields/projectile_dampener.dm
+++ /dev/null
@@ -1,117 +0,0 @@
-
-//Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second.
-//Only use square radius for this!
-/datum/proximity_monitor/advanced/projectile_dampener
- var/static/image/edgeturf_south = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south")
- var/static/image/edgeturf_north = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north")
- var/static/image/edgeturf_west = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west")
- var/static/image/edgeturf_east = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_east")
- var/static/image/northwest_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northwest")
- var/static/image/southwest_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southwest")
- var/static/image/northeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast")
- var/static/image/southeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast")
- var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic")
- var/list/obj/projectile/tracked = list()
- var/list/obj/projectile/staging = list()
- // lazylist that keeps track of the overlays added to the edge of the field
- var/list/edgeturf_effects
-
-/datum/proximity_monitor/advanced/projectile_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector)
- ..()
- RegisterSignal(projector, COMSIG_QDELETING, PROC_REF(on_projector_del))
- recalculate_field(full_recalc = TRUE)
- START_PROCESSING(SSfastprocess, src)
-
-/datum/proximity_monitor/advanced/projectile_dampener/Destroy()
- STOP_PROCESSING(SSfastprocess, src)
- for(var/obj/projectile/projectile in tracked)
- release_projectile(projectile)
- return ..()
-
-/datum/proximity_monitor/advanced/projectile_dampener/recalculate_field(full_recalc)
- full_recalc = TRUE // We always perform a full recalc because we need to update ALL the sprites
- return ..()
-
-/datum/proximity_monitor/advanced/projectile_dampener/process()
- var/list/ranged = list()
- for(var/obj/projectile/projectile in range(current_range, get_turf(host)))
- ranged += projectile
- for(var/obj/projectile/projectile in tracked)
- if(!(projectile in ranged) || !projectile.loc)
- release_projectile(projectile)
-
-/datum/proximity_monitor/advanced/projectile_dampener/setup_edge_turf(turf/target)
- . = ..()
- var/image/overlay = get_edgeturf_overlay(get_edgeturf_direction(target))
- var/obj/effect/abstract/effect = new(target) // Makes the field visible to players.
- effect.icon = overlay.icon
- effect.icon_state = overlay.icon_state
- effect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- effect.layer = ABOVE_ALL_MOB_LAYER
- SET_PLANE(effect, ABOVE_GAME_PLANE, target)
- LAZYSET(edgeturf_effects, target, effect)
-
-/datum/proximity_monitor/advanced/projectile_dampener/on_z_change(datum/source)
- recalculate_field(full_recalc = TRUE)
-
-/datum/proximity_monitor/advanced/projectile_dampener/cleanup_edge_turf(turf/target)
- . = ..()
- var/obj/effect/abstract/effect = LAZYACCESS(edgeturf_effects, target)
- LAZYREMOVE(edgeturf_effects, target)
- if(effect)
- qdel(effect)
-
-/datum/proximity_monitor/advanced/projectile_dampener/proc/get_edgeturf_overlay(direction)
- switch(direction)
- if(NORTH)
- return edgeturf_north
- if(SOUTH)
- return edgeturf_south
- if(EAST)
- return edgeturf_east
- if(WEST)
- return edgeturf_west
- if(NORTHEAST)
- return northeast_corner
- if(NORTHWEST)
- return northwest_corner
- if(SOUTHEAST)
- return southeast_corner
- if(SOUTHWEST)
- return southwest_corner
- else
- return generic_edge
-
-/datum/proximity_monitor/advanced/projectile_dampener/proc/capture_projectile(obj/projectile/projectile)
- if(projectile in tracked)
- return
- SEND_SIGNAL(src, COMSIG_DAMPENER_CAPTURE, projectile)
- tracked += projectile
-
-/datum/proximity_monitor/advanced/projectile_dampener/proc/release_projectile(obj/projectile/projectile)
- SEND_SIGNAL(src, COMSIG_DAMPENER_RELEASE, projectile)
- tracked -= projectile
-
-/datum/proximity_monitor/advanced/projectile_dampener/proc/on_projector_del(datum/source)
- SIGNAL_HANDLER
- qdel(src)
-
-/datum/proximity_monitor/advanced/projectile_dampener/field_edge_uncrossed(atom/movable/movable, turf/old_location, turf/new_location)
- if(isprojectile(movable) && get_dist(movable, host) > current_range)
- if(movable in tracked)
- release_projectile(movable)
-
-/datum/proximity_monitor/advanced/projectile_dampener/field_edge_crossed(atom/movable/movable, turf/location, turf/old_location)
- if(isprojectile(movable))
- capture_projectile(movable)
-
-/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/process(seconds_per_tick)
- for(var/mob/living/silicon/robot/borg in range(current_range, get_turf(host)))
- if(!borg.has_buckled_mobs())
- continue
- for(var/mob/living/buckled_mob in borg.buckled_mobs)
- buckled_mob.visible_message(span_warning("[buckled_mob] is knocked off of [borg] by the charge in [borg]'s chassis induced by the hyperkinetic dampener field!")) //I know it's bad.
- buckled_mob.Paralyze(1 SECONDS)
- borg.unbuckle_mob(buckled_mob)
- do_sparks(5, 0, buckled_mob)
- ..()
diff --git a/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm
new file mode 100644
index 0000000000000..3185872efad4a
--- /dev/null
+++ b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm
@@ -0,0 +1,238 @@
+#define CHANGING_OFFSET "changing_offset"
+#define OVERLAY_DATA "overlay_data"
+#define STARTING_POSITION "starting_position"
+#define ANIMATE_DAMPENER_TIME 1.5 SECONDS
+
+//Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second.
+//Only use square radius for this!
+/datum/proximity_monitor/advanced/projectile_dampener
+ edge_is_a_field = TRUE
+ var/static/list/effect_direction_images = list(
+ "[SOUTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south"),
+ "[NORTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north"),
+ "[WEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west"),
+ "[EAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_east"),
+ "[NORTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northwest"),
+ "[SOUTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southwest"),
+ "[NORTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast"),
+ "[SOUTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast"),
+ )
+ var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic")
+ ///overlay we apply to caught bullets
+ var/static/image/new_bullet_overlay= image('icons/effects/fields.dmi', "projectile_dampen_effect")
+ ///list of all the visual effects we keep track of
+ var/list/edgeturf_effects = list()
+ ///atom that contains all the fields in its vis_contents
+ var/atom/movable/field_effect_holder/my_movable
+ /// datum that holds the effects we apply on caught bullets
+ var/datum/dampener_projectile_effects/bullet_effects
+
+/datum/proximity_monitor/advanced/projectile_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector, datum/dampener_projectile_effects/effects_typepath)
+ ..()
+ RegisterSignal(projector, COMSIG_QDELETING, PROC_REF(on_projector_del))
+ var/atom/movable/movable_host = _host
+ my_movable = new(get_turf(_host))
+ my_movable.transform = my_movable.transform.Scale(current_range, current_range)
+ my_movable.set_glide_size(movable_host.glide_size)
+ bullet_effects = effects_typepath ? new effects_typepath() : new
+ draw_effect()
+
+/datum/proximity_monitor/advanced/projectile_dampener/on_moved(atom/movable/source, atom/old_loc)
+ . = ..()
+ my_movable.Move(source.loc, get_dir(my_movable.loc, source.loc), source.glide_size)
+
+/datum/proximity_monitor/advanced/projectile_dampener/on_z_change(datum/source)
+ recalculate_field(full_recalc = TRUE)
+
+/datum/proximity_monitor/advanced/projectile_dampener/field_edge_crossed(atom/movable/movable, turf/location, turf/old_location)
+ . = ..()
+ if(!isprojectile(movable))
+ return
+ determine_wobble(location)
+
+/datum/proximity_monitor/advanced/projectile_dampener/field_edge_uncrossed(atom/movable/movable, turf/old_location, turf/new_location)
+ . = ..()
+ if(!isprojectile(movable))
+ return
+ determine_wobble(old_location)
+
+/datum/proximity_monitor/advanced/projectile_dampener/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location)
+ if(!isprojectile(movable) || HAS_TRAIT_FROM(movable, TRAIT_GOT_DAMPENED, REF(src)))
+ return
+ catch_bullet_effect(movable)
+
+/datum/proximity_monitor/advanced/projectile_dampener/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location)
+ if(!isprojectile(movable) || get_dist(new_location, host) <= current_range)
+ return
+ release_bullet_effect(movable)
+
+/datum/proximity_monitor/advanced/projectile_dampener/setup_field_turf(turf/target)
+ for(var/atom/possible_projectile in target)
+ if(isprojectile(possible_projectile))
+ catch_bullet_effect(possible_projectile)
+
+/datum/proximity_monitor/advanced/projectile_dampener/cleanup_field_turf(turf/target)
+ for(var/atom/possible_projectile in target)
+ if(isprojectile(possible_projectile) && HAS_TRAIT_FROM(possible_projectile, TRAIT_GOT_DAMPENED, REF(src)))
+ release_bullet_effect(possible_projectile)
+
+///proc that applies the wobbly effect on point of bullet entry
+/datum/proximity_monitor/advanced/projectile_dampener/proc/determine_wobble(turf/location)
+ var/coord_x = location.x - host.x
+ var/coord_y = location.y - host.y
+ var/obj/effect/overlay/vis/field/my_field = edgeturf_effects["[coord_x],[coord_y]"]
+ my_field?.set_wobbly(0.15 SECONDS)
+
+/datum/proximity_monitor/advanced/projectile_dampener/proc/projectile_overlay_updated(atom/source, list/overlays)
+ SIGNAL_HANDLER
+
+ if(!isnull(new_bullet_overlay) && HAS_TRAIT_FROM(source, TRAIT_GOT_DAMPENED, REF(src)))
+ overlays += new_bullet_overlay
+
+///a bullet has entered our field, apply the dampening effects to it
+/datum/proximity_monitor/advanced/projectile_dampener/proc/catch_bullet_effect(obj/projectile/bullet)
+ ADD_TRAIT(bullet,TRAIT_GOT_DAMPENED, REF(src))
+ RegisterSignal(bullet, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(projectile_overlay_updated))
+ SEND_SIGNAL(src, COMSIG_DAMPENER_CAPTURE, bullet)
+ bullet_effects.apply_effects(bullet)
+ bullet.update_appearance()
+
+///removing the effects after it has exited our field
+/datum/proximity_monitor/advanced/projectile_dampener/proc/release_bullet_effect(obj/projectile/bullet)
+ REMOVE_TRAIT(bullet, TRAIT_GOT_DAMPENED, REF(src))
+ SEND_SIGNAL(src, COMSIG_DAMPENER_RELEASE, bullet)
+ bullet_effects.remove_effects(bullet)
+ bullet.update_appearance()
+ UnregisterSignal(bullet, COMSIG_ATOM_UPDATE_OVERLAYS)
+
+///rendering all the field visuals. first we render the corners, then we connect them
+/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_effect()
+ var/max_pixel_offset = current_range * ICON_SIZE_ALL
+ var/top_right_corner = list(effect_direction_images["[NORTHEAST]"], max_pixel_offset, max_pixel_offset)
+ var/top_left_corner = list(effect_direction_images["[NORTHWEST]"], -max_pixel_offset, max_pixel_offset)
+ var/bottom_left_corner = list(effect_direction_images["[SOUTHWEST]"], -max_pixel_offset, -max_pixel_offset)
+ var/bottom_right_corner = list(effect_direction_images["[SOUTHEAST]"], max_pixel_offset, -max_pixel_offset)
+
+ var/list/corners = list(top_right_corner, top_left_corner, bottom_left_corner, bottom_right_corner)
+ for(var/corner in corners)
+ draw_corner(corner)
+
+ var/list/corners_to_connect = list(
+ list(OVERLAY_DATA = effect_direction_images["[NORTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = max_pixel_offset),
+ list(OVERLAY_DATA = effect_direction_images["[SOUTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = -max_pixel_offset),
+ list(OVERLAY_DATA = effect_direction_images["[WEST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = -max_pixel_offset),
+ list(OVERLAY_DATA = effect_direction_images["[EAST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = max_pixel_offset),
+ )
+ for(var/direction in corners_to_connect)
+ draw_edge(direction, max_pixel_offset)
+
+///rendering the corners
+/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_corner(list/corner_data)
+ var/obj/effect/overlay/vis/field/corner_effect = new()
+ var/image/image_overlay = corner_data[1]
+ corner_effect.icon = image_overlay.icon
+ corner_effect.icon_state = image_overlay.icon_state
+ corner_effect.alpha = 0
+ corner_effect.pixel_x = corner_data[2]
+ corner_effect.pixel_y = corner_data[3]
+ add_effect_to_host(corner_effect)
+
+///connecting the corners to one another
+/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_edge(list/edge_data, target_offset)
+ var/starting_offset = edge_data[STARTING_POSITION]
+ var/current_offset = (-1 * target_offset) + ICON_SIZE_ALL
+ var/image/overlay = edge_data[OVERLAY_DATA]
+ while(current_offset != target_offset)
+ var/obj/effect/overlay/vis/field/edge_effect = new()
+ edge_effect.alpha = 0
+ edge_effect.icon = overlay.icon
+ edge_effect.icon_state = overlay.icon_state
+
+ if(edge_data[CHANGING_OFFSET] == "x_offset")
+ edge_effect.pixel_y = starting_offset
+ edge_effect.pixel_x = current_offset
+ else
+ edge_effect.pixel_x = starting_offset
+ edge_effect.pixel_y = current_offset
+ add_effect_to_host(edge_effect)
+ current_offset += ICON_SIZE_ALL
+
+///handles adding the visual effect's data
+/datum/proximity_monitor/advanced/projectile_dampener/proc/add_effect_to_host(obj/effect/overlay/vis/field/effect_to_add)
+ my_movable.vis_contents += effect_to_add
+ var/coordinate_x = effect_to_add.pixel_x / ICON_SIZE_ALL
+ var/coordinate_y = effect_to_add.pixel_y / ICON_SIZE_ALL
+ effect_to_add.transform = effect_to_add.transform.Scale(1 / current_range, 1 / current_range)
+ edgeturf_effects["[coordinate_x],[coordinate_y]"] = effect_to_add
+ effect_to_add.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME)
+ animate(effect_to_add, alpha = 255, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL)
+
+/datum/proximity_monitor/advanced/projectile_dampener/proc/on_projector_del(datum/source)
+ SIGNAL_HANDLER
+ qdel(src)
+
+/datum/proximity_monitor/advanced/projectile_dampener/Destroy()
+ for(var/coordinates in edgeturf_effects)
+ var/obj/effect/overlay/vis/field/effect_to_remove = edgeturf_effects[coordinates]
+ edgeturf_effects -= coordinates
+ effect_to_remove.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME)
+ animate(effect_to_remove, alpha = 0, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL)
+ QDEL_IN(my_movable, ANIMATE_DAMPENER_TIME)
+ my_movable = null
+ bullet_effects = null
+ return ..()
+
+/datum/proximity_monitor/advanced/projectile_dampener/peaceborg
+
+/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location)
+ . = ..()
+ if(!iscyborg(movable) || !HAS_TRAIT_FROM(movable, TRAIT_GOT_DAMPENED, REF(src)))
+ ADD_TRAIT(movable, TRAIT_GOT_DAMPENED, REF(src))
+
+/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location)
+ if(!iscyborg(movable) || get_dist(new_location, host) <= current_range)
+ return
+ REMOVE_TRAIT(movable, TRAIT_GOT_DAMPENED, REF(src))
+
+/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/setup_field_turf(turf/target)
+ for(var/atom/interesting_atom as anything in target)
+ if(iscyborg(interesting_atom))
+ ADD_TRAIT(interesting_atom, TRAIT_GOT_DAMPENED, REF(src))
+ if(isprojectile(interesting_atom))
+ catch_bullet_effect(interesting_atom)
+
+/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/cleanup_field_turf(turf/target)
+ for(var/atom/interesting_atom as anything in target)
+ if(iscyborg(interesting_atom))
+ REMOVE_TRAIT(interesting_atom, TRAIT_GOT_DAMPENED, REF(src))
+ if(isprojectile(interesting_atom))
+ release_bullet_effect(interesting_atom)
+
+/obj/effect/overlay/vis/field
+ appearance_flags = PIXEL_SCALE|LONG_GLIDE
+ vis_flags = parent_type::vis_flags | VIS_INHERIT_PLANE
+ ///are we currently WOBBLING
+ var/wobbling_effect = FALSE
+
+/obj/effect/overlay/vis/field/proc/set_wobbly(wobble_duration)
+ if(wobbling_effect)
+ return
+ wobbling_effect = TRUE
+ apply_wibbly_filters(src)
+ addtimer(CALLBACK(src, PROC_REF(remove_wobbly)), wobble_duration)
+
+/obj/effect/overlay/vis/field/proc/remove_wobbly()
+ if(QDELETED(src))
+ return
+ remove_wibbly_filters(src, remove_duration = 0.25 SECONDS)
+ addtimer(VARSET_CALLBACK(src, wobbling_effect, FALSE), 0.25 SECONDS)
+
+/atom/movable/field_effect_holder
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ appearance_flags = PIXEL_SCALE|LONG_GLIDE
+ plane = ABOVE_GAME_PLANE
+
+#undef CHANGING_OFFSET
+#undef OVERLAY_DATA
+#undef STARTING_POSITION
+#undef ANIMATE_DAMPENER_TIME
diff --git a/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener_effects.dm b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener_effects.dm
new file mode 100644
index 0000000000000..bd07d7836fc77
--- /dev/null
+++ b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener_effects.dm
@@ -0,0 +1,38 @@
+///datum that holds the effects we have on bullet catching
+/datum/dampener_projectile_effects
+ ///new projectiles speeds
+ var/projectile_speed_multiplier = 0.4
+ /// new projectiles damage
+ var/projectile_damage_multiplier = 0.75
+ /// new projectiles knockdown
+ var/projectile_knockdown_multiplier = 0.66
+ /// new projectiles stun
+ var/projectile_stun_multiplier = 0.66
+ /// new projectiles stamina damage
+ var/projectile_stamina_multiplier = 0.66
+
+/datum/dampener_projectile_effects/proc/apply_effects(obj/projectile/bullet)
+ if(projectile_speed_multiplier)
+ bullet.speed *= projectile_speed_multiplier
+ if(projectile_damage_multiplier)
+ bullet.damage *= projectile_damage_multiplier
+ if(projectile_knockdown_multiplier)
+ bullet.knockdown *= projectile_knockdown_multiplier
+ if(projectile_stamina_multiplier)
+ bullet.stamina *= projectile_stamina_multiplier
+ if(projectile_stun_multiplier)
+ bullet.stun *= projectile_stun_multiplier
+
+/datum/dampener_projectile_effects/proc/remove_effects(obj/projectile/bullet)
+ bullet.speed /= projectile_speed_multiplier
+ bullet.damage /= projectile_damage_multiplier
+ bullet.knockdown /= projectile_knockdown_multiplier
+ bullet.stamina /= projectile_stamina_multiplier
+ bullet.stun /= projectile_stun_multiplier
+
+/datum/dampener_projectile_effects/peacekeeper
+ projectile_speed_multiplier = 0.66
+ projectile_damage_multiplier = 0.5
+ projectile_knockdown_multiplier = 1
+ projectile_stun_multiplier = 1
+ projectile_stamina_multiplier = 1
diff --git a/code/datums/proximity_monitor/fields/timestop.dm b/code/datums/proximity_monitor/fields/timestop.dm
index 3b8001426a03c..8411e2c3bb3f1 100644
--- a/code/datums/proximity_monitor/fields/timestop.dm
+++ b/code/datums/proximity_monitor/fields/timestop.dm
@@ -204,11 +204,11 @@
freeze_atom(i)
freeze_turf(target)
-/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/projectile/P)
- P.paused = TRUE
+/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/projectile/proj)
+ proj.paused = TRUE
-/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/projectile/P)
- P.paused = FALSE
+/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/projectile/proj)
+ proj.paused = FALSE
/datum/proximity_monitor/advanced/timestop/proc/freeze_mob(mob/living/victim)
frozen_mobs += victim
diff --git a/code/datums/quirks/negative_quirks/addict.dm b/code/datums/quirks/negative_quirks/addict.dm
index 62262dc3bf7e4..fd717133f2591 100644
--- a/code/datums/quirks/negative_quirks/addict.dm
+++ b/code/datums/quirks/negative_quirks/addict.dm
@@ -4,6 +4,7 @@
gain_text = span_danger("You suddenly feel the craving for... something? You're not sure what it is.")
medical_record_text = "Patient has a history with SOMETHING but he refuses to tell us what it is."
abstract_parent_type = /datum/quirk/item_quirk/addict
+ quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES
var/datum/reagent/reagent_type //!If this is defined, reagent_id will be unused and the defined reagent type will be instead.
var/datum/reagent/reagent_instance //! actual instanced version of the reagent
var/where_drug //! Where the drug spawned
@@ -86,7 +87,6 @@
gain_text = span_danger("You suddenly feel the craving for drugs.")
medical_record_text = "Patient has a history of hard drugs."
hardcore_value = 4
- quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES
mail_goodies = list(/obj/effect/spawner/random/contraband/narcotics)
drug_flavour_text = "Better hope you don't run out..."
diff --git a/code/datums/quirks/negative_quirks/blood_deficiency.dm b/code/datums/quirks/negative_quirks/blood_deficiency.dm
index 238126f4d79f3..a5ac11714bd5f 100644
--- a/code/datums/quirks/negative_quirks/blood_deficiency.dm
+++ b/code/datums/quirks/negative_quirks/blood_deficiency.dm
@@ -33,7 +33,7 @@
human_holder.blood_volume = max(min_blood, human_holder.blood_volume - human_holder.dna.species.blood_deficiency_drain_rate * seconds_per_tick)
-/datum/quirk/blooddeficiency/proc/update_mail(datum/source, datum/species/new_species, datum/species/old_species)
+/datum/quirk/blooddeficiency/proc/update_mail(datum/source, datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons)
SIGNAL_HANDLER
mail_goodies.Cut()
diff --git a/code/datums/quirks/negative_quirks/chronic_illness.dm b/code/datums/quirks/negative_quirks/chronic_illness.dm
index f0809b55d2b0f..04a676965dbe0 100644
--- a/code/datums/quirks/negative_quirks/chronic_illness.dm
+++ b/code/datums/quirks/negative_quirks/chronic_illness.dm
@@ -1,11 +1,11 @@
/datum/quirk/item_quirk/chronic_illness
- name = "Chronic Illness"
- desc = "You have a chronic illness that requires constant medication to keep under control."
+ name = "Eradicative Chronic Illness"
+ desc = "You have an anomalous chronic illness that requires constant medication to keep under control, or else causes timestream correction."
icon = FA_ICON_DISEASE
value = -12
- gain_text = span_danger("You feel a bit off today.")
- lose_text = span_notice("You feel a bit better today.")
- medical_record_text = "Patient has a chronic illness that requires constant medication to keep under control."
+ gain_text = span_danger("You feel like you are fading away...")
+ lose_text = span_notice("You suddenly feel more substantial.")
+ medical_record_text = "Patient has an anomalous chronic illness that requires constant medication to keep under control."
hardcore_value = 12
mail_goodies = list(/obj/item/storage/pill_bottle/sansufentanyl)
diff --git a/code/datums/quirks/negative_quirks/numb.dm b/code/datums/quirks/negative_quirks/numb.dm
index cd4f28cb30228..cb982cf0641b2 100644
--- a/code/datums/quirks/negative_quirks/numb.dm
+++ b/code/datums/quirks/negative_quirks/numb.dm
@@ -10,6 +10,8 @@
/datum/quirk/numb/add(client/client_source)
quirk_holder.apply_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type)
+ quirk_holder.add_traits(list(TRAIT_ANALGESIA, TRAIT_NO_DAMAGE_OVERLAY), QUIRK_TRAIT)
/datum/quirk/numb/remove(client/client_source)
quirk_holder.remove_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type)
+ quirk_holder.remove_traits(list(TRAIT_ANALGESIA, TRAIT_NO_DAMAGE_OVERLAY), QUIRK_TRAIT)
diff --git a/code/datums/quirks/negative_quirks/prosthetic_limb.dm b/code/datums/quirks/negative_quirks/prosthetic_limb.dm
index f8941975ac15e..a9917ac0a59a8 100644
--- a/code/datums/quirks/negative_quirks/prosthetic_limb.dm
+++ b/code/datums/quirks/negative_quirks/prosthetic_limb.dm
@@ -28,7 +28,7 @@
old_limb = human_holder.return_and_replace_bodypart(surplus, special = TRUE)
/datum/quirk/prosthetic_limb/post_add()
- to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus prosthetic. It has almost no muscle force, and makes you unhealthier by just having it. Additionally, \
+ to_chat(quirk_holder, span_bolddanger("Your [slot_string] has been replaced with a surplus prosthetic. It has almost no muscle force, and makes you unhealthier by just having it. Additionally, \
you need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes."))
/datum/quirk/prosthetic_limb/remove()
diff --git a/code/datums/quirks/negative_quirks/prosthetic_organ.dm b/code/datums/quirks/negative_quirks/prosthetic_organ.dm
index 2b0f20b0d9f84..7877e177b39fa 100644
--- a/code/datums/quirks/negative_quirks/prosthetic_organ.dm
+++ b/code/datums/quirks/negative_quirks/prosthetic_organ.dm
@@ -65,7 +65,7 @@
STOP_PROCESSING(SSobj, old_organ)
/datum/quirk/prosthetic_organ/post_add()
- to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus organ. It is weak and highly unstable. \
+ to_chat(quirk_holder, span_bolddanger("Your [slot_string] has been replaced with a surplus organ. It is weak and highly unstable. \
Additionally, any EMP will make it stop working entirely."))
/datum/quirk/prosthetic_organ/remove()
diff --git a/code/datums/quirks/negative_quirks/quadruple_amputee.dm b/code/datums/quirks/negative_quirks/quadruple_amputee.dm
index 493cdf0b71cda..653cca3dccddc 100644
--- a/code/datums/quirks/negative_quirks/quadruple_amputee.dm
+++ b/code/datums/quirks/negative_quirks/quadruple_amputee.dm
@@ -16,5 +16,5 @@
human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/right/robot/surplus, special = TRUE)
/datum/quirk/quadruple_amputee/post_add()
- to_chat(quirk_holder, span_boldannounce("All your limbs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \
+ to_chat(quirk_holder, span_bolddanger("All your limbs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \
Additionally, you need to use a welding tool and cables to repair them, instead of bruise packs and ointment."))
diff --git a/code/datums/quirks/negative_quirks/tin_man.dm b/code/datums/quirks/negative_quirks/tin_man.dm
index 0afd8874bed49..a75cbbedd766f 100644
--- a/code/datums/quirks/negative_quirks/tin_man.dm
+++ b/code/datums/quirks/negative_quirks/tin_man.dm
@@ -33,5 +33,5 @@
new_organ.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
/datum/quirk/tin_man/post_add()
- to_chat(quirk_holder, span_boldannounce("Most of your internal organs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \
+ to_chat(quirk_holder, span_bolddanger("Most of your internal organs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \
Additionally, any EMP will make them stop working entirely."))
diff --git a/code/datums/quirks/neutral_quirks/evil.dm b/code/datums/quirks/neutral_quirks/evil.dm
index 6753a7d034cfd..99e805ccd7c9b 100644
--- a/code/datums/quirks/neutral_quirks/evil.dm
+++ b/code/datums/quirks/neutral_quirks/evil.dm
@@ -1,3 +1,4 @@
+/* DOPPLER EDIT REMOVAL - Fundamentally Evil replaced with Unholy Aura and Bad Vibes
/datum/quirk/evil
name = "Fundamentally Evil"
desc = "Where you would have a soul is but an ink-black void. While you are committed to maintaining your social standing, \
@@ -10,3 +11,4 @@
lose_text = span_notice("You suddenly care more about others and their needs.")
medical_record_text = "Patient has passed all our social fitness tests with flying colours, but had trouble on the empathy tests."
mail_goodies = list(/obj/item/food/grown/citrus/lemon)
+*/
diff --git a/code/datums/quirks/neutral_quirks/monochromatic.dm b/code/datums/quirks/neutral_quirks/monochromatic.dm
index ef6735df25d93..6c1b8c2ef78bd 100644
--- a/code/datums/quirks/neutral_quirks/monochromatic.dm
+++ b/code/datums/quirks/neutral_quirks/monochromatic.dm
@@ -16,7 +16,7 @@
/datum/quirk/monochromatic/post_add()
if(is_detective_job(quirk_holder.mind.assigned_role))
- to_chat(quirk_holder, span_boldannounce("Mmm. Nothing's ever clear on this station. It's all shades of gray..."))
+ to_chat(quirk_holder, span_bolddanger("Mmm. Nothing's ever clear on this station. It's all shades of gray..."))
quirk_holder.playsound_local(quirk_holder, 'sound/ambience/security/ambidet1.ogg', 50, FALSE)
/datum/quirk/monochromatic/remove()
diff --git a/code/datums/quirks/neutral_quirks/transhumanist.dm b/code/datums/quirks/neutral_quirks/transhumanist.dm
index aa8ae075df395..cbd85150e7673 100644
--- a/code/datums/quirks/neutral_quirks/transhumanist.dm
+++ b/code/datums/quirks/neutral_quirks/transhumanist.dm
@@ -136,11 +136,11 @@
if(!slot_string)
return
if(isbodypart(old_part))
- to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a robotic limb. You need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes."))
+ to_chat(quirk_holder, span_bolddanger("Your [slot_string] has been replaced with a robotic limb. You need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes."))
else if (old_part.name == "eyes")
- to_chat(quirk_holder, span_boldannounce("You replaced your eyes with flashlights, not cameras. You can't see a thing!"))
+ to_chat(quirk_holder, span_bolddanger("You replaced your eyes with flashlights, not cameras. You can't see a thing!"))
else if (isorgan(old_part))
- to_chat(quirk_holder, span_boldannounce("Your [slot_string] brings you one step closer to silicon perfection, but you feel you're not quite there yet."))
+ to_chat(quirk_holder, span_bolddanger("Your [slot_string] brings you one step closer to silicon perfection, but you feel you're not quite there yet."))
/datum/quirk/transhumanist/remove()
if(isnull(old_part))
diff --git a/code/datums/quirks/positive_quirks/chip_connector.dm b/code/datums/quirks/positive_quirks/chip_connector.dm
index 6fcc5bf9d31be..2035c093699d1 100644
--- a/code/datums/quirks/positive_quirks/chip_connector.dm
+++ b/code/datums/quirks/positive_quirks/chip_connector.dm
@@ -22,7 +22,7 @@
connector.Insert(carbon_holder, special = TRUE)
/datum/quirk/chip_connector/post_add()
- to_chat(quirk_holder, span_boldannounce(desc)) // efficiency is clever laziness
+ to_chat(quirk_holder, span_bolddanger(desc)) // efficiency is clever laziness
/datum/quirk/chip_connector/remove()
qdel(connector)
diff --git a/code/datums/quirks/positive_quirks/chipped.dm b/code/datums/quirks/positive_quirks/chipped.dm
index 7f43fc07b5bbc..26b4883f9b339 100644
--- a/code/datums/quirks/positive_quirks/chipped.dm
+++ b/code/datums/quirks/positive_quirks/chipped.dm
@@ -5,7 +5,7 @@
value = 2
gain_text = span_notice("The chip in your head itches a bit.")
lose_text = span_danger("You don't feel so chipped anymore..")
- medical_record_text = "Patient explained how they got caught up in 'the skillchip chase' recently, and now the chip in they head itches every so often. Dumbass."
+ medical_record_text = "Patient explained how they got caught up in 'the skillchip chase' recently, and now the chip in their head itches every so often. Dumbass."
mail_goodies = list(
/obj/item/skillchip/matrix_taunt,
/obj/item/skillchip/big_pointer,
@@ -14,44 +14,71 @@
)
/// Variable that holds the chip, used on removal.
var/obj/item/skillchip/installed_chip
- var/datum/callback/itchy_timer
+ ///itchy status effect we give our owner
+ var/datum/itchy_effect
/datum/quirk_constant_data/chipped
associated_typepath = /datum/quirk/chipped
customization_options = list(/datum/preference/choiced/chipped)
/datum/quirk/chipped/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source)
- var/obj/item/skillchip/chip_pref = GLOB.quirk_chipped_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/chipped)]
+ var/chip_pref = client_source?.prefs?.read_preference(/datum/preference/choiced/chipped)
- if(!chip_pref)
+ if(isnull(chip_pref))
return ..()
-
- gain_text = span_notice("The [chip_pref] in your head itches a bit.")
+ installed_chip = GLOB.quirk_chipped_choice[chip_pref] || GLOB.quirk_chipped_choice[pick(GLOB.quirk_chipped_choice)]
+ gain_text = span_notice("The [installed_chip::name] in your head itches a bit.")
lose_text = span_notice("Your head stops itching so much.")
return ..()
/datum/quirk/chipped/add_unique(client/client_source)
-
- var/preferred_chip = GLOB.quirk_chipped_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/chipped)]
- if(isnull(preferred_chip)) //Client is gone or they chose a random chip
- preferred_chip = GLOB.quirk_chipped_choice[pick(GLOB.quirk_chipped_choice)]
+ if(!iscarbon(quirk_holder))
+ return
var/mob/living/carbon/quirk_holder_carbon = quirk_holder
- if(iscarbon(quirk_holder))
- installed_chip = new preferred_chip()
- quirk_holder_carbon.implant_skillchip(installed_chip, force = TRUE)
+ installed_chip = new installed_chip()
+
+ RegisterSignals(installed_chip, list(COMSIG_QDELETING, COMSIG_SKILLCHIP_REMOVED), PROC_REF(remove_effect))
+ RegisterSignal(installed_chip, COMSIG_SKILLCHIP_IMPLANTED, PROC_REF(apply_effect))
+
+ quirk_holder_carbon.implant_skillchip(installed_chip, force = TRUE)
installed_chip.try_activate_skillchip(silent = FALSE, force = TRUE)
- var/obj/item/organ/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN)
- itchy_timer = addtimer(CALLBACK(src, PROC_REF(cause_itchy), itchy_brain), rand(5 SECONDS, 10 MINUTES)) // they get The Itch from a poor quality install every so often
+/datum/quirk/chipped/proc/apply_effect(datum/source, obj/item/brain_applied)
+ SIGNAL_HANDLER
+ var/mob/living/carbon/quirk_holder_carbon = quirk_holder
+ if(brain_applied == quirk_holder_carbon.get_organ_slot(ORGAN_SLOT_BRAIN))
+ itchy_effect = quirk_holder.apply_status_effect(/datum/status_effect/itchy_skillchip_quirk)
+
+/datum/quirk/chipped/proc/remove_effect(datum/source, obj/item/brain_removed)
+ SIGNAL_HANDLER
+ var/mob/living/carbon/quirk_holder_carbon = quirk_holder
+ if(QDELING(source) || brain_removed == quirk_holder_carbon.get_organ_slot(ORGAN_SLOT_BRAIN))
+ quirk_holder.remove_status_effect(itchy_effect)
+ itchy_effect = null
/datum/quirk/chipped/remove()
- qdel(installed_chip)
- deltimer(itchy_timer)
- . = ..()
+ QDEL_NULL(installed_chip)
+ if(itchy_effect)
+ quirk_holder.remove_status_effect(itchy_effect)
+ itchy_effect = null
+ return ..()
-/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/brain/itchy_brain)
+/datum/status_effect/itchy_skillchip_quirk
+ id = "itchy skillchip"
+ tick_interval_lowerbound = 5 SECONDS
+ tick_interval_upperbound = 10 MINUTES
+ alert_type = null
+ ///lower damage we apply to our itchy owner
+ var/minimum_damage = 1
+ ///upper damage we apply to our itchy owner
+ var/maximum_damage = 5
- itchy_brain.apply_organ_damage(rand(1, 5), maximum = itchy_brain.maxHealth * 0.3)
- to_chat(itchy_brain.owner, span_warning("Your [itchy_brain] itches."))
- itchy_timer = addtimer(CALLBACK(itchy_brain, PROC_REF(cause_itchy)), rand(5 SECONDS, 10 MINUTES)) // it will never end
+/datum/status_effect/itchy_skillchip_quirk/tick(seconds_between_ticks)
+ var/mob/living/carbon/carbon_owner = owner
+ var/obj/item/organ/brain/itchy_brain = carbon_owner.get_organ_slot(ORGAN_SLOT_BRAIN)
+ if(isnull(itchy_brain))
+ return
+ itchy_brain.apply_organ_damage(rand(minimum_damage, maximum_damage), maximum = itchy_brain.maxHealth * 0.3)
+ if(owner.stat == CONSCIOUS && !owner.incapacitated && owner.get_empty_held_indexes())
+ to_chat(owner, span_warning("You scratch the itch in your head."))
diff --git a/code/datums/quirks/positive_quirks/spacer.dm b/code/datums/quirks/positive_quirks/spacer.dm
index 344462703e906..8d1503ccf2f6e 100644
--- a/code/datums/quirks/positive_quirks/spacer.dm
+++ b/code/datums/quirks/positive_quirks/spacer.dm
@@ -9,7 +9,7 @@
gain_text = span_notice("You feel at home in space.")
lose_text = span_danger("You feel homesick.")
icon = FA_ICON_USER_ASTRONAUT
- value = 7
+ value = 5
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE
medical_record_text = "Patient is well-adapted to non-terrestrial environments."
mail_goodies = list(
diff --git a/code/datums/shuttles/arrival.dm b/code/datums/shuttles/arrival.dm
index c609ccc57410d..35e28a10c064b 100644
--- a/code/datums/shuttles/arrival.dm
+++ b/code/datums/shuttles/arrival.dm
@@ -26,10 +26,6 @@
suffix = "pubby"
name = "arrival shuttle (Pubby)"
-/datum/map_template/shuttle/arrival/northstar
- suffix = "northstar"
- name = "arrival shuttle (North Star)"
-
/datum/map_template/shuttle/arrival/nebula
suffix = "nebula"
name = "arrival shuttle (Nebula)"
diff --git a/code/datums/shuttles/cargo.dm b/code/datums/shuttles/cargo.dm
index 209ec59f66f2e..91b9c9bca417b 100644
--- a/code/datums/shuttles/cargo.dm
+++ b/code/datums/shuttles/cargo.dm
@@ -27,10 +27,6 @@
suffix = "delta"
name = "cargo ferry (Delta)"
-/datum/map_template/shuttle/cargo/northstar
- suffix = "northstar"
- name = "cargo ferry (North Star)"
-
/datum/map_template/shuttle/cargo/nebula
suffix = "nebula"
name = "supply shuttle (Nebula)"
diff --git a/code/datums/shuttles/mining.dm b/code/datums/shuttles/mining.dm
index 21747a488e326..4bae7ebd78553 100644
--- a/code/datums/shuttles/mining.dm
+++ b/code/datums/shuttles/mining.dm
@@ -44,10 +44,6 @@
suffix = "large"
name = "mining shuttle (Large)"
-/datum/map_template/shuttle/mining/northstar
- suffix = "northstar"
- name = "mining shuttle (North Star)"
-
/datum/map_template/shuttle/mining/nebula
suffix = "nebula"
name = "mining shuttle (Nebula)"
@@ -64,7 +60,3 @@
/datum/map_template/shuttle/mining_common/kilo
suffix = "kilo"
name = "lavaland shuttle (Kilo)"
-
-/datum/map_template/shuttle/mining_common/northstar
- suffix = "northstar"
- name = "lavaland shuttle (North Star)"
diff --git a/code/datums/sprite_accessories.dm b/code/datums/sprite_accessories.dm
index 6e8fb2da6d683..e5b15e2b016da 100644
--- a/code/datums/sprite_accessories.dm
+++ b/code/datums/sprite_accessories.dm
@@ -2284,6 +2284,10 @@
name = "Lightbearer"
icon_state = "lightbearer"
+/datum/sprite_accessory/moth_wings/dipped
+ name = "Dipped"
+ icon_state = "dipped"
+
/datum/sprite_accessory/moth_antennae //Finally splitting the sprite
icon = 'icons/mob/human/species/moth/moth_antennae.dmi'
color_src = null
@@ -2375,6 +2379,10 @@
name = "Lightbearer"
icon_state = "lightbearer"
+/datum/sprite_accessory/moth_antennae/dipped
+ name = "Dipped"
+ icon_state = "dipped"
+
/datum/sprite_accessory/moth_markings // the markings that moths can have. finally something other than the boring tan
icon = 'icons/mob/human/species/moth/moth_markings.dmi'
color_src = null
@@ -2438,3 +2446,7 @@
/datum/sprite_accessory/moth_markings/lightbearer
name = "Lightbearer"
icon_state = "lightbearer"
+
+/datum/sprite_accessory/moth_markings/dipped
+ name = "Dipped"
+ icon_state = "dipped"
diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm
index eb90a056889b1..f3bb4fb4a9c75 100644
--- a/code/datums/station_traits/neutral_traits.dm
+++ b/code/datums/station_traits/neutral_traits.dm
@@ -291,39 +291,35 @@
greyscale_config = /datum/greyscale_config/festive_hat
greyscale_config_worn = /datum/greyscale_config/festive_hat/worn
-/datum/station_trait/scarves
- name = "Scarves"
+/datum/station_trait/scryers
+ name = "Scryers"
trait_type = STATION_TRAIT_NEUTRAL
- weight = 5
- cost = STATION_TRAIT_COST_MINIMAL
+ weight = 2
+ cost = STATION_TRAIT_COST_LOW
show_in_report = TRUE
- var/list/scarves
+ report_message = "Nanotrasen has chosen your station for an experiment - everyone has free scryers! Use these to talk to other people easily and privately."
-/datum/station_trait/scarves/New()
+/datum/station_trait/scryers/New()
. = ..()
- report_message = pick(
- //"Nanotrasen is experimenting with seeing if neck warmth improves employee morale.", // ORIGINAL
- "The Port Authority is experimenting with seeing if neck warmth improves employee morale.", // DOPPLER EDIT - NT -> PA
- "After Space Fashion Week, scarves are the hot new accessory.",
- "Everyone was simultaneously a little bit cold when they packed to go to the station.",
- "The station is definitely not under attack by neck grappling aliens masquerading as wool. Definitely not.",
- "You all get free scarves. Don't ask why.",
- "A shipment of scarves was delivered to the station.",
- )
- scarves = typesof(/obj/item/clothing/neck/scarf) + list(
- /obj/item/clothing/neck/large_scarf/red,
- /obj/item/clothing/neck/large_scarf/green,
- /obj/item/clothing/neck/large_scarf/blue,
- )
-
RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn))
-
-/datum/station_trait/scarves/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client)
+/datum/station_trait/scryers/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client)
SIGNAL_HANDLER
- var/scarf_type = pick(scarves)
-
- spawned.equip_to_slot_or_del(new scarf_type(spawned), ITEM_SLOT_NECK, initial = FALSE)
+ if(!ishuman(spawned))
+ return
+ var/mob/living/carbon/human/humanspawned = spawned
+ // Put their silly little scarf or necktie somewhere else
+ var/obj/item/silly_little_scarf = humanspawned.wear_neck
+ if(silly_little_scarf)
+ humanspawned.temporarilyRemoveItemFromInventory(silly_little_scarf)
+ silly_little_scarf.forceMove(get_turf(humanspawned))
+ humanspawned.equip_in_one_of_slots(silly_little_scarf, ITEM_SLOT_BACKPACK, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET, qdel_on_fail = FALSE, indirect_action = TRUE)
+
+ var/obj/item/clothing/neck/link_scryer/loaded/new_scryer = new(spawned)
+ new_scryer.label = spawned.name
+ new_scryer.update_name()
+
+ spawned.equip_to_slot_or_del(new_scryer, ITEM_SLOT_NECK, initial = FALSE)
/datum/station_trait/wallets
name = "Wallets!"
diff --git a/code/datums/status_effects/_status_effect.dm b/code/datums/status_effects/_status_effect.dm
index df525fa8c81b1..9f3e3a549046b 100644
--- a/code/datums/status_effects/_status_effect.dm
+++ b/code/datums/status_effects/_status_effect.dm
@@ -12,6 +12,10 @@
/// While processing, this becomes the world.time when the next tick will occur.
/// -1 = will prevent ticks, and if duration is also unlimited (-1), stop processing wholesale.
var/tick_interval = 1 SECONDS
+ ///If our tick intervals are set to be a dynamic value within a range, the lowerbound of said range
+ var/tick_interval_lowerbound
+ ///If our tick intervals are set to be a dynamic value within a range, the upperbound of said range
+ var/tick_interval_upperbound
/// The mob affected by the status effect.
VAR_FINAL/mob/living/owner
/// How many of the effect can be on one mob, and/or what happens when you try to add a duplicate.
@@ -112,7 +116,7 @@
return
if(tick_interval != STATUS_EFFECT_NO_TICK && tick_interval < world.time)
- var/tick_length = initial(tick_interval)
+ var/tick_length = (tick_interval_upperbound && tick_interval_lowerbound) ? rand(tick_interval_lowerbound, tick_interval_upperbound) : initial(tick_interval)
tick(tick_length / (1 SECONDS))
tick_interval = world.time + tick_length
if(QDELING(src))
diff --git a/code/datums/status_effects/agent_pinpointer.dm b/code/datums/status_effects/agent_pinpointer.dm
index 68b01a3eb1fa5..653b04f626175 100644
--- a/code/datums/status_effects/agent_pinpointer.dm
+++ b/code/datums/status_effects/agent_pinpointer.dm
@@ -22,7 +22,7 @@
///The range until you're considered 'too far away'
var/range_far = 16
///The target we are pointing towards, refreshes every tick.
- var/mob/scan_target
+ var/atom/movable/scan_target
/datum/status_effect/agent_pinpointer/tick(seconds_between_ticks)
if(!owner)
@@ -40,6 +40,9 @@
var/turf/here = get_turf(owner)
var/turf/there = get_turf(scan_target)
+ if(isnull(there))
+ scan_target = null
+ return
if(here.z != there.z)
linked_alert.icon_state = "pinonnull"
return
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index 2b6f948b6597b..e4471f2f4dbd8 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -306,7 +306,7 @@
newRod.activated()
if(!itemUser.has_hand_for_held_index(hand))
//If user does not have the corresponding hand anymore, give them one and return the rod to their hand
- var/zone = (hand % 2) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM
+ var/zone = IS_LEFT_INDEX(hand) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM
if(itemUser.regenerate_limb(zone, FALSE))
itemUser.put_in_hand(newRod, hand, forced = TRUE)
else
@@ -406,6 +406,7 @@
/datum/status_effect/mayhem
id = "Mayhem"
duration = 2 MINUTES
+ alert_type = null
/// The chainsaw spawned by the status effect
var/obj/item/chainsaw/doomslayer/chainsaw
@@ -450,6 +451,7 @@
duration = 2 SECONDS
status_type = STATUS_EFFECT_REPLACE
show_duration = TRUE
+ alert_type = null
/datum/status_effect/speed_boost/on_creation(mob/living/new_owner, set_duration)
if(isnum(set_duration))
@@ -595,6 +597,7 @@
id = "radiation_immunity"
duration = 1 MINUTES
show_duration = TRUE
+ alert_type = null
/datum/status_effect/radiation_immunity/on_apply()
ADD_TRAIT(owner, TRAIT_RADIMMUNE, type)
diff --git a/code/datums/status_effects/death_sound.dm b/code/datums/status_effects/death_sound.dm
new file mode 100644
index 0000000000000..b71c070729a5d
--- /dev/null
+++ b/code/datums/status_effects/death_sound.dm
@@ -0,0 +1,46 @@
+/datum/status_effect/death_sound
+ id = "death_sound"
+ tick_interval = -1
+ alert_type = null
+ status_type = STATUS_EFFECT_REPLACE
+ var/death_sound
+ var/death_sound_volume = 100
+
+/datum/status_effect/death_sound/on_creation(mob/living/new_owner, duration, death_sound, death_sound_volume = 100)
+ src.duration = duration
+ src.death_sound = death_sound
+ src.death_sound_volume = death_sound_volume
+ return ..()
+
+/datum/status_effect/death_sound/on_apply()
+ RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(on_death))
+ return TRUE
+
+/datum/status_effect/death_sound/proc/on_death()
+ SIGNAL_HANDLER
+ playsound(owner, death_sound, death_sound_volume, FALSE)
+
+/datum/status_effect/death_sound/on_remove()
+ UnregisterSignal(owner, COMSIG_LIVING_DEATH)
+
+
+/datum/status_effect/replace_death_sound
+ id = "replace_death_sound"
+ tick_interval = -1
+ alert_type = null
+ status_type = STATUS_EFFECT_REPLACE
+ var/death_sound
+ var/old_death_sound
+
+/datum/status_effect/replace_death_sound/on_creation(mob/living/new_owner, duration, death_sound)
+ src.duration = duration
+ src.death_sound = death_sound
+ return ..()
+
+/datum/status_effect/replace_death_sound/on_apply()
+ old_death_sound = owner.death_sound
+ owner.death_sound = death_sound
+ return TRUE
+
+/datum/status_effect/replace_death_sound/on_remove()
+ owner.death_sound = old_death_sound
diff --git a/code/datums/status_effects/debuffs/blindness.dm b/code/datums/status_effects/debuffs/blindness.dm
index 06a5a46b9427b..edb10d27ba44b 100644
--- a/code/datums/status_effects/debuffs/blindness.dm
+++ b/code/datums/status_effects/debuffs/blindness.dm
@@ -11,7 +11,12 @@
// fullheal should instead remove all the sources and in turn cure this
/// Static list of signals that, when received, we force an update to our nearsighted overlay
- var/static/list/update_signals = list(SIGNAL_ADDTRAIT(TRAIT_NEARSIGHTED_CORRECTED), SIGNAL_REMOVETRAIT(TRAIT_NEARSIGHTED_CORRECTED))
+ var/static/list/update_signals = list(
+ SIGNAL_ADDTRAIT(TRAIT_NEARSIGHTED_CORRECTED),
+ SIGNAL_REMOVETRAIT(TRAIT_NEARSIGHTED_CORRECTED),
+ SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS),
+ SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS),
+ )
/// How severe is our nearsightedness right now
var/overlay_severity = 2
@@ -37,7 +42,11 @@
var/mob/living/carbon/human/human_owner = owner
if (human_owner.get_eye_scars())
return TRUE
- return !HAS_TRAIT(owner, TRAIT_NEARSIGHTED_CORRECTED)
+ if(HAS_TRAIT(owner, TRAIT_NEARSIGHTED_CORRECTED))
+ return FALSE
+ if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS))
+ return FALSE
+ return TRUE
/// Updates our nearsightd overlay, either removing it if we have the trait or adding it if we don't
/datum/status_effect/grouped/nearsighted/proc/update_nearsighted_overlay()
@@ -61,6 +70,10 @@
id = "blindness"
tick_interval = STATUS_EFFECT_NO_TICK
alert_type = /atom/movable/screen/alert/status_effect/blind
+ var/static/list/update_signals = list(
+ SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS),
+ SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS),
+ )
// This is not "remove on fullheal" as in practice,
// fullheal should instead remove all the sources and in turn cure this
@@ -68,14 +81,34 @@
if(!CAN_BE_BLIND(owner))
return FALSE
+ RegisterSignals(owner, update_signals, PROC_REF(update_blindness))
+
+ update_blindness()
+
+ return ..()
+
+/datum/status_effect/grouped/blindness/proc/update_blindness()
+ if(!CAN_BE_BLIND(owner)) // future proofing
+ qdel(src)
+ return
+
+ if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS))
+ make_unblind()
+ return
+ make_blind()
+
+/datum/status_effect/grouped/blindness/proc/make_blind()
owner.overlay_fullscreen(id, /atom/movable/screen/fullscreen/blind)
// You are blind - at most, able to make out shapes near you
owner.add_client_colour(/datum/client_colour/monochrome/blind)
- return ..()
-/datum/status_effect/grouped/blindness/on_remove()
+/datum/status_effect/grouped/blindness/proc/make_unblind()
owner.clear_fullscreen(id)
owner.remove_client_colour(/datum/client_colour/monochrome/blind)
+
+/datum/status_effect/grouped/blindness/on_remove()
+ make_unblind()
+ UnregisterSignal(owner, update_signals)
return ..()
/atom/movable/screen/alert/status_effect/blind
diff --git a/code/datums/status_effects/debuffs/choke.dm b/code/datums/status_effects/debuffs/choke.dm
index 9113c8a1a023e..e8af4b1b94dc5 100644
--- a/code/datums/status_effects/debuffs/choke.dm
+++ b/code/datums/status_effects/debuffs/choke.dm
@@ -280,10 +280,8 @@
/datum/status_effect/choke/proc/deal_damage(seconds_between_ticks)
owner.losebreath += 1 * seconds_between_ticks // 1 breath loss a second. This will deal additional breath damage, and prevent breathing
if(flaming)
- var/obj/item/bodypart/head = owner.get_bodypart(BODY_ZONE_HEAD)
- if(head)
- head.receive_damage(0, 2 * seconds_between_ticks, damage_source = "choking")
- owner.adjustStaminaLoss(2 * seconds_between_ticks)
+ owner.apply_damage(2 * seconds_between_ticks, BURN, BODY_ZONE_HEAD, attacking_item = "choking")
+ owner.apply_damage(2 * seconds_between_ticks, STAMINA)
/datum/status_effect/choke/proc/do_vfx(client/vfx_on)
var/old_x = delta_x
diff --git a/code/datums/status_effects/debuffs/cursed.dm b/code/datums/status_effects/debuffs/cursed.dm
index 8d331bbe90add..083bd678635e7 100644
--- a/code/datums/status_effects/debuffs/cursed.dm
+++ b/code/datums/status_effects/debuffs/cursed.dm
@@ -31,6 +31,8 @@
/datum/status_effect/grouped/cursed/Destroy()
UnregisterSignal(SSdcs, COMSIG_GLOB_CURSED_SLOT_MACHINE_WON)
branded_hand = null
+ if (smoke_path)
+ owner.remove_shared_particles(smoke_path)
return ..()
/// Checks the number of curses we have and returns information back to the slot machine. `max_curse_amount` is set by the slot machine itself.
@@ -123,7 +125,6 @@
span_notice("The smoke slowly clears from [owner.name]..."),
span_notice("Your skin finally settles down and your throat no longer feels as dry... The brand disappearing confirms that the curse has been lifted."),
)
- QDEL_NULL(particle_effect)
qdel(src)
/// If our owner's stat changes, rapidly surge the damage chance.
@@ -140,10 +141,8 @@
/datum/status_effect/grouped/cursed/proc/on_death(mob/living/source, gibbed)
SIGNAL_HANDLER
- if(gibbed)
- return
-
- QDEL_NULL(particle_effect)
+ if(!gibbed && smoke_path)
+ owner.remove_shared_particles(smoke_path)
/datum/status_effect/grouped/cursed/update_particles()
var/particle_path = /particles/smoke/steam/mild
@@ -156,9 +155,10 @@
if(smoke_path == particle_path)
return
- QDEL_NULL(particle_effect)
+ if (smoke_path)
+ owner.remove_shared_particles(smoke_path)
+ owner.add_shared_particles(particle_path)
smoke_path = particle_path
- particle_effect = new(owner, particle_path)
/datum/status_effect/grouped/cursed/tick(seconds_between_ticks)
if(curse_count <= 1)
diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm
index 3cf51d34c48d7..34eae9515ff7c 100644
--- a/code/datums/status_effects/debuffs/debuffs.dm
+++ b/code/datums/status_effects/debuffs/debuffs.dm
@@ -8,6 +8,7 @@
//Largely negative status effects go here, even if they have small beneficial effects
//STUN EFFECTS
/datum/status_effect/incapacitating
+ id = STATUS_EFFECT_ID_ABSTRACT
tick_interval = STATUS_EFFECT_NO_TICK
status_type = STATUS_EFFECT_REPLACE
alert_type = null
@@ -18,12 +19,11 @@
/datum/status_effect/incapacitating/on_creation(mob/living/new_owner, set_duration)
if(isnum(set_duration))
duration = set_duration
- return ..()
-
-/datum/status_effect/incapacitating/on_apply()
+ . = ..()
+ if(!.)
+ return
if(needs_update_stat || issilicon(owner))
owner.update_stat()
- return TRUE
/datum/status_effect/incapacitating/on_remove()
if(needs_update_stat || issilicon(owner)) //silicons need stat updates in addition to normal canmove updates
@@ -512,7 +512,7 @@
new/obj/effect/temp_visual/dir_setting/curse/grasp_portal(spawn_turf, owner.dir)
playsound(spawn_turf, 'sound/effects/curse/curse2.ogg', 80, TRUE, -1)
var/obj/projectile/curse_hand/C = new (spawn_turf)
- C.preparePixelProjectile(owner, spawn_turf)
+ C.aim_projectile(owner, spawn_turf)
C.fire()
/obj/effect/temp_visual/curse
@@ -704,7 +704,7 @@
/datum/status_effect/go_away
id = "go_away"
- duration = 100
+ duration = 10 SECONDS
status_type = STATUS_EFFECT_REPLACE
tick_interval = 0.2 SECONDS
alert_type = /atom/movable/screen/alert/status_effect/go_away
@@ -720,6 +720,17 @@
var/turf/T = get_step(owner, direction)
owner.forceMove(T)
+/datum/status_effect/go_away/deletes_mob
+ id = "go_away_deletes_mob"
+ duration = INFINITY
+
+/datum/status_effect/go_away/deluxe/on_creation(mob/living/new_owner, set_duration)
+ . = ..()
+ RegisterSignal(new_owner, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(wipe_bozo))
+
+/datum/status_effect/go_away/deluxe/proc/wipe_bozo()
+ qdel(owner)
+
/atom/movable/screen/alert/status_effect/go_away
name = "TO THE STARS AND BEYOND!"
desc = "I must go, my people need me!"
@@ -837,8 +848,7 @@
/datum/status_effect/ants/tick(seconds_between_ticks)
var/mob/living/carbon/human/victim = owner
- var/need_mob_update
- need_mob_update = victim.adjustBruteLoss(max(0.1, round((ants_remaining * damage_per_ant) * seconds_between_ticks,0.1)), updating_health = FALSE) //Scales with # of ants (lowers with time). Roughly 10 brute over 50 seconds.
+ victim.apply_damage(max(0.1, round((ants_remaining * damage_per_ant), 0.1)) * seconds_between_ticks, BRUTE, spread_damage = TRUE) //Scales with # of ants (lowers with time). Roughly 10 brute over 50 seconds.
if(victim.stat <= SOFT_CRIT) //Makes sure people don't scratch at themselves while they're in a critical condition
if(prob(15))
switch(rand(1,2))
@@ -849,31 +859,27 @@
if(prob(50)) // Most of the damage is done through random chance. When tested yielded an average 100 brute with 200u ants.
switch(rand(1,50))
if (1 to 8) //16% Chance
- var/obj/item/bodypart/head/hed = victim.get_bodypart(BODY_ZONE_HEAD)
to_chat(victim, span_danger("You scratch at the ants on your scalp!."))
- need_mob_update += hed.receive_damage(brute = 0.4 * seconds_between_ticks, burn = 0, updating_health = FALSE)
+ owner.apply_damage(0.4 * seconds_between_ticks, BRUTE, BODY_ZONE_HEAD)
if (9 to 29) //40% chance
- var/obj/item/bodypart/arm = victim.get_bodypart(pick(BODY_ZONE_L_ARM,BODY_ZONE_R_ARM))
to_chat(victim, span_danger("You scratch at the ants on your arms!"))
- need_mob_update += arm.receive_damage(brute = 1.2 * seconds_between_ticks, burn = 0, updating_health = FALSE)
+ owner.apply_damage(1.2 * seconds_between_ticks, BRUTE, pick(GLOB.arm_zones))
if (30 to 49) //38% chance
- var/obj/item/bodypart/leg = victim.get_bodypart(pick(BODY_ZONE_L_LEG,BODY_ZONE_R_LEG))
to_chat(victim, span_danger("You scratch at the ants on your leg!"))
- need_mob_update += leg.receive_damage(brute = 1.2 * seconds_between_ticks, burn = 0, updating_health = FALSE)
+ owner.apply_damage(1.2 * seconds_between_ticks, BRUTE, pick(GLOB.leg_zones))
if(50) // 2% chance
to_chat(victim, span_danger("You rub some ants away from your eyes!"))
victim.set_eye_blur_if_lower(6 SECONDS)
ants_remaining -= 5 // To balance out the blindness, it'll be a little shorter.
ants_remaining--
- if(need_mob_update)
- victim.updatehealth()
if(ants_remaining <= 0 || victim.stat >= HARD_CRIT)
- victim.remove_status_effect(type) //If this person has no more ants on them or are dead, they are no longer affected.
+ qdel(src) //If this person has no more ants on them or are dead, they are no longer affected.
/atom/movable/screen/alert/status_effect/ants
name = "Ants!"
desc = span_warning("JESUS FUCKING CHRIST! CLICK TO GET THOSE THINGS OFF!")
icon_state = "antalert"
+ clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/ants/Click()
. = ..()
@@ -966,6 +972,7 @@
duration = 10 SECONDS
status_type = STATUS_EFFECT_REPLACE
tick_interval = 0.2 SECONDS
+ alert_type = null
/datum/status_effect/teleport_madness/tick(seconds_between_ticks)
dump_in_space(owner)
diff --git a/code/datums/status_effects/debuffs/drunk.dm b/code/datums/status_effects/debuffs/drunk.dm
index a1ff3c7fb4eaf..37ab11f130c4c 100644
--- a/code/datums/status_effects/debuffs/drunk.dm
+++ b/code/datums/status_effects/debuffs/drunk.dm
@@ -15,6 +15,7 @@
tick_interval = 2 SECONDS
status_type = STATUS_EFFECT_REPLACE
remove_on_fullheal = TRUE
+ alert_type = null
/// The level of drunkness we are currently at.
var/drunk_value = 0
@@ -106,6 +107,7 @@
. = ..()
owner.sound_environment_override = SOUND_ENVIRONMENT_PSYCHOTIC
owner.add_mood_event(id, /datum/mood_event/drunk)
+ RegisterSignal(owner, COMSIG_MOB_FIRED_GUN, PROC_REF(drunk_gun_fired))
/datum/status_effect/inebriated/drunk/on_remove()
clear_effects()
@@ -123,6 +125,19 @@
if(owner.sound_environment_override == SOUND_ENVIRONMENT_PSYCHOTIC)
owner.sound_environment_override = SOUND_ENVIRONMENT_NONE
+ UnregisterSignal(owner, COMSIG_MOB_FIRED_GUN)
+
+/datum/status_effect/inebriated/drunk/proc/drunk_gun_fired(datum/source, obj/item/gun/gun, atom/firing_at, params, zone, bonus_spread_values)
+ SIGNAL_HANDLER
+
+ // excusing the bartender, because shotgun
+ if(HAS_TRAIT(owner, TRAIT_DRUNKEN_BRAWLER))
+ return
+ // what makes me a good demoman?
+ if(istype(gun, /obj/item/gun/grenadelauncher) || istype(gun, /obj/item/gun/ballistic/revolver/grenadelauncher))
+ return
+ bonus_spread_values[MAX_BONUS_SPREAD_INDEX] += (drunk_value * 0.5)
+
/datum/status_effect/inebriated/drunk/set_drunk_value(set_to)
. = ..()
if(QDELETED(src))
diff --git a/code/datums/status_effects/debuffs/fire_stacks.dm b/code/datums/status_effects/debuffs/fire_stacks.dm
index 83510a2ded2bd..4b071d87e21e6 100644
--- a/code/datums/status_effects/debuffs/fire_stacks.dm
+++ b/code/datums/status_effects/debuffs/fire_stacks.dm
@@ -1,5 +1,6 @@
/datum/status_effect/fire_handler
duration = STATUS_EFFECT_PERMANENT
+ id = STATUS_EFFECT_ID_ABSTRACT
alert_type = null
status_type = STATUS_EFFECT_REFRESH //Custom code
on_remove_on_mob_delete = TRUE
@@ -135,6 +136,8 @@
var/obj/effect/dummy/lighting_obj/moblight
/// Type of mob light emitter we use when on fire
var/moblight_type = /obj/effect/dummy/lighting_obj/moblight/fire
+ /// Cached particle type
+ var/cached_state
/datum/status_effect/fire_handler/fire_stacks/get_examine_text()
if(owner.on_fire)
@@ -153,6 +156,8 @@
/datum/status_effect/fire_handler/fire_stacks/on_remove()
UnregisterSignal(owner, COMSIG_ATOM_TOUCHED_SPARKS)
+ if (cached_state)
+ owner.remove_shared_particles(cached_state)
/datum/status_effect/fire_handler/fire_stacks/tick(seconds_between_ticks)
if(stacks <= 0)
@@ -177,15 +182,23 @@
deal_damage(seconds_between_ticks)
/datum/status_effect/fire_handler/fire_stacks/update_particles()
- if(on_fire)
- if(!particle_effect)
- particle_effect = new(owner, /particles/embers)
- if(stacks > MOB_BIG_FIRE_STACK_THRESHOLD)
- particle_effect.particles.spawning = 5
- else
- particle_effect.particles.spawning = 1
- else if(particle_effect)
- QDEL_NULL(particle_effect)
+ if (!on_fire)
+ if (cached_state)
+ owner.remove_shared_particles(cached_state)
+ cached_state = null
+ return
+
+ var/particle_type = /particles/embers/minor
+ if(stacks > MOB_BIG_FIRE_STACK_THRESHOLD)
+ particle_type = /particles/embers
+
+ if (cached_state == particle_type)
+ return
+
+ if (cached_state)
+ owner.remove_shared_particles(cached_state)
+ owner.add_shared_particles(particle_type)
+ cached_state = particle_type
/**
* Proc that handles damage dealing and all special effects
@@ -300,7 +313,7 @@
enemy_types = list(/datum/status_effect/fire_handler/fire_stacks)
stack_modifier = -1
- ///If the mob has the TRAIT_SLIPPERY_WHEN_WET trait, the mob gets this component while it's wet
+ /// If the mob has the TRAIT_SLIPPERY_WHEN_WET trait, the mob gets this component while it's wet
var/datum/component/slippery/slipperiness
/datum/status_effect/fire_handler/wet_stacks/on_apply()
@@ -312,12 +325,14 @@
if(HAS_TRAIT(owner, TRAIT_SLIPPERY_WHEN_WET))
become_slippery()
ADD_TRAIT(owner, TRAIT_IS_WET, TRAIT_STATUS_EFFECT(id))
+ owner.add_shared_particles(/particles/droplets)
/datum/status_effect/fire_handler/wet_stacks/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_IS_WET, TRAIT_STATUS_EFFECT(id))
if(HAS_TRAIT(owner, TRAIT_SLIPPERY_WHEN_WET))
no_longer_slippery()
+ owner.remove_shared_particles(/particles/droplets)
/datum/status_effect/fire_handler/wet_stacks/proc/update_wet_stack_modifier()
SIGNAL_HANDLER
@@ -325,7 +340,7 @@
/datum/status_effect/fire_handler/wet_stacks/proc/become_slippery()
SIGNAL_HANDLER
- slipperiness = owner.AddComponent(/datum/component/slippery, 5 SECONDS, lube_flags = SLIPPERY_WHEN_LYING_DOWN)
+ slipperiness = owner.AddComponent(/datum/component/slippery, 5 SECONDS, lube_flags = SLIPPERY_WHEN_LYING_DOWN|NO_SLIP_WHEN_WALKING|WEAK_SLIDE)
ADD_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/fire_handler/wet_stacks/proc/no_longer_slippery()
@@ -342,10 +357,5 @@
if(stacks <= 0)
qdel(src)
-/datum/status_effect/fire_handler/wet_stacks/update_particles()
- if(particle_effect)
- return
- particle_effect = new(owner, /particles/droplets)
-
/datum/status_effect/fire_handler/wet_stacks/check_basic_mob_immunity(mob/living/basic/basic_owner)
return !(basic_owner.basic_mob_flags & IMMUNE_TO_GETTING_WET)
diff --git a/code/datums/status_effects/debuffs/hallucination.dm b/code/datums/status_effects/debuffs/hallucination.dm
index 3f24ab02e60ac..66e85f1900a23 100644
--- a/code/datums/status_effects/debuffs/hallucination.dm
+++ b/code/datums/status_effects/debuffs/hallucination.dm
@@ -14,27 +14,39 @@
/// The cooldown for when the next hallucination can occur
COOLDOWN_DECLARE(hallucination_cooldown)
-/datum/status_effect/hallucination/on_creation(mob/living/new_owner, duration)
+/datum/status_effect/hallucination/on_creation(mob/living/new_owner, duration, lower_tick_interval, upper_tick_interval)
if(isnum(duration))
src.duration = duration
+ if(isnum(lower_tick_interval))
+ src.lower_tick_interval = lower_tick_interval
+ if(isnum(upper_tick_interval))
+ src.upper_tick_interval = upper_tick_interval
return ..()
/datum/status_effect/hallucination/on_apply()
if(owner.mob_biotypes & barred_biotypes)
return FALSE
+ if(HAS_TRAIT(owner, TRAIT_HALLUCINATION_IMMUNE))
+ return FALSE
RegisterSignal(owner, COMSIG_LIVING_HEALTHSCAN, PROC_REF(on_health_scan))
+ RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_HALLUCINATION_IMMUNE), PROC_REF(delete_self))
if(iscarbon(owner))
RegisterSignal(owner, COMSIG_CARBON_CHECKING_BODYPART, PROC_REF(on_check_bodypart))
RegisterSignal(owner, COMSIG_CARBON_BUMPED_AIRLOCK_OPEN, PROC_REF(on_bump_airlock))
return TRUE
+/datum/status_effect/hallucination/proc/delete_self()
+ SIGNAL_HANDLER
+ qdel(src)
+
/datum/status_effect/hallucination/on_remove()
UnregisterSignal(owner, list(
COMSIG_LIVING_HEALTHSCAN,
COMSIG_CARBON_CHECKING_BODYPART,
COMSIG_CARBON_BUMPED_AIRLOCK_OPEN,
+ SIGNAL_ADDTRAIT(TRAIT_HALLUCINATION_IMMUNE),
))
/// Signal proc for [COMSIG_LIVING_HEALTHSCAN]. Show we're hallucinating to (advanced) scanners.
diff --git a/code/datums/status_effects/debuffs/hooked.dm b/code/datums/status_effects/debuffs/hooked.dm
index d7fcb2b1821dd..8d160305b54f5 100644
--- a/code/datums/status_effects/debuffs/hooked.dm
+++ b/code/datums/status_effects/debuffs/hooked.dm
@@ -29,6 +29,7 @@
name = "Snagged By Hook"
desc = "You're being caught like a fish by some asshat! Click to safely remove the hook or move away far enough to snap it off."
icon_state = "hooked"
+ clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/hooked/Click()
. = ..()
diff --git a/code/datums/status_effects/debuffs/screen_blur.dm b/code/datums/status_effects/debuffs/screen_blur.dm
index abdd07d3cd59b..acdce13b5a08a 100644
--- a/code/datums/status_effects/debuffs/screen_blur.dm
+++ b/code/datums/status_effects/debuffs/screen_blur.dm
@@ -18,7 +18,8 @@
return FALSE
// Refresh the blur when a client jumps into the mob, in case we get put on a clientless mob with no hud
- RegisterSignal(owner, COMSIG_MOB_LOGIN, PROC_REF(update_blur))
+ RegisterSignals(owner, list(COMSIG_MOB_LOGIN, SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS), SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS)), PROC_REF(update_blur))
+
// Apply initial blur
update_blur()
return TRUE
@@ -43,10 +44,13 @@
if(!owner.hud_used)
return
+ var/atom/movable/plane_master_controller/game_plane_master_controller = owner.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
+ if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS))
+ game_plane_master_controller.remove_filter("eye_blur")
+ return
+
var/time_left_in_seconds = (duration - world.time) / (1 SECONDS)
var/amount_of_blur = clamp(time_left_in_seconds * BLUR_DURATION_TO_INTENSITY, 0.6, 3)
-
- var/atom/movable/plane_master_controller/game_plane_master_controller = owner.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
game_plane_master_controller.add_filter("eye_blur", 1, gauss_blur_filter(amount_of_blur))
#undef BLUR_DURATION_TO_INTENSITY
diff --git a/code/datums/status_effects/debuffs/screwy_hud.dm b/code/datums/status_effects/debuffs/screwy_hud.dm
index 2e8fc566cf460..10c20112160c7 100644
--- a/code/datums/status_effects/debuffs/screwy_hud.dm
+++ b/code/datums/status_effects/debuffs/screwy_hud.dm
@@ -8,6 +8,7 @@
* accidentally removing another source's hud.
*/
/datum/status_effect/grouped/screwy_hud
+ id = STATUS_EFFECT_ID_ABSTRACT
alert_type = null
/// The priority of this screwyhud over other screwyhuds.
var/priority = -1
diff --git a/code/datums/status_effects/debuffs/slime/slime_food.dm b/code/datums/status_effects/debuffs/slime/slime_food.dm
index 538e62e27c597..259f6c8829a6e 100644
--- a/code/datums/status_effects/debuffs/slime/slime_food.dm
+++ b/code/datums/status_effects/debuffs/slime/slime_food.dm
@@ -21,9 +21,11 @@
RegisterSignal(owner, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_feeder_deleted))
RegisterSignal(owner, COMSIG_SLIME_DRAINED, PROC_REF(on_drained))
RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
-
return ..()
+/datum/status_effect/slime_food/on_remove()
+ feeder = null
+
///Handles the source of the pheromones getting deleted, or the owner getting washed
/datum/status_effect/slime_food/proc/on_feeder_deleted(datum/source)
SIGNAL_HANDLER
@@ -51,6 +53,3 @@
draining_slime.befriend(feeder)
new /obj/effect/temp_visual/heart(draining_slime.loc)
qdel(src)
-
-/datum/status_effect/slime_food/on_remove()
- feeder = null
diff --git a/code/datums/status_effects/debuffs/slime/slimed.dm b/code/datums/status_effects/debuffs/slime/slimed.dm
index 2540c4df5136c..32fa90482233e 100644
--- a/code/datums/status_effects/debuffs/slime/slimed.dm
+++ b/code/datums/status_effects/debuffs/slime/slimed.dm
@@ -7,6 +7,7 @@
name = "Covered in Slime"
desc = "You are covered in slime and it's eating away at you! Click to start cleaning it off, or find a faster way to wash it away!"
icon_state = "slimed"
+ clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/slimed/Click()
. = ..()
@@ -65,6 +66,14 @@
to_chat(owner, span_userdanger("You have been covered in a thick layer of slime! Find a way to wash it off!"))
return ..()
+/datum/status_effect/slimed/on_remove()
+ owner.remove_shared_particles(rainbow ? "slimed_rainbow" : "slimed_[slime_color]")
+
+/datum/status_effect/slimed/update_particles()
+ var/obj/effect/abstract/shared_particle_holder/holder = owner.add_shared_particles(rainbow ? /particles/slime/rainbow : /particles/slime, rainbow ? "slimed_rainbow" : "slimed_[slime_color]")
+ if (!rainbow)
+ holder.particles.color = "[slime_color]a0"
+
/datum/status_effect/slimed/proc/remove_stacks(stacks_to_remove = 1)
slime_stacks -= stacks_to_remove // lose 1 stack per second
if(slime_stacks <= 0)
diff --git a/code/datums/status_effects/debuffs/spacer.dm b/code/datums/status_effects/debuffs/spacer.dm
index 1add806c02f0e..ed14fd285968e 100644
--- a/code/datums/status_effects/debuffs/spacer.dm
+++ b/code/datums/status_effects/debuffs/spacer.dm
@@ -3,6 +3,7 @@
/datum/status_effect/spacer
id = "spacer_gravity_effects"
status_type = STATUS_EFFECT_REPLACE
+ alert_type = null
/// Essentially, tracks whether this is a planetary map.
/// It'd be pretty miserable if you're playing a planetary map and getting the worse of all effects, so we handwave it a bit.
VAR_FINAL/nerfed_effects_because_planetary = FALSE
diff --git a/code/datums/status_effects/debuffs/speech_debuffs.dm b/code/datums/status_effects/debuffs/speech_debuffs.dm
index a557f7ddd4dd4..1ba85ebe72f72 100644
--- a/code/datums/status_effects/debuffs/speech_debuffs.dm
+++ b/code/datums/status_effects/debuffs/speech_debuffs.dm
@@ -1,5 +1,5 @@
/datum/status_effect/speech
- id = null
+ id = STATUS_EFFECT_ID_ABSTRACT
alert_type = null
remove_on_fullheal = TRUE
tick_interval = STATUS_EFFECT_NO_TICK
diff --git a/code/datums/status_effects/debuffs/stamcrit.dm b/code/datums/status_effects/debuffs/stamcrit.dm
index 74c3fde12f55f..0d4a844a61e0d 100644
--- a/code/datums/status_effects/debuffs/stamcrit.dm
+++ b/code/datums/status_effects/debuffs/stamcrit.dm
@@ -1,4 +1,5 @@
/datum/status_effect/incapacitating/stamcrit
+ id = "stamcrit"
status_type = STATUS_EFFECT_UNIQUE
// Lasts until we go back to 0 stamina, which is handled by the mob
duration = STATUS_EFFECT_PERMANENT
diff --git a/code/datums/status_effects/debuffs/strandling.dm b/code/datums/status_effects/debuffs/strandling.dm
index 0ce0ad4188221..d37961c13c903 100644
--- a/code/datums/status_effects/debuffs/strandling.dm
+++ b/code/datums/status_effects/debuffs/strandling.dm
@@ -88,6 +88,7 @@
desc = "Strands of Durathread are wrapped around your neck, preventing you from breathing! Click this icon to remove the strand."
icon_state = "his_grace"
alerttooltipstyle = "hisgrace"
+ clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/strandling/Click(location, control, params)
. = ..()
diff --git a/code/datums/status_effects/grouped_effect.dm b/code/datums/status_effects/grouped_effect.dm
index 601945b83aae4..27b37af1e3567 100644
--- a/code/datums/status_effects/grouped_effect.dm
+++ b/code/datums/status_effects/grouped_effect.dm
@@ -1,5 +1,7 @@
/// Status effect from multiple sources, when all sources are removed, so is the effect
/datum/status_effect/grouped
+ id = STATUS_EFFECT_ID_ABSTRACT
+ alert_type = null
// Grouped effects adds itself to [var/sources] and destroys itself if one exists already, there are never actually multiple
status_type = STATUS_EFFECT_MULTIPLE
/// A list of all sources applying this status effect. Sources are a list of keys
diff --git a/code/datums/status_effects/limited_effect.dm b/code/datums/status_effects/limited_effect.dm
index b577248d35eee..047a7a5ae07c8 100644
--- a/code/datums/status_effects/limited_effect.dm
+++ b/code/datums/status_effects/limited_effect.dm
@@ -3,6 +3,7 @@
id = "limited_buff"
duration = STATUS_EFFECT_PERMANENT
status_type = STATUS_EFFECT_REFRESH
+ alert_type = null
///How many stacks we currently have
var/stacks = 1
///How many stacks we can have maximum
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index b2869b6a30e3a..d080de4d2c014 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -110,6 +110,7 @@
/datum/status_effect/bounty
id = "bounty"
status_type = STATUS_EFFECT_UNIQUE
+ alert_type = null
var/mob/living/rewarded
/datum/status_effect/bounty/on_creation(mob/living/new_owner, mob/living/caster)
@@ -176,6 +177,7 @@
name = "Holding Up"
desc = "You're currently pointing a gun at someone. Click to cancel."
icon_state = "aimed"
+ clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/holdup/Click(location, control, params)
. = ..()
@@ -358,6 +360,7 @@
name = "Surrender"
desc = "Looks like you're in trouble now, bud. Click here to surrender. (Warning: You will be incapacitated.)"
icon_state = "surrender"
+ clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/surrender/Click(location, control, params)
. = ..()
@@ -579,6 +582,7 @@
id = "tinea_luxor_light"
processing_speed = STATUS_EFFECT_NORMAL_PROCESS
remove_on_fullheal = TRUE
+ alert_type = null
var/obj/effect/dummy/lighting_obj/moblight/mob_light_obj
/datum/status_effect/tinlux_light/on_creation(mob/living/new_owner, duration)
@@ -615,40 +619,67 @@
duration = STATUS_EFFECT_PERMANENT
status_type = STATUS_EFFECT_UNIQUE
alert_type = /atom/movable/screen/alert/status_effect/washing_regen
- ///The screen alert shown if you hate water
- var/hater_alert = /atom/movable/screen/alert/status_effect/washing_regen/hater
/// How much stamina we regain from washing
var/stamina_heal_per_tick = -4
/// How much brute, tox and fie damage we heal from this
var/heal_per_tick = 0
+ /// The main reagent used for the shower (if no reagent is at least 70% of volume then it's null)
+ var/datum/reagent/shower_reagent
+
+/datum/status_effect/washing_regen/on_creation(mob/living/new_owner, shower_reagent)
+ if(!src.shower_reagent)
+ src.shower_reagent = shower_reagent
+ return ..()
/datum/status_effect/washing_regen/on_apply()
. = ..()
- if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION))
- alert_type = hater_alert
+ if(istype(shower_reagent, /datum/reagent/blood))
+ if(HAS_TRAIT(owner, TRAIT_MORBID) || HAS_TRAIT(owner, TRAIT_EVIL) || (owner.mob_biotypes & MOB_UNDEAD))
+ alert_type = /atom/movable/screen/alert/status_effect/washing_regen/bloody_like
+ else
+ alert_type = /atom/movable/screen/alert/status_effect/washing_regen/bloody_dislike
+ else if(istype(shower_reagent, /datum/reagent/water))
+ if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION))
+ alert_type = /atom/movable/screen/alert/status_effect/washing_regen/hater
+ else
+ alert_type = /atom/movable/screen/alert/status_effect/washing_regen
+ else if(!shower_reagent) // dirty shower
+ alert_type = /atom/movable/screen/alert/status_effect/washing_regen/dislike
/datum/status_effect/washing_regen/tick(seconds_between_ticks)
. = ..()
- var/water_adaptation = HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION)
- var/water_hater = HAS_TRAIT(owner, TRAIT_WATER_HATER)
- var/stam_recovery = (water_hater && !water_adaptation ? -stamina_heal_per_tick : stamina_heal_per_tick) * seconds_between_ticks
- var/recovery = heal_per_tick
- if(water_adaptation)
- recovery -= 1
- stam_recovery *= 1.5
- else if(water_hater)
- recovery *= 0
- recovery *= seconds_between_ticks
-
- var/healed = 0
- if(recovery) //very mild healing for those with the water adaptation trait (fish infusion)
- healed += owner.adjustOxyLoss(recovery * (water_adaptation ? 1.5 : 1), updating_health = FALSE, required_biotype = MOB_ORGANIC)
- healed += owner.adjustFireLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
- healed += owner.adjustToxLoss(recovery, updating_health = FALSE, required_biotype = MOB_ORGANIC)
- healed += owner.adjustBruteLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
- healed += owner.adjustStaminaLoss(stam_recovery, updating_stamina = FALSE)
- if(healed)
- owner.updatehealth()
+
+ var/is_disgusted = FALSE
+
+ if(istype(shower_reagent, /datum/reagent/water))
+ var/water_adaptation = HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION)
+ var/water_hater = HAS_TRAIT(owner, TRAIT_WATER_HATER)
+ var/stam_recovery = (water_hater && !water_adaptation ? -stamina_heal_per_tick : stamina_heal_per_tick) * seconds_between_ticks
+ var/recovery = heal_per_tick
+ if(water_adaptation)
+ recovery -= 1
+ stam_recovery *= 1.5
+ else if(water_hater)
+ recovery *= 0
+ recovery *= seconds_between_ticks
+
+ var/healed = 0
+ if(recovery) //very mild healing for those with the water adaptation trait (fish infusion)
+ healed += owner.adjustOxyLoss(recovery * (water_adaptation ? 1.5 : 1), updating_health = FALSE, required_biotype = MOB_ORGANIC)
+ healed += owner.adjustFireLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
+ healed += owner.adjustToxLoss(recovery, updating_health = FALSE, required_biotype = MOB_ORGANIC)
+ healed += owner.adjustBruteLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
+ healed += owner.adjustStaminaLoss(stam_recovery, updating_stamina = FALSE)
+ if(healed)
+ owner.updatehealth()
+ else if(istype(shower_reagent, /datum/reagent/blood))
+ var/enjoy_bloody_showers = HAS_TRAIT(owner, TRAIT_MORBID) || HAS_TRAIT(owner, TRAIT_EVIL) || (owner.mob_biotypes & MOB_UNDEAD)
+ is_disgusted = !enjoy_bloody_showers
+ else if(!shower_reagent) // dirty shower
+ is_disgusted = TRUE
+
+ if(is_disgusted)
+ owner.adjust_disgust(2)
/atom/movable/screen/alert/status_effect/washing_regen
name = "Washing"
@@ -659,11 +690,28 @@
desc = "Waaater... Fuck this WATER!!"
icon_state = "shower_regen_catgirl"
+/atom/movable/screen/alert/status_effect/washing_regen/dislike
+ desc = "This water feels dirty..."
+ icon_state = "shower_regen_dirty"
+
+/atom/movable/screen/alert/status_effect/washing_regen/bloody_like
+ desc = "Mhhhmmmm... the crimson red drops of life. How delightful."
+ icon_state = "shower_regen_blood_happy"
+
+/atom/movable/screen/alert/status_effect/washing_regen/bloody_dislike
+ desc = "Is that... blood? What the fuck!"
+ icon_state = "shower_regen_blood_bad"
+
/datum/status_effect/washing_regen/hot_spring
alert_type = /atom/movable/screen/alert/status_effect/washing_regen/hotspring
- hater_alert = /atom/movable/screen/alert/status_effect/washing_regen/hotspring/hater
stamina_heal_per_tick = -4.5
heal_per_tick = -0.4
+ shower_reagent = /datum/reagent/water
+
+/datum/status_effect/washing_regen/hot_spring/on_apply()
+ . = ..()
+ if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION))
+ alert_type = /atom/movable/screen/alert/status_effect/washing_regen/hotspring/hater
/datum/status_effect/washing_regen/hot_spring/tick(seconds_between_ticks)
. = ..()
diff --git a/code/datums/status_effects/stacking_effect.dm b/code/datums/status_effects/stacking_effect.dm
index 3ed7846f6ff23..d3f128045ce00 100644
--- a/code/datums/status_effects/stacking_effect.dm
+++ b/code/datums/status_effects/stacking_effect.dm
@@ -1,7 +1,7 @@
/// Status effects that can stack.
/datum/status_effect/stacking
- id = "stacking_base"
+ id = STATUS_EFFECT_ID_ABSTRACT
duration = STATUS_EFFECT_PERMANENT // Only removed under specific conditions.
tick_interval = 1 SECONDS // Deciseconds between decays, once decay starts
alert_type = null
@@ -119,8 +119,7 @@
return FALSE
status_overlay = mutable_appearance(overlay_file, "[overlay_state][stacks]")
status_underlay = mutable_appearance(underlay_file, "[underlay_state][stacks]")
- var/icon/I = icon(owner.icon, owner.icon_state, owner.dir)
- var/icon_height = I.Height()
+ var/icon_height = owner.get_cached_height()
status_overlay.pixel_x = -owner.pixel_x
status_overlay.pixel_y = FLOOR(icon_height * 0.25, 1)
status_overlay.transform = matrix() * (icon_height/ICON_SIZE_Y) //scale the status's overlay size based on the target's icon size
diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm
index 8d36aaf287f3d..67ee23120a631 100644
--- a/code/datums/status_effects/wound_effects.dm
+++ b/code/datums/status_effects/wound_effects.dm
@@ -30,6 +30,7 @@
status_type = STATUS_EFFECT_REPLACE
tick_interval = STATUS_EFFECT_NO_TICK
alert_type = /atom/movable/screen/alert/status_effect/limp
+ on_remove_on_mob_delete = TRUE
var/msg_stage = 0//so you dont get the most intense messages immediately
/// The left leg of the limping person
var/obj/item/bodypart/leg/left/left
@@ -49,16 +50,18 @@
/datum/status_effect/limp/on_apply()
if(!iscarbon(owner))
return FALSE
- var/mob/living/carbon/C = owner
- left = C.get_bodypart(BODY_ZONE_L_LEG)
- right = C.get_bodypart(BODY_ZONE_R_LEG)
+ var/mob/living/carbon/carbon_owner = owner
+ left = carbon_owner.get_bodypart(BODY_ZONE_L_LEG)
+ right = carbon_owner.get_bodypart(BODY_ZONE_R_LEG)
update_limp()
- RegisterSignal(C, COMSIG_MOVABLE_MOVED, PROC_REF(check_step))
- RegisterSignals(C, list(COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_POST_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB), PROC_REF(update_limp))
+ RegisterSignal(carbon_owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_step))
+ RegisterSignals(carbon_owner, list(COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_POST_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB), PROC_REF(update_limp))
return TRUE
/datum/status_effect/limp/on_remove()
UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_POST_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB))
+ left = null
+ right = null
/atom/movable/screen/alert/status_effect/limp
name = "Limping"
@@ -119,7 +122,6 @@
C.remove_status_effect(src)
return
-
/////////////////////////
//////// WOUNDS /////////
/////////////////////////
diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm
index b659eb79930ea..25703d26c8a02 100644
--- a/code/datums/storage/storage.dm
+++ b/code/datums/storage/storage.dm
@@ -693,10 +693,12 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
/datum/storage/proc/on_preattack(datum/source, obj/item/thing, mob/user, params)
SIGNAL_HANDLER
- if(!istype(thing) || !allow_quick_gather || thing.atom_storage)
+ if(!istype(thing) || thing == parent.loc || !allow_quick_gather || thing.atom_storage)
return
if(collection_mode == COLLECT_ONE)
+ if(thing.loc == user)
+ user.dropItemToGround(thing, silent = TRUE) //this is nessassary to update any inventory slot it is attached to
attempt_insert(thing, user)
return COMPONENT_CANCEL_ATTACK_CHAIN
diff --git a/code/datums/storage/subtypes/backpack.dm b/code/datums/storage/subtypes/backpack.dm
index a6b3e1477dd97..a2a1a13fcd463 100644
--- a/code/datums/storage/subtypes/backpack.dm
+++ b/code/datums/storage/subtypes/backpack.dm
@@ -2,6 +2,16 @@
max_total_storage = 21
max_slots = 21
+/datum/storage/backpack/New(
+ atom/parent,
+ max_slots,
+ max_specific_storage,
+ max_total_storage,
+)
+ . = ..()
+ var/static/list/exception_cache = typecacheof(list(/obj/item/fish_tank))
+ exception_hold = exception_cache
+
/datum/storage/backpack/santabag
max_total_storage = 60
max_slots = 21
diff --git a/code/datums/storage/subtypes/duffel_bag.dm b/code/datums/storage/subtypes/duffel_bag.dm
index cfa073da5e513..bb3a236d38b31 100644
--- a/code/datums/storage/subtypes/duffel_bag.dm
+++ b/code/datums/storage/subtypes/duffel_bag.dm
@@ -2,6 +2,16 @@
max_total_storage = 30
max_slots = 21
+/datum/storage/duffel/New(
+ atom/parent,
+ max_slots,
+ max_specific_storage,
+ max_total_storage,
+)
+ . = ..()
+ var/static/list/exception_cache = typecacheof(list(/obj/item/fish_tank))
+ exception_hold = exception_cache
+
// Syndi bags get some FUN extras
// You can fit any 2 bulky objects (assuming they're in the whitelist)
// Should have traitorus stuff in here, not just useful big things
@@ -60,6 +70,9 @@
/obj/item/storage/bag/money,
// Heads!
/obj/item/bodypart/head,
+ // Fish
+ /obj/item/fish,
+ /obj/item/fish_tank,
)
// We keep the type list and the typecache list separate...
diff --git a/code/datums/storage/subtypes/fish_case.dm b/code/datums/storage/subtypes/fish_case.dm
index 47103e931b1f8..e38d55e0e1d2e 100644
--- a/code/datums/storage/subtypes/fish_case.dm
+++ b/code/datums/storage/subtypes/fish_case.dm
@@ -7,7 +7,7 @@
. = ..()
if(!.)
return .
- if(!HAS_TRAIT(to_insert, TRAIT_FISH_CASE_COMPATIBILE))
+ if(!HAS_TRAIT(to_insert, TRAIT_AQUARIUM_CONTENT))
if(messages && user)
user.balloon_alert(user, "can't hold!")
return FALSE
diff --git a/code/datums/votes/map_vote.dm b/code/datums/votes/map_vote.dm
index b4f938a42e451..c5f90f16d1361 100644
--- a/code/datums/votes/map_vote.dm
+++ b/code/datums/votes/map_vote.dm
@@ -10,6 +10,7 @@
default_choices = SSmap_vote.get_valid_map_vote_choices()
/datum/vote/map_vote/create_vote()
+ default_choices = SSmap_vote.get_valid_map_vote_choices()
. = ..()
if(!.)
return FALSE
diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm
index 85e5e74b02fba..fde148c51a8b7 100644
--- a/code/datums/weather/weather.dm
+++ b/code/datums/weather/weather.dm
@@ -51,6 +51,8 @@
var/protect_indoors = FALSE
/// Areas to be affected by the weather, calculated when the weather begins
var/list/impacted_areas = list()
+ /// Areas affected by weather have their blend modes changed
+ var/list/impacted_areas_blend_modes = list()
/// Areas that are protected and excluded from the affected areas.
var/list/protected_areas = list()
/// The list of z-levels that this weather is actively affecting
@@ -102,16 +104,19 @@
SEND_GLOBAL_SIGNAL(COMSIG_WEATHER_TELEGRAPH(type), src)
stage = STARTUP_STAGE
var/list/affectareas = list()
- for(var/V in get_areas(area_type))
- affectareas += V
- for(var/V in protected_areas)
- affectareas -= get_areas(V)
- for(var/V in affectareas)
- var/area/A = V
- if(protect_indoors && !A.outdoors)
+ for(var/area/selected_area as anything in get_areas(area_type))
+ affectareas += selected_area
+ for(var/area/protected_area as anything in protected_areas)
+ affectareas -= get_areas(protected_area)
+ for(var/area/affected_area as anything in affectareas)
+ if(protect_indoors && !affected_area.outdoors)
continue
- if(A.z in impacted_z_levels)
- impacted_areas |= A
+
+ for(var/z in impacted_z_levels)
+ if(length(affected_area.turfs_by_zlevel) >= z && length(affected_area.turfs_by_zlevel[z]))
+ impacted_areas |= affected_area
+ continue
+
weather_duration = rand(weather_duration_lower, weather_duration_upper)
SSweather.processing |= src
update_areas()
@@ -230,8 +235,17 @@
for(var/area/impacted as anything in impacted_areas)
if(length(overlay_cache))
impacted.overlays -= overlay_cache
+ if(impacted_areas_blend_modes[impacted])
+ // revert the blend mode to the old state
+ impacted.blend_mode = impacted_areas_blend_modes[impacted]
+ impacted_areas_blend_modes[impacted] = null
if(length(new_overlay_cache))
impacted.overlays += new_overlay_cache
+ // only change the blend mode if it's not default or overlay
+ if(impacted.blend_mode > BLEND_OVERLAY)
+ // save the old blend mode state
+ impacted_areas_blend_modes[impacted] = impacted.blend_mode
+ impacted.blend_mode = BLEND_OVERLAY
overlay_cache = new_overlay_cache
diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm
index 7d432c1e488da..f9d9cfc612174 100644
--- a/code/datums/weather/weather_types/ash_storm.dm
+++ b/code/datums/weather/weather_types/ash_storm.dm
@@ -12,7 +12,7 @@
weather_duration_upper = 1200
weather_overlay = "ash_storm"
- end_message = span_boldannounce("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.")
+ end_message = span_bolddanger("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.")
end_duration = 300
end_overlay = "light_ash"
diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm
index 2b749cdbc84d1..77aafed4f5dc5 100644
--- a/code/datums/weather/weather_types/snow_storm.dm
+++ b/code/datums/weather/weather_types/snow_storm.dm
@@ -14,7 +14,7 @@
use_glow = FALSE
end_duration = 100
- end_message = span_boldannounce("The snowfall dies down, it should be safe to go outside again.")
+ end_message = span_bolddanger("The snowfall dies down, it should be safe to go outside again.")
area_type = /area
protect_indoors = TRUE
diff --git a/code/datums/wires/mulebot.dm b/code/datums/wires/mulebot.dm
index beb58fb1ce3b4..31bfe164b5494 100644
--- a/code/datums/wires/mulebot.dm
+++ b/code/datums/wires/mulebot.dm
@@ -29,18 +29,24 @@
if(WIRE_MOTOR1, WIRE_MOTOR2)
if(is_cut(WIRE_MOTOR1) && is_cut(WIRE_MOTOR2))
ADD_TRAIT(mule, TRAIT_IMMOBILIZED, MOTOR_LACK_TRAIT)
+ holder.audible_message(span_hear("The motors of [mule] go silent."), null, 1)
else
REMOVE_TRAIT(mule, TRAIT_IMMOBILIZED, MOTOR_LACK_TRAIT)
+ holder.audible_message(span_hear("The motors of [mule] whir to life!"), null, 1)
if(is_cut(WIRE_MOTOR1))
mule.set_varspeed(FAST_MOTOR_SPEED)
+ holder.audible_message(span_hear("The motors of [mule] speed up!"), null, 1)
else if(is_cut(WIRE_MOTOR2))
mule.set_varspeed(AVERAGE_MOTOR_SPEED)
+ holder.audible_message(span_hear("The motors of [mule] whir."), null, 1)
else
mule.set_varspeed(SLOW_MOTOR_SPEED)
+ holder.audible_message(span_hear("The motors of [mule] move gently."), null, 1)
if(WIRE_AVOIDANCE)
if (!isnull(source))
log_combat(source, mule, "[is_cut(WIRE_AVOIDANCE) ? "cut" : "mended"] the MULE safety wire of")
+ holder.audible_message(span_hear("Something inside [mule] clicks ominously!"), null, 1)
/datum/wires/mulebot/on_pulse(wire)
var/mob/living/simple_animal/bot/mulebot/mule = holder
diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm
index a9971f6068c98..2a4af3a781aa0 100644
--- a/code/datums/world_topic.dm
+++ b/code/datums/world_topic.dm
@@ -26,7 +26,7 @@
var/require_comms_key = FALSE
/datum/world_topic/proc/TryRun(list/input)
- key_valid = config && (CONFIG_GET(string/comms_key) == input["key"])
+ key_valid = (CONFIG_GET(string/comms_key) == input["key"]) && CONFIG_GET(string/comms_key) && input["key"]
input -= "key"
if(require_comms_key && !key_valid)
. = "Bad Key"
diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm
index 8209fb93facf3..c52d7c12aaf3a 100644
--- a/code/datums/wounds/bones.dm
+++ b/code/datums/wounds/bones.dm
@@ -61,9 +61,10 @@
/datum/wound/blunt/bone/set_victim(new_victim)
if (victim)
- UnregisterSignal(victim, COMSIG_LIVING_UNARMED_ATTACK)
+ UnregisterSignal(victim, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_FIRED_GUN))
if (new_victim)
RegisterSignal(new_victim, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(attack_with_hurt_hand))
+ RegisterSignal(new_victim, COMSIG_MOB_FIRED_GUN, PROC_REF(firing_with_messed_up_hand))
return ..()
@@ -120,19 +121,49 @@
// With a severe or critical wound, you have a 15% or 30% chance to proc pain on hit
if(prob((severity - 1) * 15))
// And you have a 70% or 50% chance to actually land the blow, respectively
- if(prob(70 - 20 * (severity - 1)))
- to_chat(victim, span_userdanger("The fracture in your [limb.plaintext_zone] shoots with pain as you strike [target]!"))
- limb.receive_damage(brute=rand(1,5))
+ if(HAS_TRAIT(victim, TRAIT_ANALGESIA) || prob(70 - 20 * (severity - 1)))
+ if(!HAS_TRAIT(victim, TRAIT_ANALGESIA))
+ to_chat(victim, span_danger("The fracture in your [limb.plaintext_zone] shoots with pain as you strike [target]!"))
+ victim.apply_damage(rand(1, 5), BRUTE, limb, wound_bonus = CANT_WOUND, wound_clothing = FALSE)
else
victim.visible_message(span_danger("[victim] weakly strikes [target] with [victim.p_their()] broken [limb.plaintext_zone], recoiling from pain!"), \
span_userdanger("You fail to strike [target] as the fracture in your [limb.plaintext_zone] lights up in unbearable pain!"), vision_distance=COMBAT_MESSAGE_RANGE)
INVOKE_ASYNC(victim, TYPE_PROC_REF(/mob, emote), "scream")
victim.Stun(0.5 SECONDS)
- limb.receive_damage(brute=rand(3,7))
+ victim.apply_damage(rand(3, 7), BRUTE, limb, wound_bonus = CANT_WOUND, wound_clothing = FALSE)
return COMPONENT_CANCEL_ATTACK_CHAIN
return NONE
+/// If we're a human who's firing a gun with a broken arm, we might hurt ourselves doing so
+/datum/wound/blunt/bone/proc/firing_with_messed_up_hand(datum/source, obj/item/gun/gun, atom/firing_at, params, zone, bonus_spread_values)
+ SIGNAL_HANDLER
+
+ switch(limb.body_zone)
+ if(BODY_ZONE_L_ARM)
+ // Heavy guns use both hands so they will always get a penalty
+ // (Yes, this means having two broken arms will make heavy weapons SOOO much worse)
+ // Otherwise make sure THIS hand is firing THIS gun
+ if(gun.weapon_weight <= WEAPON_MEDIUM && !IS_LEFT_INDEX(victim.get_held_index_of_item(gun)))
+ return
+
+ if(BODY_ZONE_R_ARM)
+ // Ditto but for right arm
+ if(gun.weapon_weight <= WEAPON_MEDIUM && !IS_RIGHT_INDEX(victim.get_held_index_of_item(gun)))
+ return
+
+ else
+ // This is not arm wound, so we don't care
+ return
+
+ if(gun.recoil > 0 && severity >= WOUND_SEVERITY_SEVERE && prob(25 * (severity - 1)))
+ if(!HAS_TRAIT(victim, TRAIT_ANALGESIA))
+ to_chat(victim, span_danger("The fracture in your [limb.plaintext_zone] explodes with pain as [gun] kicks back!"))
+ victim.apply_damage(rand(1, 3) * (severity - 1) * gun.weapon_weight, BRUTE, limb, wound_bonus = CANT_WOUND, wound_clothing = FALSE)
+
+ if(!HAS_TRAIT(victim, TRAIT_ANALGESIA))
+ bonus_spread_values[MAX_BONUS_SPREAD_INDEX] += (15 * severity * (limb.current_gauze?.splint_factor || 1))
+
/datum/wound/blunt/bone/receive_damage(wounding_type, wounding_dmg, wound_bonus)
if(!victim || wounding_dmg < WOUND_MINIMUM_DAMAGE)
return
@@ -277,12 +308,12 @@
user.visible_message(span_danger("[user] snaps [victim]'s dislocated [limb.plaintext_zone] back into place!"), span_notice("You snap [victim]'s dislocated [limb.plaintext_zone] back into place!"), ignored_mobs=victim)
to_chat(victim, span_userdanger("[user] snaps your dislocated [limb.plaintext_zone] back into place!"))
victim.emote("scream")
- limb.receive_damage(brute=20, wound_bonus=CANT_WOUND)
+ victim.apply_damage(20, BRUTE, limb, wound_bonus = CANT_WOUND)
qdel(src)
else
user.visible_message(span_danger("[user] wrenches [victim]'s dislocated [limb.plaintext_zone] around painfully!"), span_danger("You wrench [victim]'s dislocated [limb.plaintext_zone] around painfully!"), ignored_mobs=victim)
to_chat(victim, span_userdanger("[user] wrenches your dislocated [limb.plaintext_zone] around painfully!"))
- limb.receive_damage(brute=10, wound_bonus=CANT_WOUND)
+ victim.apply_damage(10, BRUTE, limb, wound_bonus = CANT_WOUND)
chiropractice(user)
/// If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent
@@ -296,14 +327,13 @@
user.visible_message(span_danger("[user] snaps [victim]'s dislocated [limb.plaintext_zone] with a sickening crack!"), span_danger("You snap [victim]'s dislocated [limb.plaintext_zone] with a sickening crack!"), ignored_mobs=victim)
to_chat(victim, span_userdanger("[user] snaps your dislocated [limb.plaintext_zone] with a sickening crack!"))
victim.emote("scream")
- limb.receive_damage(brute=25, wound_bonus=30)
+ victim.apply_damage(25, BRUTE, limb, wound_bonus = 30)
else
user.visible_message(span_danger("[user] wrenches [victim]'s dislocated [limb.plaintext_zone] around painfully!"), span_danger("You wrench [victim]'s dislocated [limb.plaintext_zone] around painfully!"), ignored_mobs=victim)
to_chat(victim, span_userdanger("[user] wrenches your dislocated [limb.plaintext_zone] around painfully!"))
- limb.receive_damage(brute=10, wound_bonus=CANT_WOUND)
+ victim.apply_damage(10, BRUTE, limb, wound_bonus = CANT_WOUND)
malpractice(user)
-
/datum/wound/blunt/bone/moderate/treat(obj/item/I, mob/user)
var/scanned = HAS_TRAIT(src, TRAIT_WOUND_SCANNED)
var/self_penalty_mult = user == victim ? 1.5 : 1
@@ -316,18 +346,19 @@
user.visible_message(span_danger("[user] begins [scanned ? "expertly" : ""] resetting [victim]'s [limb.plaintext_zone] with [I]."), span_notice("You begin resetting [victim]'s [limb.plaintext_zone] with [I][scanned ? ", keeping the holo-image's indications in mind" : ""]..."))
if(!do_after(user, treatment_delay, target = victim, extra_checks=CALLBACK(src, PROC_REF(still_exists))))
- return
+ return TRUE
if(victim == user)
- limb.receive_damage(brute=15, wound_bonus=CANT_WOUND)
+ victim.apply_damage(15, BRUTE, limb, wound_bonus = CANT_WOUND)
victim.visible_message(span_danger("[user] finishes resetting [victim.p_their()] [limb.plaintext_zone]!"), span_userdanger("You reset your [limb.plaintext_zone]!"))
else
- limb.receive_damage(brute=10, wound_bonus=CANT_WOUND)
+ victim.apply_damage(10, BRUTE, limb, wound_bonus = CANT_WOUND)
user.visible_message(span_danger("[user] finishes resetting [victim]'s [limb.plaintext_zone]!"), span_nicegreen("You finish resetting [victim]'s [limb.plaintext_zone]!"), ignored_mobs=victim)
to_chat(victim, span_userdanger("[user] resets your [limb.plaintext_zone]!"))
victim.emote("scream")
qdel(src)
+ return TRUE
/*
Severe (Hairline Fracture)
@@ -441,8 +472,8 @@
return TRUE
victim.visible_message(span_notice("[victim] finishes applying [I] to [victim.p_their()] [limb.plaintext_zone], grimacing from the pain!"), span_notice("You finish applying [I] to your [limb.plaintext_zone], and your bones explode in pain!"))
- limb.receive_damage(25, wound_bonus=CANT_WOUND)
- victim.adjustStaminaLoss(100)
+ victim.apply_damage(25, BRUTE, limb, wound_bonus = CANT_WOUND)
+ victim.apply_damage(100, STAMINA)
gelled = TRUE
return TRUE
diff --git a/code/datums/wounds/burns.dm b/code/datums/wounds/burns.dm
index a4ef3bd7b7df7..b3d04c2148573 100644
--- a/code/datums/wounds/burns.dm
+++ b/code/datums/wounds/burns.dm
@@ -159,7 +159,7 @@
if(4 to INFINITY)
bandage_condition = "clean"
- condition += " underneath a dressing of [bandage_condition] [limb.current_gauze.name]"
+ condition += " underneath a dressing of [bandage_condition] [limb.current_gauze.name]."
else
switch(infestation)
if(WOUND_INFECTION_MODERATE to WOUND_INFECTION_SEVERE)
@@ -223,25 +223,13 @@
new burn common procs
*/
-/// if someone is using ointment or mesh on our burns
-/datum/wound/burn/flesh/proc/ointmentmesh(obj/item/stack/medical/I, mob/user)
- user.visible_message(span_notice("[user] begins applying [I] to [victim]'s [limb.plaintext_zone]..."), span_notice("You begin applying [I] to [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone]..."))
- if (I.amount <= 0)
+/// Checks if the wound is in a state that ointment or flesh will help
+/datum/wound/burn/flesh/proc/can_be_ointmented_or_meshed()
+ if(infestation > 0 || sanitization < infestation)
return TRUE
- if(!do_after(user, (user == victim ? I.self_delay : I.other_delay), target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists))))
+ if(flesh_damage > 0 || flesh_healing <= flesh_damage)
return TRUE
-
- limb.heal_damage(I.heal_brute, I.heal_burn)
- user.visible_message(span_green("[user] applies [I] to [victim]."), span_green("You apply [I] to [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone]."))
- I.use(1)
- sanitization += I.sanitization
- flesh_healing += I.flesh_regeneration
-
- if((infestation <= 0 || sanitization >= infestation) && (flesh_damage <= 0 || flesh_healing > flesh_damage))
- to_chat(user, span_notice("You've done all you can with [I], now you must wait for the flesh on [victim]'s [limb.plaintext_zone] to recover."))
- return TRUE
- else
- return try_treating(I, user)
+ return FALSE
/// Paramedic UV penlights
/datum/wound/burn/flesh/proc/uv(obj/item/flashlight/pen/paramedic/I, mob/user)
@@ -258,15 +246,7 @@
return TRUE
/datum/wound/burn/flesh/treat(obj/item/I, mob/user)
- if(istype(I, /obj/item/stack/medical/ointment))
- return ointmentmesh(I, user)
- else if(istype(I, /obj/item/stack/medical/mesh))
- var/obj/item/stack/medical/mesh/mesh_check = I
- if(!mesh_check.is_open)
- to_chat(user, span_warning("You need to open [mesh_check] first."))
- return
- return ointmentmesh(mesh_check, user)
- else if(istype(I, /obj/item/flashlight/pen/paramedic))
+ if(istype(I, /obj/item/flashlight/pen/paramedic))
return uv(I, user)
// people complained about burns not healing on stasis beds, so in addition to checking if it's cured, they also get the special ability to very slowly heal on stasis beds if they have the healing effects stored
diff --git a/code/datums/wounds/cranial_fissure.dm b/code/datums/wounds/cranial_fissure.dm
index 615d0d10eb0e6..8e561cd346c13 100644
--- a/code/datums/wounds/cranial_fissure.dm
+++ b/code/datums/wounds/cranial_fissure.dm
@@ -52,12 +52,10 @@
/datum/wound/cranial_fissure/remove_wound(ignore_limb, replaced)
REMOVE_TRAIT(limb, TRAIT_IMMUNE_TO_CRANIAL_FISSURE, type)
- REMOVE_TRAIT(victim, TRAIT_HAS_CRANIAL_FISSURE, type)
-
- victim.remove_filter(CRANIAL_FISSURE_FILTER_DISPLACEMENT)
-
- UnregisterSignal(victim, COMSIG_MOB_SLIPPED)
-
+ if (!isnull(victim))
+ REMOVE_TRAIT(victim, TRAIT_HAS_CRANIAL_FISSURE, type)
+ victim.remove_filter(CRANIAL_FISSURE_FILTER_DISPLACEMENT)
+ UnregisterSignal(victim, COMSIG_MOB_SLIPPED)
return ..()
/datum/wound/cranial_fissure/proc/on_owner_slipped(mob/source)
diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm
index 6c6eb74ec315b..bb4bc85d8e95f 100644
--- a/code/datums/wounds/pierce.dm
+++ b/code/datums/wounds/pierce.dm
@@ -80,11 +80,12 @@
if (!victim || HAS_TRAIT(victim, TRAIT_STASIS))
return
- set_blood_flow(min(blood_flow, WOUND_SLASH_MAX_BLOODFLOW))
if(limb.can_bleed())
if(victim.bodytemperature < (BODYTEMP_NORMAL - 10))
adjust_blood_flow(-0.1 * seconds_per_tick)
+ if(QDELETED(src))
+ return
if(SPT_PROB(2.5, seconds_per_tick))
to_chat(victim, span_notice("You feel the [LOWER_TEXT(name)] in your [limb.plaintext_zone] firming up from the cold!"))
@@ -92,15 +93,16 @@
adjust_blood_flow(0.25 * seconds_per_tick) // old heparin used to just add +2 bleed stacks per tick, this adds 0.5 bleed flow to all open cuts which is probably even stronger as long as you can cut them first
if(limb.current_gauze)
- adjust_blood_flow(-limb.current_gauze.absorption_rate * gauzed_clot_rate * seconds_per_tick)
- limb.current_gauze.absorption_capacity -= limb.current_gauze.absorption_rate * seconds_per_tick
+ var/gauze_power = limb.current_gauze.absorption_rate
+ limb.seep_gauze(gauze_power * seconds_per_tick)
+ adjust_blood_flow(-gauze_power * gauzed_clot_rate * seconds_per_tick)
- if(blood_flow <= 0)
- qdel(src)
-
-/datum/wound/pierce/bleed/on_stasis(seconds_per_tick, times_fired)
+/datum/wound/pierce/bleed/adjust_blood_flow(adjust_by, minimum)
. = ..()
- if(blood_flow <= 0)
+ if(blood_flow > WOUND_MAX_BLOODFLOW)
+ blood_flow = WOUND_MAX_BLOODFLOW
+ if(blood_flow <= 0 && !QDELETED(src))
+ to_chat(victim, span_green("The holes on your [limb.plaintext_zone] have [!limb.can_bleed() ? "healed up" : "stopped bleeding"]!"))
qdel(src)
/datum/wound/pierce/bleed/check_grab_treatments(obj/item/I, mob/user)
@@ -108,9 +110,7 @@
return TRUE
/datum/wound/pierce/bleed/treat(obj/item/I, mob/user)
- if(istype(I, /obj/item/stack/medical/suture))
- return suture(I, user)
- else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature())
+ if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature())
return tool_cauterize(I, user)
/datum/wound/pierce/bleed/on_xadone(power)
@@ -123,32 +123,6 @@
. = ..()
adjust_blood_flow(-0.025 * reac_volume) // 20u * 0.05 = -1 blood flow, less than with slashes but still good considering smaller bleed rates
-/// If someone is using a suture to close this puncture
-/datum/wound/pierce/bleed/proc/suture(obj/item/stack/medical/suture/I, mob/user)
- var/self_penalty_mult = (user == victim ? 1.4 : 1)
- var/treatment_delay = base_treat_time * self_penalty_mult
-
- if(HAS_TRAIT(src, TRAIT_WOUND_SCANNED))
- treatment_delay *= 0.5
- user.visible_message(span_notice("[user] begins expertly stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I], keeping the holo-image information in mind..."))
- else
- user.visible_message(span_notice("[user] begins stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]..."))
-
- if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists))))
- return TRUE
- var/bleeding_wording = (!limb.can_bleed() ? "holes" : "bleeding")
- user.visible_message(span_green("[user] stitches up some of the [bleeding_wording] on [victim]."), span_green("You stitch up some of the [bleeding_wording] on [user == victim ? "yourself" : "[victim]"]."))
- var/blood_sutured = I.stop_bleeding / self_penalty_mult
- adjust_blood_flow(-blood_sutured)
- limb.heal_damage(I.heal_brute, I.heal_burn)
- I.use(1)
-
- if(blood_flow > 0)
- return try_treating(I, user)
- else
- to_chat(user, span_green("You successfully close the hole in [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone]."))
- return TRUE
-
/// If someone is using either a cautery tool or something with heat to cauterize this pierce
/datum/wound/pierce/bleed/proc/tool_cauterize(obj/item/I, mob/user)
@@ -163,12 +137,16 @@
else
user.visible_message(span_danger("[user] begins cauterizing [victim]'s [limb.plaintext_zone] with [I]..."), span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]..."))
+ playsound(user, 'sound/items/handling/surgery/cautery1.ogg', 75, TRUE)
+
if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists))))
return TRUE
+ playsound(user, 'sound/items/handling/surgery/cautery2.ogg', 75, TRUE)
+
var/bleeding_wording = (!limb.can_bleed() ? "holes" : "bleeding")
user.visible_message(span_green("[user] cauterizes some of the [bleeding_wording] on [victim]."), span_green("You cauterize some of the [bleeding_wording] on [victim]."))
- limb.receive_damage(burn = 2 + severity, wound_bonus = CANT_WOUND)
+ victim.apply_damage(2 + severity, BURN, limb, wound_bonus = CANT_WOUND)
if(prob(30))
victim.emote("scream")
var/blood_cauterized = (0.6 / (self_penalty_mult * improv_penalty_mult))
diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm
index fd3cb4bd7b2b1..2ec5700e03c09 100644
--- a/code/datums/wounds/slash.dm
+++ b/code/datums/wounds/slash.dm
@@ -36,9 +36,6 @@
/// Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better
var/demotes_to
- /// The maximum flow we've had so far
- var/highest_flow
-
/// A bad system I'm using to track the worst scar we earned (since we can demote, we want the biggest our wound has been, not what it was when it was cured (probably moderate))
var/datum/scar/highest_scar
@@ -133,44 +130,23 @@
return BLOOD_FLOW_INCREASING
/datum/wound/slash/flesh/handle_process(seconds_per_tick, times_fired)
-
if (!victim || HAS_TRAIT(victim, TRAIT_STASIS))
return
// in case the victim has the NOBLOOD trait, the wound will simply not clot on its own
if(limb.can_bleed())
- set_blood_flow(min(blood_flow, WOUND_SLASH_MAX_BLOODFLOW))
+ if(clot_rate > 0)
+ adjust_blood_flow(-clot_rate * seconds_per_tick)
+ if(QDELETED(src))
+ return
if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS))
adjust_blood_flow(0.25) // old heparin used to just add +2 bleed stacks per tick, this adds 0.5 bleed flow to all open cuts which is probably even stronger as long as you can cut them first
- //gauze always reduces blood flow, even for non bleeders
if(limb.current_gauze)
- if(clot_rate > 0)
- adjust_blood_flow(-clot_rate * seconds_per_tick)
- adjust_blood_flow(-limb.current_gauze.absorption_rate * seconds_per_tick)
- limb.seep_gauze(limb.current_gauze.absorption_rate * seconds_per_tick)
- //otherwise, only clot if it's a bleeder
- else if(limb.can_bleed())
- adjust_blood_flow(-clot_rate * seconds_per_tick)
-
- if(blood_flow > highest_flow)
- highest_flow = blood_flow
-
- if(blood_flow < minimum_flow)
- if(demotes_to)
- replace_wound(new demotes_to)
- else
- to_chat(victim, span_green("The cut on your [limb.plaintext_zone] has [!limb.can_bleed() ? "healed up" : "stopped bleeding"]!"))
- qdel(src)
-
-/datum/wound/slash/flesh/on_stasis(seconds_per_tick, times_fired)
- if(blood_flow >= minimum_flow)
- return
- if(demotes_to)
- replace_wound(new demotes_to)
- return
- qdel(src)
+ var/gauze_power = limb.current_gauze.absorption_rate
+ limb.seep_gauze(gauze_power * seconds_per_tick)
+ adjust_blood_flow(-gauze_power * seconds_per_tick)
/* BEWARE, THE BELOW NONSENSE IS MADNESS. bones.dm looks more like what I have in mind and is sufficiently clean, don't pay attention to this messiness */
@@ -185,8 +161,6 @@
return las_cauterize(I, user)
else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature())
return tool_cauterize(I, user)
- else if(istype(I, /obj/item/stack/medical/suture))
- return suture(I, user)
/datum/wound/slash/flesh/try_handling(mob/living/user)
if(user.pulling != victim || !HAS_TRAIT(user, TRAIT_WOUND_LICKER) || !victim.try_inject(user, injection_flags = INJECT_TRY_SHOW_ERROR_MESSAGE))
@@ -212,8 +186,7 @@
/// if a felinid is licking this cut to reduce bleeding
/datum/wound/slash/flesh/proc/lick_wounds(mob/living/carbon/human/user)
// transmission is one way patient -> felinid since google said cat saliva is antiseptic or whatever, and also because felinids are already risking getting beaten for this even without people suspecting they're spreading a deathvirus
- for(var/i in victim.diseases)
- var/datum/disease/iter_disease = i
+ for(var/datum/disease/iter_disease as anything in victim.diseases)
if(iter_disease.spread_flags & (DISEASE_SPREAD_SPECIAL | DISEASE_SPREAD_NON_CONTAGIOUS))
continue
user.ForceContractDisease(iter_disease)
@@ -225,18 +198,28 @@
user.visible_message(span_notice("[user] licks the wounds on [victim]'s [limb.plaintext_zone]."), span_notice("You lick some of the wounds on [victim]'s [limb.plaintext_zone]"), ignored_mobs=victim)
to_chat(victim, span_green("[user] licks the wounds on your [limb.plaintext_zone]!"))
+ var/mob/victim_stored = victim
adjust_blood_flow(-0.5)
if(blood_flow > minimum_flow)
try_handling(user)
else if(demotes_to)
- to_chat(user, span_green("You successfully lower the severity of [victim]'s cuts."))
+ to_chat(user, span_green("You successfully lower the severity of [user == victim_stored ? "your" : "[victim_stored]'s"] cuts."))
-/datum/wound/slash/flesh/on_xadone(power)
+/datum/wound/slash/flesh/adjust_blood_flow(adjust_by, minimum)
. = ..()
+ if(blood_flow > WOUND_MAX_BLOODFLOW)
+ blood_flow = WOUND_MAX_BLOODFLOW
+ if(blood_flow < minimum_flow && !QDELETED(src))
+ if(demotes_to)
+ replace_wound(new demotes_to)
+ else
+ to_chat(victim, span_green("The cut on your [limb.plaintext_zone] has [!limb.can_bleed() ? "healed up" : "stopped bleeding"]!"))
+ qdel(src)
- if (limb) // parent can cause us to be removed, so its reasonable to check if we're still applied
- adjust_blood_flow(-0.03 * power) // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick is pretty good for 0 effort
+/datum/wound/slash/flesh/on_xadone(power)
+ . = ..()
+ adjust_blood_flow(-0.03 * power) // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick is pretty good for 0 effort
/datum/wound/slash/flesh/on_synthflesh(reac_volume)
. = ..()
@@ -271,50 +254,29 @@
else
user.visible_message(span_danger("[user] begins cauterizing [victim]'s [limb.plaintext_zone] with [I]..."), span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]..."))
+ playsound(user, 'sound/items/handling/surgery/cautery1.ogg', 75, TRUE)
+
if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists))))
return
+
+ playsound(user, 'sound/items/handling/surgery/cautery2.ogg', 75, TRUE)
+
var/bleeding_wording = (!limb.can_bleed() ? "cuts" : "bleeding")
user.visible_message(span_green("[user] cauterizes some of the [bleeding_wording] on [victim]."), span_green("You cauterize some of the [bleeding_wording] on [victim]."))
- limb.receive_damage(burn = 2 + severity, wound_bonus = CANT_WOUND)
+ victim.apply_damage(2 + severity, BURN, limb, wound_bonus = CANT_WOUND)
if(prob(30))
victim.emote("scream")
var/blood_cauterized = (0.6 / (self_penalty_mult * improv_penalty_mult))
+ var/mob/victim_stored = victim
adjust_blood_flow(-blood_cauterized)
if(blood_flow > minimum_flow)
return try_treating(I, user)
else if(demotes_to)
- to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts."))
+ to_chat(user, span_green("You successfully lower the severity of [user == victim_stored ? "your" : "[victim_stored]'s"] cuts."))
return TRUE
return FALSE
-/// If someone is using a suture to close this cut
-/datum/wound/slash/flesh/proc/suture(obj/item/stack/medical/suture/I, mob/user)
- var/self_penalty_mult = (user == victim ? 1.4 : 1)
- var/treatment_delay = base_treat_time * self_penalty_mult
-
- if(HAS_TRAIT(src, TRAIT_WOUND_SCANNED))
- treatment_delay *= 0.5
- user.visible_message(span_notice("[user] begins expertly stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I], keeping the holo-image information in mind..."))
- else
- user.visible_message(span_notice("[user] begins stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]..."))
-
- if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists))))
- return TRUE
- var/bleeding_wording = (!limb.can_bleed() ? "cuts" : "bleeding")
- user.visible_message(span_green("[user] stitches up some of the [bleeding_wording] on [victim]."), span_green("You stitch up some of the [bleeding_wording] on [user == victim ? "yourself" : "[victim]"]."))
- var/blood_sutured = I.stop_bleeding / self_penalty_mult
- adjust_blood_flow(-blood_sutured)
- limb.heal_damage(I.heal_brute, I.heal_burn)
- I.use(1)
-
- if(blood_flow > minimum_flow)
- return try_treating(I, user)
- else if(demotes_to)
- to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts."))
- return TRUE
- return TRUE
-
/datum/wound/slash/get_limb_examine_description()
return span_warning("The flesh on this limb appears badly lacerated.")
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index b988fa0b6daa8..450a29d9cbd35 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -80,8 +80,8 @@
var/power_light = TRUE
var/power_environ = TRUE
var/power_apc_charge = TRUE
-
- var/has_gravity = FALSE
+ /// The default gravity for the area
+ var/default_gravity = ZERO_GRAVITY
var/parallax_movedir = 0
diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm
index 5ff0143c0a1a9..648ef4c8d3160 100644
--- a/code/game/area/areas/away_content.dm
+++ b/code/game/area/areas/away_content.dm
@@ -8,7 +8,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30"
name = "Strange Location"
icon = 'icons/area/areas_away_missions.dmi'
icon_state = "away"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
ambience_index = AMBIENCE_AWAY
sound_environment = SOUND_ENVIRONMENT_ROOM
area_flags = UNIQUE_AREA
@@ -34,7 +34,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30"
static_lighting = FALSE
base_lighting_alpha = 255
area_flags = UNIQUE_AREA|NOTELEPORT
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
/area/awaymission/secret
area_flags = UNIQUE_AREA|NOTELEPORT|HIDDEN_AREA
@@ -46,7 +46,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30"
outdoors = TRUE
/area/awaymission/secret/unpowered/no_grav
- has_gravity = FALSE
+ default_gravity = ZERO_GRAVITY
/area/awaymission/secret/fullbright
static_lighting = FALSE
diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm
index 28b3496c4e18a..022e0d91c177f 100644
--- a/code/game/area/areas/centcom.dm
+++ b/code/game/area/areas/centcom.dm
@@ -7,7 +7,7 @@
icon_state = "centcom"
static_lighting = TRUE
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = UNIQUE_AREA | NOTELEPORT
flags_1 = NONE
@@ -151,7 +151,7 @@
icon_state = "wizards_den"
static_lighting = TRUE
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = UNIQUE_AREA | NOTELEPORT
flags_1 = NONE
@@ -164,7 +164,7 @@
area_flags = UNIQUE_AREA | NOTELEPORT
static_lighting = FALSE
base_lighting_alpha = 255
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
flags_1 = NONE
//Syndicates
@@ -172,7 +172,7 @@
name = "Syndicate Mothership"
icon_state = "syndie-ship"
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = UNIQUE_AREA | NOTELEPORT
flags_1 = NONE
ambience_index = AMBIENCE_DANGER
@@ -217,7 +217,7 @@
base_lighting_alpha = 255
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
flags_1 = NONE
area_flags = BLOCK_SUICIDE | UNIQUE_AREA
@@ -228,7 +228,7 @@
requires_power = FALSE
static_lighting = FALSE
base_lighting_alpha = 255
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
flags_1 = NONE
area_flags = UNIQUE_AREA | NOTELEPORT | NO_DEATH_MESSAGE | BLOCK_SUICIDE
@@ -273,7 +273,7 @@
name = "\improper Asteroid"
icon_state = "asteroid"
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = UNIQUE_AREA
ambience_index = AMBIENCE_MINING
flags_1 = CAN_BE_DIRTY_1
diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm
index be6db4e077fec..4254e23d62bc6 100644
--- a/code/game/area/areas/mining.dm
+++ b/code/game/area/areas/mining.dm
@@ -2,7 +2,7 @@
/area/mine
icon = 'icons/area/areas_station.dmi'
icon_state = "mining"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = VALID_TERRITORY | UNIQUE_AREA | FLORA_ALLOWED | CULT_PERMITTED
ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
@@ -130,7 +130,7 @@
/area/lavaland
icon = 'icons/area/areas_station.dmi'
icon_state = "mining"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
flags_1 = NONE
area_flags = VALID_TERRITORY | UNIQUE_AREA | FLORA_ALLOWED
sound_environment = SOUND_AREA_LAVALAND
@@ -190,7 +190,7 @@
/area/icemoon
icon = 'icons/area/areas_station.dmi'
icon_state = "mining"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
flags_1 = NONE
area_flags = UNIQUE_AREA | FLORA_ALLOWED
ambience_index = AMBIENCE_ICEMOON
diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm
index 8aa6adc738c4a..00ce0d6f46410 100644
--- a/code/game/area/areas/misc.dm
+++ b/code/game/area/areas/misc.dm
@@ -5,13 +5,12 @@
requires_power = TRUE
always_unpowered = TRUE
static_lighting = FALSE
-
base_lighting_alpha = 255
base_lighting_color = COLOR_STARLIGHT
power_light = FALSE
power_equip = FALSE
power_environ = FALSE
- area_flags = UNIQUE_AREA
+ area_flags = UNIQUE_AREA|NO_GRAVITY
outdoors = TRUE
ambience_index = AMBIENCE_SPACE
flags_1 = CAN_BE_DIRTY_1
@@ -22,7 +21,6 @@
/area/space/nearstation
icon_state = "space_near"
- area_flags = UNIQUE_AREA
static_lighting = TRUE
base_lighting_alpha = 0
base_lighting_color = null
@@ -33,12 +31,12 @@
requires_power = FALSE
static_lighting = FALSE
base_lighting_alpha = 255
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
ambient_buzz = null
/area/misc/testroom
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
// Mobs should be able to see inside the testroom
static_lighting = FALSE
base_lighting_alpha = 255
diff --git a/code/game/area/areas/ruins/_ruins.dm b/code/game/area/areas/ruins/_ruins.dm
index 69e17d365caf8..46cf851b1ebd1 100644
--- a/code/game/area/areas/ruins/_ruins.dm
+++ b/code/game/area/areas/ruins/_ruins.dm
@@ -4,7 +4,7 @@
name = "\improper Unexplored Location"
icon = 'icons/area/areas_ruins.dmi'
icon_state = "ruins"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = HIDDEN_AREA | BLOBS_ALLOWED | UNIQUE_AREA
ambience_index = AMBIENCE_RUINS
flags_1 = CAN_BE_DIRTY_1
@@ -14,7 +14,7 @@
always_unpowered = TRUE
/area/ruin/unpowered/no_grav
- has_gravity = FALSE
+ default_gravity = ZERO_GRAVITY
/area/ruin/powered
requires_power = FALSE
diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm
index 2e25aeb2d6fd4..7484e208872de 100644
--- a/code/game/area/areas/ruins/space.dm
+++ b/code/game/area/areas/ruins/space.dm
@@ -1,7 +1,7 @@
//Space Ruin Parents
/area/ruin/space
- has_gravity = FALSE
+ default_gravity = ZERO_GRAVITY
area_flags = UNIQUE_AREA
/area/ruin/space/unpowered
@@ -11,7 +11,7 @@
power_environ = FALSE
/area/ruin/space/has_grav
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
/area/ruin/space/has_grav/powered
requires_power = FALSE
@@ -529,18 +529,18 @@
/area/ruin/space/djstation
name = "\improper Ruskie DJ Station"
icon_state = "DJ"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
/area/ruin/space/djstation/solars
name = "\improper DJ Station Solars"
icon_state = "DJ"
area_flags = UNIQUE_AREA
- has_gravity = STANDARD_GRAVITY
+ default_gravity = ZERO_GRAVITY
/area/ruin/space/djstation/service
name = "\improper DJ Station Service"
icon_state = "DJ"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
//ABANDONED TELEPORTER
diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm
index f128805924fe8..490a4d60c2ebb 100644
--- a/code/game/area/areas/shuttles.dm
+++ b/code/game/area/areas/shuttles.dm
@@ -6,7 +6,7 @@
name = "Shuttle"
requires_power = FALSE
static_lighting = TRUE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
always_unpowered = FALSE
// Loading the same shuttle map at a different time will produce distinct area instances.
area_flags = NONE
@@ -256,7 +256,7 @@
// ----------- Arena Shuttle
/area/shuttle/shuttle_arena
name = "arena"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
requires_power = FALSE
/obj/effect/forcefield/arena_shuttle
diff --git a/code/game/area/areas/station/science.dm b/code/game/area/areas/station/science.dm
index 2787a4ff87feb..40bdd3786571e 100644
--- a/code/game/area/areas/station/science.dm
+++ b/code/game/area/areas/station/science.dm
@@ -126,4 +126,7 @@
/area/station/science/ordnance/bomb
name = "\improper Ordnance Bomb Site"
icon_state = "ord_boom"
- area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
+ area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED | NO_GRAVITY
+
+/area/station/science/ordnance/bomb/planet
+ area_flags = /area/station/science/ordnance/bomb::area_flags & ~NO_GRAVITY
diff --git a/code/game/area/areas/station/solars.dm b/code/game/area/areas/station/solars.dm
index 57376e2fb17be..8d3a81420e7d7 100644
--- a/code/game/area/areas/station/solars.dm
+++ b/code/game/area/areas/station/solars.dm
@@ -5,11 +5,12 @@
/area/station/solars
icon_state = "panels"
requires_power = FALSE
- area_flags = UNIQUE_AREA
+ area_flags = UNIQUE_AREA|NO_GRAVITY
flags_1 = NONE
ambience_index = AMBIENCE_ENGI
airlock_wires = /datum/wires/airlock/engineering
sound_environment = SOUND_AREA_SPACE
+ default_gravity = ZERO_GRAVITY
/area/station/solars/fore
name = "\improper Fore Solar Array"
@@ -40,10 +41,20 @@
name = "\improper Starboard Bow Solar Array"
icon_state = "panelsFS"
+/area/station/solars/starboard/fore/asteriod
+ name = "\improper Starboard Bow Asteriod Solar Array"
+ icon_state = "panelsFS"
+ area_flags = UNIQUE_AREA // solar areas directly on asteriod have gravity
+
/area/station/solars/port
name = "\improper Port Solar Array"
icon_state = "panelsP"
+/area/station/solars/port/asteriod
+ name = "\improper Port Asteriod Solar Array"
+ icon_state = "panelsP"
+ area_flags = UNIQUE_AREA // solar areas directly on asteriod have gravity
+
/area/station/solars/port/aft
name = "\improper Port Quarter Solar Array"
icon_state = "panelsAP"
diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm
index d981cadaf8274..1d5bc1f936929 100644
--- a/code/game/atom/_atom.dm
+++ b/code/game/atom/_atom.dm
@@ -763,6 +763,7 @@
* Gravity situations:
* * No gravity if you're not in a turf
* * No gravity if this atom is in is a space turf
+ * * No gravity if the area has NO_GRAVITY flag (space, ordnance bomb site, nearstation, solars)
* * Gravity if the area it's in always has gravity
* * Gravity if there's a gravity generator on the z level
* * Gravity if the Z level has an SSMappingTrait for ZTRAIT_GRAVITY
@@ -790,7 +791,7 @@
var/area/turf_area = gravity_turf.loc
- return !gravity_turf.force_no_gravity && (SSmapping.gravity_by_z_level[gravity_turf.z] || turf_area.has_gravity)
+ return (!gravity_turf.force_no_gravity && !(turf_area.area_flags & NO_GRAVITY)) && (SSmapping.gravity_by_z_level[gravity_turf.z] || turf_area.default_gravity)
/**
* Used to set something as 'open' if it's being used as a supplypod
@@ -884,7 +885,7 @@
var/extra_context = ""
var/used_name = name
- if(isliving(user) || isovermind(user) || isaicamera(user) || (ghost_screentips && isobserver(user)))
+ if(isliving(user) || isovermind(user) || iscameramob(user) || (ghost_screentips && isobserver(user)))
var/obj/item/held_item = user.get_active_held_item()
if (user.mob_flags & MOB_HAS_SCREENTIPS_NAME_OVERRIDE)
diff --git a/code/game/atom/atom_act.dm b/code/game/atom/atom_act.dm
index 8565d790612c2..54f023eb86b59 100644
--- a/code/game/atom/atom_act.dm
+++ b/code/game/atom/atom_act.dm
@@ -75,6 +75,20 @@
SEND_SIGNAL(src, COMSIG_ATOM_EMP_ACT, severity, protection)
return protection // Pass the protection value collected here upwards
+/**
+ * Wrapper for bullet_act used for atom-specific calculations, i.e. armor
+ *
+ * @params
+ * * hitting_projectile - projectile
+ * * def_zone - zone hit
+ * * piercing_hit - is this hit piercing or normal?
+ */
+
+/atom/proc/projectile_hit(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE, blocked = null)
+ if (isnull(blocked))
+ blocked = check_projectile_armor(def_zone, hitting_projectile)
+ return bullet_act(hitting_projectile, def_zone, piercing_hit, blocked)
+
/**
* React to a hit by a projectile object
*
@@ -82,11 +96,12 @@
* * hitting_projectile - projectile
* * def_zone - zone hit
* * piercing_hit - is this hit piercing or normal?
+ * * blocked - total armor value to apply to this hit
*/
-/atom/proc/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE)
+/atom/proc/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE, blocked = 0)
SHOULD_CALL_PARENT(TRUE)
- var/sigreturn = SEND_SIGNAL(src, COMSIG_ATOM_PRE_BULLET_ACT, hitting_projectile, def_zone)
+ var/sigreturn = SEND_SIGNAL(src, COMSIG_ATOM_PRE_BULLET_ACT, hitting_projectile, def_zone, piercing_hit, blocked)
if(sigreturn & COMPONENT_BULLET_PIERCED)
return BULLET_ACT_FORCE_PIERCE
if(sigreturn & COMPONENT_BULLET_BLOCKED)
@@ -94,7 +109,7 @@
if(sigreturn & COMPONENT_BULLET_ACTED)
return BULLET_ACT_HIT
- SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, hitting_projectile, def_zone)
+ SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, hitting_projectile, def_zone, piercing_hit, blocked)
if(QDELETED(hitting_projectile)) // Signal deleted it?
return BULLET_ACT_BLOCK
@@ -102,7 +117,7 @@
target = src,
// This armor check only matters for the visuals and messages in on_hit(), it's not actually used to reduce damage since
// only living mobs use armor to reduce damage, but on_hit() is going to need the value no matter what is shot.
- blocked = check_projectile_armor(def_zone, hitting_projectile),
+ blocked = blocked,
pierce_hit = piercing_hit,
)
diff --git a/code/game/atom/atom_color.dm b/code/game/atom/atom_color.dm
index 2508e86f44d90..4b20a00422806 100644
--- a/code/game/atom/atom_color.dm
+++ b/code/game/atom/atom_color.dm
@@ -3,6 +3,9 @@
A System that gives finer control over which atom colour to colour the atom with.
The "highest priority" one is always displayed as opposed to the default of
"whichever was set last is displayed"
+
+ It can also be used for color filters, since some effects (using non-RGB space matrices)
+ are impossible to achieve with just the color variable
*/
/atom
@@ -12,6 +15,8 @@
* its inherent color, the colored paint applied on it, special color effect etc...
*/
var/list/atom_colours
+ /// Currently used color filter - cached because its applied to all of our overlays because BYOND is horrific
+ var/cached_color_filter
///Adds an instance of colour_type to the atom's atom_colours list
/atom/proc/add_atom_colour(coloration, colour_priority)
@@ -22,7 +27,12 @@
return
if(colour_priority > atom_colours.len)
return
- atom_colours[colour_priority] = coloration
+ var/color_type = ATOM_COLOR_TYPE_NORMAL
+ if (islist(coloration))
+ var/list/color_matrix = coloration
+ if (color_matrix["type"] == "color")
+ color_type = ATOM_COLOR_TYPE_FILTER
+ atom_colours[colour_priority] = list(coloration, color_type)
update_atom_colour()
@@ -32,8 +42,13 @@
return
if(colour_priority > atom_colours.len)
return
- if(coloration && atom_colours[colour_priority] != coloration)
- return //if we don't have the expected color (for a specific priority) to remove, do nothing
+ if(coloration && atom_colours[colour_priority])
+ if (atom_colours[colour_priority][ATOM_COLOR_TYPE_INDEX] == ATOM_COLOR_TYPE_NORMAL)
+ if (atom_colours[colour_priority][ATOM_COLOR_VALUE_INDEX] != coloration)
+ return //if we don't have the expected color (for a specific priority) to remove, do nothing
+ else
+ if (!islist(coloration) || !compare_list(coloration, atom_colours[colour_priority][ATOM_COLOR_VALUE_INDEX]["color"]))
+ return
atom_colours[colour_priority] = null
update_atom_colour()
@@ -43,29 +58,69 @@
*/
/atom/proc/is_atom_colour(looking_for_color, min_priority_index = 1, max_priority_index = COLOUR_PRIORITY_AMOUNT)
// make sure uppertext hex strings don't mess with LOWER_TEXT hex strings
- looking_for_color = LOWER_TEXT(looking_for_color)
+ if (!islist(looking_for_color))
+ looking_for_color = LOWER_TEXT(looking_for_color)
if(!LAZYLEN(atom_colours))
// no atom colors list has been set up, just check the color var
- return LOWER_TEXT(color) == looking_for_color
+ if (!islist(color))
+ return LOWER_TEXT(color) == looking_for_color
+ if (!islist(looking_for_color))
+ return FALSE
+ return compare_list(color, looking_for_color)
for(var/i in min_priority_index to max_priority_index)
- if(LOWER_TEXT(atom_colours[i]) == looking_for_color)
+ if (!atom_colours[i])
+ continue
+
+ if (!islist(looking_for_color))
+ if (islist(atom_colours[i][ATOM_COLOR_VALUE_INDEX]))
+ continue
+
+ if (LOWER_TEXT(atom_colours[i][ATOM_COLOR_VALUE_INDEX]) == looking_for_color)
+ return TRUE
+
+ continue
+
+ var/compared_matrix = atom_colours[i][ATOM_COLOR_VALUE_INDEX]
+ if (atom_colours[i][ATOM_COLOR_TYPE_INDEX] == ATOM_COLOR_TYPE_FILTER)
+ compared_matrix = atom_colours[i][ATOM_COLOR_VALUE_INDEX]["color"]
+
+ if (compare_list(looking_for_color, compared_matrix))
return TRUE
return FALSE
///Resets the atom's color to null, and then sets it to the highest priority colour available
/atom/proc/update_atom_colour()
+ var/old_filter = cached_color_filter
color = null
- if(!atom_colours)
+ cached_color_filter = null
+ remove_filter(ATOM_PRIORITY_COLOR_FILTER)
+ REMOVE_KEEP_TOGETHER(src, ATOM_COLOR_TRAIT)
+
+ if (!atom_colours)
+ if (old_filter)
+ update_appearance()
return
- for(var/checked_color in atom_colours)
- if(islist(checked_color))
- var/list/color_list = checked_color
- if(color_list.len)
- color = color_list
- return
- else if(checked_color)
- color = checked_color
- return
+
+ for (var/list/checked_color in atom_colours)
+ if (checked_color[ATOM_COLOR_TYPE_INDEX] == ATOM_COLOR_TYPE_FILTER)
+ add_filter(ATOM_PRIORITY_COLOR_FILTER, ATOM_PRIORITY_COLOR_FILTER_PRIORITY, checked_color[ATOM_COLOR_VALUE_INDEX])
+ cached_color_filter = checked_color[ATOM_COLOR_VALUE_INDEX]
+ break
+
+ if (length(checked_color[ATOM_COLOR_VALUE_INDEX]))
+ color = checked_color[ATOM_COLOR_VALUE_INDEX]
+ break
+
+ ADD_KEEP_TOGETHER(src, ATOM_COLOR_TRAIT)
+ if (cached_color_filter != old_filter)
+ update_appearance()
+
+/// Same as update_atom_color, but simplifies overlay coloring
+/atom/proc/color_atom_overlay(mutable_appearance/overlay)
+ overlay.color = color
+ if (!cached_color_filter)
+ return overlay
+ return filter_appearance_recursive(overlay, cached_color_filter)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 26881c3551e5a..b4a780f9adfbb 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -1140,6 +1140,7 @@
pulledby.stop_pulling()
var/same_loc = oldloc == destination
+ var/movement_successful = TRUE
var/area/old_area = get_area(oldloc)
var/area/destarea = get_area(destination)
var/movement_dir = get_dir(src, destination)
@@ -1148,7 +1149,13 @@
loc = destination
- if(!same_loc)
+ if(!same_loc && loc == oldloc)
+ // when attempting to move an atom A into an atom B which already contains A, BYOND seems
+ // to silently refuse to move A to the new loc. This can really break stuff (see #77067)
+ stack_trace("Attempt to move [src] to [destination] was rejected by BYOND, possibly due to cyclic contents")
+ movement_successful = FALSE
+
+ if(movement_successful && !same_loc)
if(is_multi_tile && isturf(destination))
var/list/new_locs = block(
destination,
@@ -1177,7 +1184,7 @@
if(destarea && old_area != destarea)
destarea.Entered(src, old_area)
- . = TRUE
+ . = movement_successful
//If no destination, move the atom into nullspace (don't do this unless you know what you're doing)
else
@@ -1275,12 +1282,12 @@
/// Only moves the object if it's under no gravity
/// Accepts the direction to move, if the push should be instant, and an optional parameter to fine tune the start delay
/// Drift force determines how much acceleration should be applied. Controlled cap, if set, will ensure that if the object was moving slower than the cap before, it cannot accelerate past the cap from this move.
-/atom/movable/proc/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 1 NEWTONS, controlled_cap = null)
+/atom/movable/proc/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 1 NEWTONS, controlled_cap = null, force_loop = TRUE)
if(!isturf(loc) || Process_Spacemove(angle2dir(inertia_angle), continuous_move = TRUE))
return FALSE
if (!isnull(drift_handler))
- if (drift_handler.newtonian_impulse(inertia_angle, start_delay, drift_force, controlled_cap))
+ if (drift_handler.newtonian_impulse(inertia_angle, start_delay, drift_force, controlled_cap, force_loop))
return TRUE
new /datum/drift_handler(src, inertia_angle, instant, start_delay, drift_force)
@@ -1323,6 +1330,7 @@
step(src, hitting_atom.dir)
return ..()
+// Calls throw_at after checking that the move strength is greater than the thrown atom's move resist. Identical args.
/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = MOVE_FORCE_STRONG, gentle = FALSE)
if((force < (move_resist * MOVE_FORCE_THROW_RATIO)) || (move_resist == INFINITY))
return
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 3a43db0bbbd6a..f583efc0ca5b8 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -73,7 +73,7 @@
. = ..()
if(!new_viewer || hud_users_all_z_levels.len != 1)
return
- for(var/mob/eye/ai_eye/eye as anything in GLOB.aiEyes)
+ for(var/mob/eye/camera/ai/eye as anything in GLOB.camera_eyes)
eye.update_ai_detect_hud()
/datum/atom_hud/data/malf_apc
@@ -171,8 +171,7 @@ Medical HUD! Basic mode needs suit sensors on.
return
holder.icon_state = "hud[RoundHealth(src)]"
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
//for carbon suit sensors
/mob/living/carbon/med_hud_set_health()
@@ -184,8 +183,7 @@ Medical HUD! Basic mode needs suit sensors on.
if (isnull(holder))
return
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH)))
holder.icon_state = "huddead"
else
@@ -196,9 +194,8 @@ Medical HUD! Basic mode needs suit sensors on.
if (isnull(holder))
return
- var/icon/I = icon(icon, icon_state, dir)
var/virus_threat = check_virus()
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(HAS_TRAIT(src, TRAIT_XENO_HOST))
holder.icon_state = "hudxeno"
else if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH)))
@@ -242,8 +239,7 @@ FAN HUDs! For identifying other fans on-sight.
/mob/living/carbon/human/proc/fan_hud_set_fandom()
var/image/holder = hud_list[FAN_HUD]
- var/icon/hud_icon = icon(icon, icon_state, dir)
- holder.pixel_y = hud_icon.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.icon_state = "hudfan_no"
var/obj/item/clothing/under/undershirt = w_uniform
@@ -273,8 +269,7 @@ Security HUDs! Basic mode shows only the job.
/mob/living/carbon/human/proc/sec_hud_set_ID()
var/image/holder = hud_list[ID_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
var/sechud_icon_state = wear_id?.get_sechud_job_icon_state()
if(!sechud_icon_state || HAS_TRAIT(src, TRAIT_UNKNOWN))
sechud_icon_state = "hudno_id"
@@ -294,24 +289,21 @@ Security HUDs! Basic mode shows only the job.
switch(security_slot)
if(1)
holder = hud_list[IMPSEC_FIRST_HUD]
- var/icon/IC = icon(icon, icon_state, dir)
- holder.pixel_y = IC.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.icon_state = current_implant.hud_icon_state
set_hud_image_active(IMPSEC_FIRST_HUD)
security_slot++
if(2) //Theoretically if we somehow get multiple sec implants, whatever the most recently implanted implant is will take over the 2nd position
holder = hud_list[IMPSEC_SECOND_HUD]
- var/icon/IC = icon(icon, icon_state, dir)
- holder.pixel_y = IC.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.pixel_x = initial(holder.pixel_x) + (ICON_SIZE_X / 4 - 1) //Adds an offset that mirrors the hud blip to the other side of the mob.
holder.icon_state = current_implant.hud_icon_state
set_hud_image_active(IMPSEC_SECOND_HUD)
if(HAS_TRAIT(src, TRAIT_MINDSHIELD))
holder = hud_list[IMPLOYAL_HUD]
- var/icon/IC = icon(icon, icon_state, dir)
- holder.pixel_y = IC.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.icon_state = "hud_imp_loyal"
set_hud_image_active(IMPLOYAL_HUD)
@@ -321,8 +313,7 @@ Security HUDs! Basic mode shows only the job.
return
var/image/holder = hud_list[WANTED_HUD]
- var/icon/sec_icon = icon(icon, icon_state, dir)
- holder.pixel_y = sec_icon.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if (HAS_TRAIT(src, TRAIT_ALWAYS_WANTED))
holder.icon_state = "hudwanted"
@@ -398,8 +389,7 @@ Diagnostic HUDs!
//Sillycone hooks
/mob/living/silicon/proc/diag_hud_set_health()
var/image/holder = hud_list[DIAG_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(stat == DEAD)
holder.icon_state = "huddiagdead"
else
@@ -407,8 +397,7 @@ Diagnostic HUDs!
/mob/living/silicon/proc/diag_hud_set_status()
var/image/holder = hud_list[DIAG_STAT_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
switch(stat)
if(CONSCIOUS)
holder.icon_state = "hudstat"
@@ -420,8 +409,7 @@ Diagnostic HUDs!
//Borgie battery tracking!
/mob/living/silicon/robot/proc/diag_hud_set_borgcell()
var/image/holder = hud_list[DIAG_BATT_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(cell)
var/chargelvl = (cell.charge/cell.maxcharge)
holder.icon_state = "hudbatt[RoundDiagBar(chargelvl)]"
@@ -431,8 +419,7 @@ Diagnostic HUDs!
//borg-AI shell tracking
/mob/living/silicon/robot/proc/diag_hud_set_aishell() //Shows tracking beacons on the mech
var/image/holder = hud_list[DIAG_TRACK_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(!shell) //Not an AI shell
holder.icon_state = null
set_hud_image_inactive(DIAG_TRACK_HUD)
@@ -446,8 +433,7 @@ Diagnostic HUDs!
//AI side tracking of AI shell control
/mob/living/silicon/ai/proc/diag_hud_set_deployed() //Shows tracking beacons on the mech
var/image/holder = hud_list[DIAG_TRACK_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(!deployed_shell)
holder.icon_state = null
set_hud_image_inactive(DIAG_TRACK_HUD)
@@ -460,15 +446,13 @@ Diagnostic HUDs!
~~~~~~~~~~~~~~~~~~~~~*/
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechhealth()
var/image/holder = hud_list[DIAG_MECH_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.icon_state = "huddiag[RoundDiagBar(atom_integrity/max_integrity)]"
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechcell()
var/image/holder = hud_list[DIAG_BATT_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(cell)
var/chargelvl = cell.charge/cell.maxcharge
holder.icon_state = "hudbatt[RoundDiagBar(chargelvl)]"
@@ -477,8 +461,7 @@ Diagnostic HUDs!
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechstat()
var/image/holder = hud_list[DIAG_STAT_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(internal_damage)
holder.icon_state = "hudwarn"
set_hud_image_active(DIAG_STAT_HUD)
@@ -489,8 +472,7 @@ Diagnostic HUDs!
///Shows tracking beacons on the mech
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechtracking()
var/image/holder = hud_list[DIAG_TRACK_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
var/new_icon_state //This var exists so that the holder's icon state is set only once in the event of multiple mech beacons.
for(var/obj/item/mecha_parts/mecha_tracking/T in trackers)
if(T.ai_beacon) //Beacon with AI uplink
@@ -503,8 +485,7 @@ Diagnostic HUDs!
///Shows inbuilt camera on the mech; if the camera's view range was affected by an EMP, shows a red blip while it's affected
/obj/vehicle/sealed/mecha/proc/diag_hud_set_camera()
var/image/holder = hud_list[DIAG_CAMERA_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(chassis_camera?.is_emp_scrambled)
holder.icon_state = "hudcamera_empd"
return
@@ -515,14 +496,12 @@ Diagnostic HUDs!
~~~~~~~~~~*/
/mob/living/simple_animal/bot/proc/diag_hud_set_bothealth()
var/image/holder = hud_list[DIAG_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]"
/mob/living/simple_animal/bot/proc/diag_hud_set_botstat() //On (With wireless on or off), Off, EMP'ed
var/image/holder = hud_list[DIAG_STAT_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(bot_mode_flags & BOT_MODE_ON)
holder.icon_state = "hudstat"
else if(stat) //Generally EMP causes this
@@ -532,8 +511,7 @@ Diagnostic HUDs!
/mob/living/simple_animal/bot/proc/diag_hud_set_botmode() //Shows a bot's current operation
var/image/holder = hud_list[DIAG_BOT_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(client) //If the bot is player controlled, it will not be following mode logic!
holder.icon_state = "hudsentient"
return
@@ -541,7 +519,7 @@ Diagnostic HUDs!
switch(mode)
if(BOT_SUMMON, BOT_RESPONDING) //Responding to PDA or AI summons
holder.icon_state = "hudcalled"
- if(BOT_CLEANING, BOT_REPAIRING, BOT_HEALING) //Cleanbot cleaning, Floorbot fixing, or Medibot Healing
+ if(BOT_CLEANING, BOT_HEALING) //Cleanbot cleaning, repairbot fixing, or Medibot Healing
holder.icon_state = "hudworking"
if(BOT_PATROL, BOT_START_PATROL) //Patrol mode
holder.icon_state = "hudpatrol"
@@ -554,13 +532,13 @@ Diagnostic HUDs!
/mob/living/simple_animal/bot/mulebot/proc/diag_hud_set_mulebotcell()
var/image/holder = hud_list[DIAG_BATT_HUD]
- var/icon/I = icon(icon, icon_state, dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(cell)
var/chargelvl = (cell.charge/cell.maxcharge)
holder.icon_state = "hudbatt[RoundDiagBar(chargelvl)]"
else
holder.icon_state = "hudnobatt"
+
/*~~~~~~~~~~~~
Airlocks!
~~~~~~~~~~~~~*/
@@ -579,3 +557,21 @@ Diagnostic HUDs!
holder.loc = get_turf(src)
SET_PLANE(holder,ABOVE_LIGHTING_PLANE,src)
set_hud_image_active(MALF_APC_HUD)
+
+#define CACHED_WIDTH_INDEX "width"
+#define CACHED_HEIGHT_INDEX "height"
+
+/atom/proc/get_cached_width()
+ if (isnull(icon))
+ return 0
+ var/list/dimensions = get_icon_dimensions(icon)
+ return dimensions[CACHED_WIDTH_INDEX]
+
+/atom/proc/get_cached_height()
+ if (isnull(icon))
+ return 0
+ var/list/dimensions = get_icon_dimensions(icon)
+ return dimensions[CACHED_HEIGHT_INDEX]
+
+#undef CACHED_WIDTH_INDEX
+#undef CACHED_HEIGHT_INDEX
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index ed9691799ffc0..b962a902f17f4 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -96,61 +96,62 @@
layer = BELOW_OBJ_LAYER //keeps shit coming out of the machine from ending up underneath it.
flags_ricochet = RICOCHET_HARD
receive_ricochet_chance_mod = 0.3
-
anchored = TRUE
interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT
blocks_emissive = EMISSIVE_BLOCK_GENERIC
initial_language_holder = /datum/language_holder/speaking_machine
+ armor_type = /datum/armor/obj_machinery
+ ///see code/__DEFINES/stat.dm
var/machine_stat = NONE
+ ///see code/__DEFINES/machines.dm
var/use_power = IDLE_POWER_USE
- //0 = dont use power
- //1 = use idle_power_usage
- //2 = use active_power_usage
///the amount of static power load this machine adds to its area's power_usage list when use_power = IDLE_POWER_USE
var/idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION
///the amount of static power load this machine adds to its area's power_usage list when use_power = ACTIVE_POWER_USE
var/active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION
///the current amount of static power usage this machine is taking from its area
var/static_power_usage = 0
+ //AREA_USAGE_EQUIP,AREA_USAGE_ENVIRON or AREA_USAGE_LIGHT
var/power_channel = AREA_USAGE_EQUIP
- //AREA_USAGE_EQUIP,AREA_USAGE_ENVIRON or AREA_USAGE_LIGHT
///A combination of factors such as having power, not being broken and so on. Boolean.
var/is_operational = TRUE
- var/wire_compatible = FALSE
-
- var/list/component_parts = null //list of all the parts used to build it, if made from certain kinds of frames.
+ ///list of all the parts used to build it, if made from certain kinds of frames.
+ var/list/component_parts = null
+ ///Is the machines maintainence panel open.
var/panel_open = FALSE
+ ///Is the machine open or closed
var/state_open = FALSE
- var/critical_machine = FALSE //If this machine is critical to station operation and should have the area be excempted from power failures.
- var/list/occupant_typecache //if set, turned into typecache in Initialize, other wise, defaults to mob/living typecache
+ ///If this machine is critical to station operation and should have the area be excempted from power failures.
+ var/critical_machine = FALSE
+ ///if set, turned into typecache in Initialize, other wise, defaults to mob/living typecache
+ var/list/occupant_typecache
+ ///The mob that is sealed inside the machine
var/atom/movable/occupant = null
- /// Viable flags to go here are START_PROCESSING_ON_INIT, or START_PROCESSING_MANUALLY. See code\__DEFINES\machines.dm for more information on these flags.
+ ///Viable flags to go here are START_PROCESSING_ON_INIT, or START_PROCESSING_MANUALLY. See code\__DEFINES\machines.dm for more information on these flags.
var/processing_flags = START_PROCESSING_ON_INIT
- /// What subsystem this machine will use, which is generally SSmachines or SSfastprocess. By default all machinery use SSmachines. This fires a machine's process() roughly every 2 seconds.
+ ///What subsystem this machine will use, which is generally SSmachines or SSfastprocess. By default all machinery use SSmachines. This fires a machine's process() roughly every 2 seconds.
var/subsystem_type = /datum/controller/subsystem/machines
- var/obj/item/circuitboard/circuit // Circuit to be created and inserted when the machinery is created
-
- var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN|INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_OPEN_SILICON
- var/fair_market_price = 69
- var/market_verb = "Customer"
+ ///Circuit to be created and inserted when the machinery is created
+ var/obj/item/circuitboard/circuit
+ ///See code/DEFINES/interaction_flags.dm
+ var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON
+ ///The department we are paying to use this machine
var/payment_department = ACCOUNT_ENG
-
+ ///Used in NAP violation, pay fine
+ var/fair_market_price = 5
///Is this machine currently in the atmos machinery queue?
var/atmos_processing = FALSE
- /// world.time of last use by [/mob/living]
+ ///world.time of last use by [/mob/living]
var/last_used_time = 0
- /// Mobtype of last user. Typecast to [/mob/living] for initial() usage
+ ///Mobtype of last user. Typecast to [/mob/living] for initial() usage
var/mob/living/last_user_mobtype
- /// Do we want to hook into on_enter_area and on_exit_area?
- /// Disables some optimizations
+ ///Do we want to hook into on_enter_area and on_exit_area?
+ ///Disables some optimizations
var/always_area_sensitive = FALSE
- ///Multiplier for power consumption.
- var/machine_power_rectifier = 1
- /// What was our power state the last time we updated its appearance?
- /// TRUE for on, FALSE for off, -1 for never checked
+ ///What was our power state the last time we updated its appearance?
+ ///TRUE for on, FALSE for off, -1 for never checked
var/appearance_power_state = -1
- armor_type = /datum/armor/obj_machinery
/datum/armor/obj_machinery
melee = 25
@@ -187,15 +188,6 @@
SHOULD_NOT_OVERRIDE(TRUE)
post_machine_initialize()
-/obj/machinery/Destroy(force)
- SSmachines.unregister_machine(src)
- end_processing()
-
- clear_components()
- unset_static_power()
-
- return ..()
-
/**
* Called in LateInitialize meant to be the machine replacement to it
* This sets up power for the machine and requires parent be called,
@@ -203,13 +195,25 @@
* This is the proc to override if you want to do anything in LateInitialize.
*/
/obj/machinery/proc/post_machine_initialize()
+ PROTECTED_PROC(TRUE)
SHOULD_CALL_PARENT(TRUE)
+
power_change()
if(use_power == NO_POWER_USE)
return
update_current_power_usage()
setup_area_power_relationship()
+
+/obj/machinery/Destroy(force)
+ SSmachines.unregister_machine(src)
+ end_processing()
+
+ clear_components()
+ unset_static_power()
+
+ return ..()
+
/**
* proc to call when the machine starts to require power after a duration of not requiring power
* sets up power related connections to its area if it exists and becomes area sensitive
@@ -271,19 +275,16 @@
SEND_SIGNAL(src, COMSIG_MACHINERY_SET_OCCUPANT, new_occupant)
occupant = new_occupant
-/// Helper proc for telling a machine to start processing with the subsystem type that is located in its `subsystem_type` var.
+/// Helper proc for telling a machine to start processing
/obj/machinery/proc/begin_processing()
var/datum/controller/subsystem/processing/subsystem = locate(subsystem_type) in Master.subsystems
START_PROCESSING(subsystem, src)
-/// Helper proc for telling a machine to stop processing with the subsystem type that is located in its `subsystem_type` var.
+/// Helper proc for telling a machine to stop processing
/obj/machinery/proc/end_processing()
var/datum/controller/subsystem/processing/subsystem = locate(subsystem_type) in Master.subsystems
STOP_PROCESSING(subsystem, src)
-/obj/machinery/proc/locate_machinery()
- return
-
///Early process for machines added to SSmachines.processing_early to prioritize power draw
/obj/machinery/proc/process_early()
set waitfor = FALSE
@@ -303,6 +304,8 @@
///Called when we want to change the value of the machine_stat variable. Holds bitflags.
/obj/machinery/proc/set_machine_stat(new_value)
+ SHOULD_NOT_OVERRIDE(TRUE)
+
if(new_value == machine_stat)
return
. = machine_stat
@@ -312,6 +315,8 @@
///Called when the value of `machine_stat` changes, so we can react to it.
/obj/machinery/proc/on_set_machine_stat(old_value)
+ PROTECTED_PROC(TRUE)
+
//From off to on.
if((old_value & (NOPOWER|BROKEN|MAINT)) && !(machine_stat & (NOPOWER|BROKEN|MAINT)))
set_is_operational(TRUE)
@@ -335,13 +340,6 @@
remove_all_languages(source = LANGUAGE_EMP)
grant_random_uncommon_language(source = LANGUAGE_EMP)
-/obj/machinery/base_item_interaction(mob/living/user, obj/item/tool, list/modifiers)
- //takes priority in case material container or other atoms that hook onto item interaction signals won't give it a chance
- if(istype(tool, /obj/item/storage/part_replacer))
- return tool.interact_with_atom(src, user, modifiers)
-
- return ..()
-
/**
* Opens the machine.
*
@@ -496,6 +494,7 @@
///internal proc that removes all static power usage from the current area
/obj/machinery/proc/unset_static_power()
SHOULD_NOT_OVERRIDE(TRUE)
+
var/old_usage = static_power_usage
var/area/our_area = get_area(src)
@@ -582,6 +581,8 @@
///Called when we want to change the value of the `is_operational` variable. Boolean.
/obj/machinery/proc/set_is_operational(new_value)
+ SHOULD_NOT_OVERRIDE(TRUE)
+
if(new_value == is_operational)
return
. = is_operational
@@ -591,10 +592,14 @@
///Called when the value of `is_operational` changes, so we can react to it.
/obj/machinery/proc/on_set_is_operational(old_value)
+ PROTECTED_PROC(TRUE)
+
return
///Called when we want to change the value of the `panel_open` variable. Boolean.
/obj/machinery/proc/set_panel_open(new_value)
+ SHOULD_NOT_OVERRIDE(TRUE)
+
if(panel_open == new_value)
return
var/old_value = panel_open
@@ -603,10 +608,14 @@
///Called when the value of `panel_open` changes, so we can react to it.
/obj/machinery/proc/on_set_panel_open(old_value)
+ PROTECTED_PROC(TRUE)
+
return
/// Toggles the panel_open var. Defined for convienience
/obj/machinery/proc/toggle_panel_open()
+ SHOULD_NOT_OVERRIDE(TRUE)
+
set_panel_open(!panel_open)
/obj/machinery/can_interact(mob/user)
@@ -662,7 +671,14 @@
return TRUE // If we passed all of those checks, woohoo! We can interact with this machine.
+/**
+ * Checks for NAP non aggression principle, an anarcho capitalist event triggered by admins
+ * where using machines cost money
+ */
/obj/machinery/proc/check_nap_violations()
+ PROTECTED_PROC(TRUE)
+ SHOULD_NOT_OVERRIDE(TRUE)
+
if(!SSeconomy.full_ancap)
return TRUE
if(!occupant || state_open)
@@ -670,16 +686,16 @@
var/mob/living/occupant_mob = occupant
var/obj/item/card/id/occupant_id = occupant_mob.get_idcard(TRUE)
if(!occupant_id)
- say("[market_verb] NAP Violation: No ID card found.")
+ say("Customer NAP Violation: No ID card found.")
nap_violation(occupant_mob)
return FALSE
var/datum/bank_account/insurance = occupant_id.registered_account
if(!insurance)
- say("[market_verb] NAP Violation: No bank account found.")
+ say("Customer NAP Violation: No bank account found.")
nap_violation(occupant_mob)
return FALSE
if(!insurance.adjust_money(-fair_market_price))
- say("[market_verb] NAP Violation: Unable to pay.")
+ say("Customer NAP Violation: Unable to pay.")
nap_violation(occupant_mob)
return FALSE
var/datum/bank_account/department_account = SSeconomy.get_dep_account(payment_department)
@@ -687,7 +703,15 @@
department_account.adjust_money(fair_market_price)
return TRUE
+/**
+ * Actions to take in case of NAP violation
+ * Arguments
+ *
+ * * mob/violator - the mob who violated the NAP aggrement
+ */
/obj/machinery/proc/nap_violation(mob/violator)
+ PROTECTED_PROC(TRUE)
+
return
////////////////////////////////////////////////////////////////////////////////////////////
@@ -743,13 +767,10 @@
/obj/machinery/attack_hulk(mob/living/carbon/user)
. = ..()
- var/obj/item/bodypart/arm = user.hand_bodyparts[user.active_hand_index]
- if(!arm)
- return
- if(arm.bodypart_disabled)
+ var/obj/item/bodypart/arm = user.get_active_hand()
+ if(!arm || arm.bodypart_disabled)
return
- var/damage = damage_deflection * 0.1
- arm.receive_damage(brute=damage, wound_bonus = CANT_WOUND)
+ user.apply_damage(damage_deflection * 0.1, BRUTE, arm, wound_bonus = CANT_WOUND)
/obj/machinery/attack_robot(mob/user)
if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !isAdminGhostAI(user))
@@ -798,10 +819,14 @@
if(SEND_SIGNAL(user, COMSIG_TRY_USE_MACHINE, src) & COMPONENT_CANT_USE_MACHINE_TOOLS)
return ITEM_INTERACT_BLOCKING
+ //takes priority in case material container or other atoms that hook onto item interaction signals won't give it a chance
+ if(istype(tool, /obj/item/storage/part_replacer))
+ update_last_used(user)
+ return tool.interact_with_atom(src, user, modifiers)
+
. = ..()
if(.)
update_last_used(user)
- return .
/obj/machinery/_try_interact(mob/user)
if((interaction_flags_machine & INTERACT_MACHINE_WIRES_IF_OPEN) && panel_open && (attempt_wire_interaction(user) == WIRE_INTERACTION_BLOCK))
@@ -835,6 +860,8 @@
SEND_SIGNAL(src, COMSIG_MACHINERY_REFRESH_PARTS)
/obj/machinery/proc/default_pry_open(obj/item/crowbar, close_after_pry = FALSE, open_density = FALSE, closed_density = TRUE)
+ PROTECTED_PROC(TRUE)
+
. = !(state_open || panel_open || is_operational) && crowbar.tool_behaviour == TOOL_CROWBAR
if(!.)
return
@@ -845,6 +872,8 @@
close_machine(density_to_set = closed_density)
/obj/machinery/proc/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel = 0, custom_deconstruct = FALSE)
+ PROTECTED_PROC(TRUE)
+
. = (panel_open || ignore_panel) && crowbar.tool_behaviour == TOOL_CROWBAR
if(!. || custom_deconstruct)
return
diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index 029f4a17ea99b..eb66e140d98fb 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -34,7 +34,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
///If true, researched nodes will be announced to the appropriate channels
var/announce_research_node = TRUE
/// The text that we send when announcing researched nodes.
- var/node_message = "The '%NODE' techweb node has been researched"
+ var/node_message = "The %NODE techweb node has been researched"
/obj/machinery/announcement_system/Initialize(mapload)
. = ..()
@@ -164,7 +164,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
newhead = new_message
usr.log_message("updated the head announcement to: [new_message]", LOG_GAME)
if("node_message")
- var/new_message = trim(html_encode(param["new_text"]), MAX_MESSAGE_LEN)
+ var/new_message = trim(html_encode(param["newText"]), MAX_MESSAGE_LEN)
if(new_message)
node_message = new_message
usr.log_message("updated the researched node announcement to: [node_message]", LOG_GAME)
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 7b66872f52bb1..aa93bbb431d20 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -12,6 +12,7 @@
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02
resistance_flags = LAVA_PROOF | FIRE_PROOF
interaction_flags_machine = parent_type::interaction_flags_machine | INTERACT_MACHINE_OPEN
+ mouse_over_pointer = MOUSE_HAND_POINTER
///Icon suffix for the skin of the front pannel that is added to base_icon_state
var/skin = ""
///Whether it is possible to change the panel skin
diff --git a/code/game/machinery/civilian_bounties.dm b/code/game/machinery/civilian_bounties.dm
index d8c8a98caef77..dcd967e082e5f 100644
--- a/code/game/machinery/civilian_bounties.dm
+++ b/code/game/machinery/civilian_bounties.dm
@@ -84,10 +84,16 @@
return FALSE
status_report = "Civilian Bounty: "
var/obj/machinery/piratepad/civilian/pad = pad_ref?.resolve()
- for(var/atom/movable/AM in get_turf(pad))
- if(AM == pad)
+ for(var/atom/movable/possible_shippable in get_turf(pad))
+ if(possible_shippable == pad)
continue
- if(inserted_scan_id.registered_account.civilian_bounty.applies_to(AM))
+ if(possible_shippable.flags_1 & HOLOGRAM_1)
+ continue
+ if(isitem(possible_shippable))
+ var/obj/item/possible_shippable_item = possible_shippable
+ if(possible_shippable_item.item_flags & ABSTRACT)
+ continue
+ if(inserted_scan_id.registered_account.civilian_bounty.applies_to(possible_shippable))
status_report += "Target Applicable."
playsound(loc, 'sound/machines/synth/synth_yes.ogg', 30 , TRUE)
return
@@ -110,13 +116,19 @@
var/datum/bounty/curr_bounty = inserted_scan_id.registered_account.civilian_bounty
var/active_stack = 0
var/obj/machinery/piratepad/civilian/pad = pad_ref?.resolve()
- for(var/atom/movable/AM in get_turf(pad))
- if(AM == pad)
+ for(var/atom/movable/possible_shippable in get_turf(pad))
+ if(possible_shippable == pad)
+ continue
+ if(possible_shippable.flags_1 & HOLOGRAM_1)
continue
- if(curr_bounty.applies_to(AM))
+ if(isitem(possible_shippable))
+ var/obj/item/possible_shippable_item = possible_shippable
+ if(possible_shippable_item.item_flags & ABSTRACT)
+ continue
+ if(curr_bounty.applies_to(possible_shippable))
active_stack ++
- curr_bounty.ship(AM)
- qdel(AM)
+ curr_bounty.ship(possible_shippable)
+ qdel(possible_shippable)
if(active_stack >= 1)
status_report += "Bounty Target Found x[active_stack]. "
else
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index 8fdd5556e3b8b..eb48792a523bc 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -88,13 +88,15 @@
set_light(0)
/obj/machinery/computer/proc/imprint_gps(gps_tag) // Currently used by the upload computers and communications console
- var/tracker = gps_tag
- if(!tracker) // Don't give a null GPS signal if there is none
- return
- for(var/obj/item/circuitboard/computer/board in src.contents)
- if(!contents || board.GetComponent(/datum/component/gps))
- CRASH("[src] Called imprint_gps without setting gps_tag")
- board.AddComponent(/datum/component/gps, "[tracker]")
+ if(!length(gps_tag)) // Don't give a null GPS signal if there is none
+ CRASH("[src] called imprint_gps without setting gps_tag")
+ var/set_tracker = FALSE
+ for(var/obj/item/circuitboard/computer/board in contents)
+ if(board.GetComponent(/datum/component/gps))
+ return
+ board.AddComponent(/datum/component/gps, "[gps_tag]")
+ set_tracker = TRUE
+ if (set_tracker)
balloon_alert_to_viewers("board tracker enabled", vision_distance = 1)
/obj/machinery/computer/emp_act(severity)
diff --git a/code/game/machinery/computer/arcade/_arcade.dm b/code/game/machinery/computer/arcade/_arcade.dm
index 053ec907f3e63..eb91fa44f1c70 100644
--- a/code/game/machinery/computer/arcade/_arcade.dm
+++ b/code/game/machinery/computer/arcade/_arcade.dm
@@ -85,7 +85,7 @@
for(var/i in 1 to prizes)
user.add_mood_event("arcade", /datum/mood_event/arcade)
if(prob(0.0001)) //1 in a million
- new /obj/item/gun/energy/pulse/prize(src)
+ new /obj/item/gun/energy/pulse/prize(get_turf(src))
visible_message(span_notice("[src] dispenses.. woah, a gun! Way past cool."), span_notice("You hear a chime and a shot."))
user.client.give_award(/datum/award/achievement/misc/pulse, user)
continue
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 220870cb11981..3e947d33d7bff 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -85,14 +85,14 @@
. += span_warning("An [circuit.name] is installed and should be [EXAMINE_HINT("screwed")] in place.")
. += span_notice("The circuit board can be [EXAMINE_HINT("pried")] out.")
if(FRAME_COMPUTER_STATE_BOARD_SECURED)
- . += span_warning("Its requires [EXAMINE_HINT("5 cable")] pieces to wire it.")
+ . += span_warning("It can be [EXAMINE_HINT("wired")] with some cable.")
. += span_notice("The circuit board can be [EXAMINE_HINT("screwed")] loose.")
if(FRAME_COMPUTER_STATE_WIRED)
- . += span_notice("The wires can be cut out with [EXAMINE_HINT("wire cutters")].")
- . += span_warning("Its requires [EXAMINE_HINT("2 glass")] sheets to complete the screen.")
+ . += span_notice("The wires can be cut with [EXAMINE_HINT("wirecutters")].")
+ . += span_warning("There is a slot for 2 [EXAMINE_HINT("glass panels")].")
if(FRAME_COMPUTER_STATE_GLASSED)
. += span_notice("The screen can be [EXAMINE_HINT("pried")] out.")
- . += span_notice("The moniter can be [EXAMINE_HINT("screwed")] to complete it")
+ . += span_notice("The monitor can be [EXAMINE_HINT("screwed")] on to complete it")
/obj/structure/frame/computer/circuit_added(obj/item/circuitboard/added)
state = FRAME_COMPUTER_STATE_BOARD_INSTALLED
diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm
index 80a06fa6b9fc1..5633fe4904748 100644
--- a/code/game/machinery/computer/camera_advanced.dm
+++ b/code/game/machinery/computer/camera_advanced.dm
@@ -8,7 +8,7 @@
var/list/z_lock = list() // Lock use to these z levels
var/lock_override = NONE
- var/mob/eye/ai_eye/remote/eyeobj
+ var/mob/eye/camera/remote/eyeobj
var/mob/living/current_user = null
var/list/networks = list(CAMERANET_NETWORK_SS13)
/// Typepath of the action button we use as "off"
@@ -76,27 +76,33 @@
/obj/machinery/computer/camera_advanced/syndie/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock)
return //For syndie nuke shuttle, to spy for station.
+/**
+ * Initializes a camera eye.
+ * Returns TRUE if initialization was successful.
+ * Will return nothing if it runtimes.
+ */
/obj/machinery/computer/camera_advanced/proc/CreateEye()
- eyeobj = new()
- eyeobj.origin = src
+ if(eyeobj)
+ CRASH("Tried to make another eyeobj for some reason. Why?")
+
+ eyeobj = new(get_turf(src), src)
+ return TRUE
/obj/machinery/computer/camera_advanced/proc/GrantActions(mob/living/user)
for(var/datum/action/to_grant as anything in actions)
to_grant.Grant(user)
/obj/machinery/proc/remove_eye_control(mob/living/user)
- CRASH("[type] does not implement ai eye handling")
+ CRASH("[type] does not implement camera eye handling")
/obj/machinery/computer/camera_advanced/proc/give_eye_control(mob/user)
if(isnull(user?.client))
return
- GrantActions(user)
+
current_user = user
- eyeobj.eye_user = user
- eyeobj.name = "Camera Eye ([user.name])"
- user.remote_control = eyeobj
- user.reset_perspective(eyeobj)
- eyeobj.setLoc(eyeobj.loc)
+ eyeobj.assign_user(user)
+ GrantActions(user)
+
if(should_supress_view_changes)
user.client.view_size.supress()
begin_processing()
@@ -110,14 +116,11 @@
for(var/datum/camerachunk/camerachunks_gone as anything in eyeobj.visibleCameraChunks)
camerachunks_gone.remove(eyeobj)
- user.reset_perspective(null)
- if(eyeobj.visible_icon)
- user.client.images -= eyeobj.user_image
+ eyeobj.assign_user(null)
+ current_user = null
+
user.client.view_size.unsupress()
- eyeobj.eye_user = null
- user.remote_control = null
- current_user = null
playsound(src, 'sound/machines/terminal/terminal_off.ogg', 25, FALSE)
/obj/machinery/computer/camera_advanced/on_set_is_operational(old_value)
@@ -148,39 +151,43 @@
if(!QDELETED(current_user))
to_chat(user, span_warning("The console is already in use!"))
return
- var/mob/living/L = user
- if(!eyeobj)
- CreateEye()
- if(!eyeobj) //Eye creation failed
+
+ if(eyeobj)
+ give_eye_control(user)
+ eyeobj.setLoc(eyeobj.loc)
+ return
+ /* We're attempting to initialize the eye past this point */
+
+ if(!CreateEye())
+ to_chat(user, span_warning("\The [src] flashes a bunch of never-ending errors on the display. Something is really wrong."))
return
- if(!eyeobj.eye_initialized)
- var/camera_location
- var/turf/myturf = get_turf(src)
- if(eyeobj.use_static != FALSE)
- if((!length(z_lock) || (myturf.z in z_lock)) && GLOB.cameranet.checkTurfVis(myturf))
- camera_location = myturf
- else
- for(var/obj/machinery/camera/C as anything in GLOB.cameranet.cameras)
- if(!C.can_use() || length(z_lock) && !(C.z in z_lock))
- continue
- var/list/network_overlap = networks & C.network
- if(length(network_overlap))
- camera_location = get_turf(C)
- break
+
+ var/camera_location
+ var/turf/myturf = get_turf(src)
+ var/consider_zlock = (!!length(z_lock))
+
+ if(!eyeobj.use_visibility)
+ if(consider_zlock && !(myturf.z in z_lock))
+ camera_location = locate(round(world.maxx * 0.5), round(world.maxy * 0.5), z_lock[1])
else
camera_location = myturf
- if(length(z_lock) && !(myturf.z in z_lock))
- camera_location = locate(round(world.maxx/2), round(world.maxy/2), z_lock[1])
-
- if(camera_location)
- eyeobj.eye_initialized = TRUE
- give_eye_control(L)
- eyeobj.setLoc(camera_location)
+ else
+ if((!consider_zlock || (myturf.z in z_lock)) && GLOB.cameranet.checkTurfVis(myturf))
+ camera_location = myturf
else
- unset_machine()
+ for(var/obj/machinery/camera/C as anything in GLOB.cameranet.cameras)
+ if(!C.can_use() || consider_zlock && !(C.z in z_lock))
+ continue
+ var/list/network_overlap = networks & C.network
+ if(length(network_overlap))
+ camera_location = get_turf(C)
+ break
+
+ if(camera_location)
+ give_eye_control(user)
+ eyeobj.setLoc(camera_location, TRUE)
else
- give_eye_control(L)
- eyeobj.setLoc(eyeobj.loc)
+ unset_machine()
/obj/machinery/computer/camera_advanced/attack_robot(mob/user)
return attack_hand(user)
@@ -188,73 +195,6 @@
/obj/machinery/computer/camera_advanced/attack_ai(mob/user)
return //AIs would need to disable their own camera procs to use the console safely. Bugs happen otherwise.
-/mob/eye/ai_eye/remote
- name = "Inactive Camera Eye"
- ai_detector_visible = FALSE
- var/sprint = 10
- var/cooldown = 0
- var/acceleration = 1
- var/mob/living/eye_user = null
- var/obj/machinery/origin
- var/eye_initialized = 0
- var/visible_icon = 0
- var/image/user_image = null
-
-/mob/eye/ai_eye/remote/update_remote_sight(mob/living/user)
- user.set_invis_see(SEE_INVISIBLE_LIVING) //can't see ghosts through cameras
- user.set_sight(SEE_TURFS)
- return TRUE
-
-/mob/eye/ai_eye/remote/Destroy()
- if(origin && eye_user)
- origin.remove_eye_control(eye_user,src)
- origin = null
- . = ..()
- eye_user = null
-
-/mob/eye/ai_eye/remote/GetViewerClient()
- if(eye_user)
- return eye_user.client
- return null
-
-/mob/eye/ai_eye/remote/setLoc(turf/destination, force_update = FALSE)
- if(eye_user)
- destination = get_turf(destination)
- if (destination)
- abstract_move(destination)
- else
- moveToNullspace()
-
- update_ai_detect_hud()
-
- if(use_static)
- GLOB.cameranet.visibility(src, GetViewerClient(), null, use_static)
-
- if(visible_icon)
- if(eye_user.client)
- eye_user.client.images -= user_image
- user_image = image(icon,loc,icon_state, FLY_LAYER)
- SET_PLANE(user_image, ABOVE_GAME_PLANE, destination)
- eye_user.client.images += user_image
-
-/mob/eye/ai_eye/remote/relaymove(mob/living/user, direction)
- var/initial = initial(sprint)
- var/max_sprint = 50
-
- if(cooldown && cooldown < world.timeofday) // 3 seconds
- sprint = initial
-
- for(var/i = 0; i < max(sprint, initial); i += 20)
- var/turf/step = get_turf(get_step(src, direction))
- if(step)
- setLoc(step)
-
- cooldown = world.timeofday + 5
- if(acceleration)
- sprint = min(sprint + 0.5, max_sprint)
- else
- sprint = initial
-
/datum/action/innate/camera_off
name = "End Camera View"
button_icon = 'icons/mob/actions/actions_silicon.dmi'
@@ -263,8 +203,8 @@
/datum/action/innate/camera_off/Activate()
if(!owner || !isliving(owner))
return
- var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control
- var/obj/machinery/computer/camera_advanced/console = remote_eye.origin
+ var/mob/eye/camera/remote/remote_eye = owner.remote_control
+ var/obj/machinery/computer/camera_advanced/console = remote_eye.origin_ref.resolve()
console.remove_eye_control(owner)
/datum/action/innate/camera_jump
@@ -275,8 +215,8 @@
/datum/action/innate/camera_jump/Activate()
if(!owner || !isliving(owner))
return
- var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control
- var/obj/machinery/computer/camera_advanced/origin = remote_eye.origin
+ var/mob/eye/camera/remote/remote_eye = owner.remote_control
+ var/obj/machinery/computer/camera_advanced/origin = remote_eye.origin_ref.resolve()
var/list/L = list()
@@ -320,7 +260,7 @@
/datum/action/innate/camera_multiz_up/Activate()
if(!owner || !isliving(owner))
return
- var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control
+ var/mob/eye/camera/remote/remote_eye = owner.remote_control
if(remote_eye.zMove(UP))
to_chat(owner, span_notice("You move upwards."))
else
@@ -334,7 +274,7 @@
/datum/action/innate/camera_multiz_down/Activate()
if(!owner || !isliving(owner))
return
- var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control
+ var/mob/eye/camera/remote/remote_eye = owner.remote_control
if(remote_eye.zMove(DOWN))
to_chat(owner, span_notice("You move downwards."))
else
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index aac70dfc56dfa..949e71e1b418f 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -142,7 +142,7 @@
playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 50, FALSE)
return TRUE
-/obj/machinery/computer/communications/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+/obj/machinery/computer/communications/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/ui_state)
var/static/list/approved_states = list(STATE_BUYING_SHUTTLE, STATE_CHANGING_STATUS, STATE_MAIN, STATE_MESSAGES)
. = ..()
@@ -408,7 +408,7 @@
state = STATE_MAIN
playsound(src, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE)
- imprint_gps(gps_tag = "Encrypted Communications Channel")
+ imprint_gps("Encrypted Communications Channel")
if ("toggleEmergencyAccess")
if(emergency_access_cooldown(user)) //if were in cooldown, dont allow the following code
diff --git a/code/game/machinery/computer/operating_computer.dm b/code/game/machinery/computer/operating_computer.dm
index 83a2a08d986c3..3cba3ad2078a6 100644
--- a/code/game/machinery/computer/operating_computer.dm
+++ b/code/game/machinery/computer/operating_computer.dm
@@ -140,7 +140,7 @@
data["patient"]["oxyLoss"] = patient.getOxyLoss()
if(patient.surgeries.len)
for(var/datum/surgery/procedure in patient.surgeries)
- var/datum/surgery_step/surgery_step = procedure.get_surgery_step()
+ var/datum/surgery_step/surgery_step = GLOB.surgery_steps[procedure.steps[procedure.status]]
var/chems_needed = surgery_step.get_chem_list()
var/alternative_step
var/alt_chems_needed = ""
diff --git a/code/game/machinery/computer/orders/order_computer/mining_order.dm b/code/game/machinery/computer/orders/order_computer/mining_order.dm
index 94fda727d5f79..98c1e8eed2f28 100644
--- a/code/game/machinery/computer/orders/order_computer/mining_order.dm
+++ b/code/game/machinery/computer/orders/order_computer/mining_order.dm
@@ -34,7 +34,7 @@
/obj/machinery/computer/order_console/mining/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries)
var/list/things_to_order = list()
for(var/datum/orderable_item/item as anything in groceries)
- things_to_order[item.item_path] = groceries[item]
+ things_to_order[item.purchase_path] = groceries[item]
var/datum/supply_pack/custom/mining_pack = new(
purchaser = purchaser, \
diff --git a/code/game/machinery/computer/orders/order_computer/order_computer.dm b/code/game/machinery/computer/orders/order_computer/order_computer.dm
index 9098d5aeb090b..b74601ee8a35d 100644
--- a/code/game/machinery/computer/orders/order_computer/order_computer.dm
+++ b/code/game/machinery/computer/orders/order_computer/order_computer.dm
@@ -50,7 +50,7 @@ GLOBAL_LIST_EMPTY(order_console_products)
if(GLOB.order_console_products.len)
return
for(var/datum/orderable_item/path as anything in subtypesof(/datum/orderable_item))
- if(!initial(path.item_path))
+ if(!initial(path.purchase_path))
continue
GLOB.order_console_products += new path
@@ -120,7 +120,8 @@ GLOBAL_LIST_EMPTY(order_console_products)
"cat" = item.category_index,
"ref" = REF(item),
"cost" = round(item.cost_per_order * cargo_cost_multiplier),
- "product_icon" = icon2base64(getFlatIcon(image(icon = initial(item.item_path.icon), icon_state = initial(item.item_path.icon_state)), no_anim=TRUE))
+ "icon" = item.purchase_path::icon,
+ "icon_state" = item.purchase_path::icon_state,
))
return data
@@ -198,7 +199,7 @@ GLOBAL_LIST_EMPTY(order_console_products)
grocery_list.Remove(item)
continue
for(var/amt in 1 to grocery_list[item])//every order amount
- ordered_paths += item.item_path
+ ordered_paths += item.purchase_path
podspawn(list(
"target" = get_turf(living_user),
"style" = /datum/pod_style/advanced,
diff --git a/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm b/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm
index 9e5413f854863..e53d595c4982a 100644
--- a/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm
+++ b/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm
@@ -3,144 +3,154 @@
/datum/orderable_item/milk_eggs/milk
name = "Milk"
- item_path = /obj/item/reagent_containers/condiment/milk
+ purchase_path = /obj/item/reagent_containers/condiment/milk
cost_per_order = 30
/datum/orderable_item/milk_eggs/soymilk
name = "Soy Milk"
- item_path = /obj/item/reagent_containers/condiment/soymilk
+ purchase_path = /obj/item/reagent_containers/condiment/soymilk
cost_per_order = 30
/datum/orderable_item/milk_eggs/cream
name = "Cream"
- item_path = /obj/item/reagent_containers/cup/glass/bottle/juice/cream
+ purchase_path = /obj/item/reagent_containers/cup/glass/bottle/juice/cream
cost_per_order = 40
/datum/orderable_item/milk_eggs/yoghurt
name = "Yoghurt"
- item_path = /obj/item/reagent_containers/condiment/yoghurt
+ purchase_path = /obj/item/reagent_containers/condiment/yoghurt
cost_per_order = 40
/datum/orderable_item/milk_eggs/eggs
name = "Egg Carton"
- item_path = /obj/item/storage/fancy/egg_box
+ purchase_path = /obj/item/storage/fancy/egg_box
cost_per_order = 40
/datum/orderable_item/milk_eggs/fillet
name = "Fish Fillet"
- item_path = /obj/item/food/fishmeat
+ purchase_path = /obj/item/food/fishmeat
cost_per_order = 12
/datum/orderable_item/milk_eggs/octopus
name = "Octopus Tentacle"
- item_path = /obj/item/food/fishmeat/octopus
+ purchase_path = /obj/item/food/fishmeat/octopus
cost_per_order = 12
/datum/orderable_item/milk_eggs/chicken
name = "Chicken Breast"
- item_path = /obj/item/food/meat/slab/chicken
+ purchase_path = /obj/item/food/meat/slab/chicken
cost_per_order = 15
/datum/orderable_item/milk_eggs/spider_eggs
name = "Spider Eggs"
- item_path = /obj/item/food/spidereggs
+ purchase_path = /obj/item/food/spidereggs
/datum/orderable_item/milk_eggs/moonfish_eggs
name = "Moonfish Eggs"
- item_path = /obj/item/food/moonfish_eggs
+ purchase_path = /obj/item/food/moonfish_eggs
cost_per_order = 30
/datum/orderable_item/milk_eggs/desert_snails
name = "Canned Desert Snails"
- item_path = /obj/item/food/canned/desert_snails
+ purchase_path = /obj/item/food/canned/desert_snails
cost_per_order = 20
/datum/orderable_item/milk_eggs/canned_jellyfish
name = "Canned Gunner Jellyfish"
- item_path = /obj/item/food/canned/jellyfish
+ purchase_path = /obj/item/food/canned/jellyfish
cost_per_order = 20
/datum/orderable_item/milk_eggs/canned_larvae
name = "Canned Larvae"
- item_path = /obj/item/food/canned/larvae
+ purchase_path = /obj/item/food/canned/larvae
cost_per_order = 20
/datum/orderable_item/milk_eggs/canned_tomatoes
name = "Canned San Marzano Tomatoes"
- item_path = /obj/item/food/canned/tomatoes
+ purchase_path = /obj/item/food/canned/tomatoes
cost_per_order = 30
/datum/orderable_item/milk_eggs/canned_pine_nuts
name = "Canned Pine Nuts"
- item_path = /obj/item/food/canned/pine_nuts
+ purchase_path = /obj/item/food/canned/pine_nuts
cost_per_order = 20
/datum/orderable_item/milk_eggs/canned_squid_ink
name = "Canned Squid Ink"
- item_path = /obj/item/food/canned/squid_ink
+ purchase_path = /obj/item/food/canned/squid_ink
cost_per_order = 20
/datum/orderable_item/milk_eggs/chap
name = "Can of CHAP"
- item_path = /obj/item/food/canned/chap
+ purchase_path = /obj/item/food/canned/chap
cost_per_order = 20
/datum/orderable_item/milk_eggs/ready_donk
name = "Ready-Donk Meal: Bachelor Chow"
- item_path = /obj/item/food/ready_donk
+ purchase_path = /obj/item/food/ready_donk
cost_per_order = 40
/datum/orderable_item/milk_eggs/ready_donk_mac
name = "Ready-Donk Meal: Donk-a-Roni"
- item_path = /obj/item/food/ready_donk/mac_n_cheese
+ purchase_path = /obj/item/food/ready_donk/mac_n_cheese
cost_per_order = 40
/datum/orderable_item/milk_eggs/ready_donk_mex
name = "Ready-Donk Meal: Donkhiladas"
- item_path = /obj/item/food/ready_donk/donkhiladas
+ purchase_path = /obj/item/food/ready_donk/donkhiladas
cost_per_order = 40
/datum/orderable_item/milk_eggs/ready_donk_nachos
name = "Ready-Donk Meal: Donk Sol Series Boritos Nachos Grandes"
- item_path = /obj/item/food/ready_donk/nachos_grandes
+ purchase_path = /obj/item/food/ready_donk/nachos_grandes
cost_per_order = 40
/datum/orderable_item/milk_eggs/ready_donk_orange
name = "Ready-Donk Meal: Donk-range Chicken"
- item_path = /obj/item/food/ready_donk/donkrange_chicken
+ purchase_path = /obj/item/food/ready_donk/donkrange_chicken
+ cost_per_order = 40
+
+/datum/orderable_item/milk_eggs/ready_donk_salisbury
+ name = "Ready-Donk Meal: Donkriginals Salisbury Steak"
+ purchase_path = /obj/item/food/ready_donk/salisbury_steak
+ cost_per_order = 40
+
+/datum/orderable_item/milk_eggs/ready_donk_chicken
+ name = "Ready-Donk Meal: Donkriginals Country-Fried Chicken"
+ purchase_path = /obj/item/food/ready_donk/country_chicken
cost_per_order = 40
/datum/orderable_item/milk_eggs/tiziran_goods
name = "Tiziran Farm-Fresh Pack"
- item_path = /obj/item/storage/box/tiziran_goods
+ purchase_path = /obj/item/storage/box/tiziran_goods
cost_per_order = 120
/datum/orderable_item/milk_eggs/tiziran_cans
name = "Tiziran Canned Goods Pack"
- item_path = /obj/item/storage/box/tiziran_cans
+ purchase_path = /obj/item/storage/box/tiziran_cans
cost_per_order = 120
/datum/orderable_item/milk_eggs/tiziran_meats
name = "Tiziran Meatmarket Pack"
- item_path = /obj/item/storage/box/tiziran_meats
+ purchase_path = /obj/item/storage/box/tiziran_meats
cost_per_order = 120
/datum/orderable_item/milk_eggs/mothic_goods
name = "Mothic Farm-Fresh Pack"
- item_path = /obj/item/storage/box/mothic_goods
+ purchase_path = /obj/item/storage/box/mothic_goods
cost_per_order = 120
/datum/orderable_item/milk_eggs/mothic_cans_sauces
name = "Mothic Pantry Pack"
- item_path = /obj/item/storage/box/mothic_cans_sauces
+ purchase_path = /obj/item/storage/box/mothic_cans_sauces
cost_per_order = 120
/datum/orderable_item/milk_eggs/armorfish
name = "Cleaned Armorfish"
- item_path = /obj/item/food/fishmeat/armorfish
+ purchase_path = /obj/item/food/fishmeat/armorfish
cost_per_order = 30
/datum/orderable_item/milk_eggs/moonfish
name = "Moonfish"
- item_path = /obj/item/food/fishmeat/moonfish
+ purchase_path = /obj/item/food/fishmeat/moonfish
cost_per_order = 30
diff --git a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm
index 39fb38df550ef..06bd251368a90 100644
--- a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm
+++ b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm
@@ -3,105 +3,105 @@
/datum/orderable_item/reagents/flour
name = "Flour Sack"
- item_path = /obj/item/reagent_containers/condiment/flour
+ purchase_path = /obj/item/reagent_containers/condiment/flour
cost_per_order = 30
/datum/orderable_item/reagents/sugar
name = "Sugar Sack"
- item_path = /obj/item/reagent_containers/condiment/sugar
+ purchase_path = /obj/item/reagent_containers/condiment/sugar
cost_per_order = 30
/datum/orderable_item/reagents/rice
name = "Rice Sack"
- item_path = /obj/item/reagent_containers/condiment/rice
+ purchase_path = /obj/item/reagent_containers/condiment/rice
cost_per_order = 30
/datum/orderable_item/reagents/cornmeal
name = "Cornmeal Box"
- item_path = /obj/item/reagent_containers/condiment/cornmeal
+ purchase_path = /obj/item/reagent_containers/condiment/cornmeal
cost_per_order = 30
/datum/orderable_item/reagents/enzyme
name = "Universal Enzyme"
- item_path = /obj/item/reagent_containers/condiment/enzyme
+ purchase_path = /obj/item/reagent_containers/condiment/enzyme
cost_per_order = 40
/datum/orderable_item/reagents/salt
name = "Salt Shaker"
- item_path = /obj/item/reagent_containers/condiment/saltshaker
+ purchase_path = /obj/item/reagent_containers/condiment/saltshaker
cost_per_order = 15
/datum/orderable_item/reagents/pepper
name = "Pepper Mill"
- item_path = /obj/item/reagent_containers/condiment/peppermill
+ purchase_path = /obj/item/reagent_containers/condiment/peppermill
cost_per_order = 15
/datum/orderable_item/reagents/soysauce
name = "Soy Sauce"
- item_path = /obj/item/reagent_containers/condiment/soysauce
+ purchase_path = /obj/item/reagent_containers/condiment/soysauce
cost_per_order = 15
/datum/orderable_item/reagents/bbqsauce
name = "BBQ Sauce"
- item_path = /obj/item/reagent_containers/condiment/bbqsauce
+ purchase_path = /obj/item/reagent_containers/condiment/bbqsauce
cost_per_order = 60
/datum/orderable_item/reagents/vinegar
name = "Vinegar"
- item_path = /obj/item/reagent_containers/condiment/vinegar
+ purchase_path = /obj/item/reagent_containers/condiment/vinegar
cost_per_order = 30
/datum/orderable_item/reagents/olive_oil
name = "Olive Oil"
- item_path = /obj/item/reagent_containers/condiment/olive_oil
+ purchase_path = /obj/item/reagent_containers/condiment/olive_oil
cost_per_order = 50 //Extra Virgin, just like you, the reader
/datum/orderable_item/reagents/peanut_butter
name = "Peanut Butter"
- item_path = /obj/item/reagent_containers/condiment/peanut_butter
+ purchase_path = /obj/item/reagent_containers/condiment/peanut_butter
cost_per_order = 30
/datum/orderable_item/reagents/cherryjelly
name = "Cherry Jelly"
- item_path = /obj/item/reagent_containers/condiment/cherryjelly
+ purchase_path = /obj/item/reagent_containers/condiment/cherryjelly
cost_per_order = 30
/datum/orderable_item/reagents/worcestershire
name = "Worcestershire Sauce"
- item_path = /obj/item/reagent_containers/condiment/worcestershire
+ purchase_path = /obj/item/reagent_containers/condiment/worcestershire
cost_per_order = 30
/datum/orderable_item/reagents/red_bay
name = "Red Bay Seasoning"
- item_path = /obj/item/reagent_containers/condiment/red_bay
+ purchase_path = /obj/item/reagent_containers/condiment/red_bay
cost_per_order = 30
/datum/orderable_item/reagents/curry_powder
name = "Curry Powder"
- item_path = /obj/item/reagent_containers/condiment/curry_powder
+ purchase_path = /obj/item/reagent_containers/condiment/curry_powder
cost_per_order = 30
/datum/orderable_item/reagents/dashi_concentrate
name = "Dashi Concentrate"
- item_path = /obj/item/reagent_containers/condiment/dashi_concentrate
+ purchase_path = /obj/item/reagent_containers/condiment/dashi_concentrate
cost_per_order = 30
/datum/orderable_item/reagents/coconut_milk
name = "Coconut Milk"
- item_path = /obj/item/reagent_containers/condiment/coconut_milk
+ purchase_path = /obj/item/reagent_containers/condiment/coconut_milk
cost_per_order = 30
/datum/orderable_item/reagents/grounding_solution
name = "Grounding Solution"
- item_path = /obj/item/reagent_containers/condiment/grounding_solution
+ purchase_path = /obj/item/reagent_containers/condiment/grounding_solution
cost_per_order = 30
/datum/orderable_item/reagents/honey
name = "Honey"
- item_path = /obj/item/reagent_containers/condiment/honey
+ purchase_path = /obj/item/reagent_containers/condiment/honey
cost_per_order = 125 //its high quality honey :)
/datum/orderable_item/reagents/mayonnaise
name = "Mayonnaise"
- item_path = /obj/item/reagent_containers/condiment/mayonnaise
+ purchase_path = /obj/item/reagent_containers/condiment/mayonnaise
cost_per_order = 30
diff --git a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm
index f96562724d27d..5eff7055b9fae 100644
--- a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm
+++ b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm
@@ -3,177 +3,177 @@
/datum/orderable_item/veggies/potato
name = "Potato"
- item_path = /obj/item/food/grown/potato
+ purchase_path = /obj/item/food/grown/potato
/datum/orderable_item/veggies/tomato
name = "Tomato"
- item_path = /obj/item/food/grown/tomato
+ purchase_path = /obj/item/food/grown/tomato
/datum/orderable_item/veggies/carrot
name = "Carrot"
- item_path = /obj/item/food/grown/carrot
+ purchase_path = /obj/item/food/grown/carrot
/datum/orderable_item/veggies/eggplant
name = "Eggplant"
- item_path = /obj/item/food/grown/eggplant
+ purchase_path = /obj/item/food/grown/eggplant
/datum/orderable_item/veggies/mushroom
name = "Plump Helmet"
desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
- item_path = /obj/item/food/grown/mushroom/plumphelmet
+ purchase_path = /obj/item/food/grown/mushroom/plumphelmet
/datum/orderable_item/veggies/cabbage
name = "Cabbage"
- item_path = /obj/item/food/grown/cabbage
+ purchase_path = /obj/item/food/grown/cabbage
/datum/orderable_item/veggies/onion
name = "Onion"
- item_path = /obj/item/food/grown/onion
+ purchase_path = /obj/item/food/grown/onion
/datum/orderable_item/veggies/apple
name = "Apple"
- item_path = /obj/item/food/grown/apple
+ purchase_path = /obj/item/food/grown/apple
/datum/orderable_item/veggies/pumpkin
name = "Pumpkin"
- item_path = /obj/item/food/grown/pumpkin
+ purchase_path = /obj/item/food/grown/pumpkin
/datum/orderable_item/veggies/watermelon
name = "Watermelon"
- item_path = /obj/item/food/grown/watermelon
+ purchase_path = /obj/item/food/grown/watermelon
/datum/orderable_item/veggies/corn
name = "Corn"
- item_path = /obj/item/food/grown/corn
+ purchase_path = /obj/item/food/grown/corn
/datum/orderable_item/veggies/soybean
name = "Soybeans"
- item_path = /obj/item/food/grown/soybeans
+ purchase_path = /obj/item/food/grown/soybeans
/datum/orderable_item/veggies/garlic
name = "Garlic"
- item_path = /obj/item/food/grown/garlic
+ purchase_path = /obj/item/food/grown/garlic
/datum/orderable_item/veggies/cherries
name = "Cherries"
- item_path = /obj/item/food/grown/cherries
+ purchase_path = /obj/item/food/grown/cherries
/datum/orderable_item/veggies/chanterelle
name = "Chanterelle"
- item_path = /obj/item/food/grown/mushroom/chanterelle
+ purchase_path = /obj/item/food/grown/mushroom/chanterelle
/datum/orderable_item/veggies/cocoa
name = "Cocoa"
- item_path = /obj/item/food/grown/cocoapod
+ purchase_path = /obj/item/food/grown/cocoapod
/datum/orderable_item/veggies/herbs
name = "Bundle of Herbs"
- item_path = /obj/item/food/grown/herbs
+ purchase_path = /obj/item/food/grown/herbs
cost_per_order = 5
/datum/orderable_item/veggies/bell_pepper
name = "Bell Pepper"
- item_path = /obj/item/food/grown/bell_pepper
+ purchase_path = /obj/item/food/grown/bell_pepper
/datum/orderable_item/veggies/cucumbers
name = "Cucumber"
- item_path = /obj/item/food/grown/cucumber
+ purchase_path = /obj/item/food/grown/cucumber
cost_per_order = 10
/datum/orderable_item/veggies/pickles
name = "Jar of pickles"
- item_path = /obj/item/storage/fancy/pickles_jar
+ purchase_path = /obj/item/storage/fancy/pickles_jar
cost_per_order = 60
/datum/orderable_item/veggies/pickled_voltvine
name = "Pickled Voltvine"
- item_path = /obj/item/food/pickled_voltvine
+ purchase_path = /obj/item/food/pickled_voltvine
cost_per_order = 5
/datum/orderable_item/veggies/chili
name = "Chili"
- item_path = /obj/item/food/grown/chili
+ purchase_path = /obj/item/food/grown/chili
/datum/orderable_item/veggies/berries
name = "Berries"
- item_path = /obj/item/food/grown/berries
+ purchase_path = /obj/item/food/grown/berries
/datum/orderable_item/veggies/pineapple
name = "Pineapple"
- item_path = /obj/item/food/grown/pineapple
+ purchase_path = /obj/item/food/grown/pineapple
/datum/orderable_item/veggies/peas
name = "Peas"
- item_path = /obj/item/food/grown/peas
+ purchase_path = /obj/item/food/grown/peas
/datum/orderable_item/veggies/korta_nut //nanotrasen does not devote as much of their resources to pathetic lizard crops
name = "Korta Nut"
- item_path = /obj/item/food/grown/korta_nut
+ purchase_path = /obj/item/food/grown/korta_nut
cost_per_order = 15
/datum/orderable_item/veggies/parsnip
name = "Parsnip"
- item_path = /obj/item/food/grown/parsnip
+ purchase_path = /obj/item/food/grown/parsnip
/datum/orderable_item/veggies/redbeet
name = "Red Beet"
- item_path = /obj/item/food/grown/redbeet
+ purchase_path = /obj/item/food/grown/redbeet
/datum/orderable_item/veggies/orange
name = "Orange"
- item_path = /obj/item/food/grown/citrus/orange
+ purchase_path = /obj/item/food/grown/citrus/orange
/datum/orderable_item/veggies/vanillapod
name = "Vanilla"
- item_path = /obj/item/food/grown/vanillapod
+ purchase_path = /obj/item/food/grown/vanillapod
cost_per_order = 25 //food items that are treated as mutations in game should be more expensive. groceries shouldnt include ACTUAL mutations but i think real foods are ok
/datum/orderable_item/veggies/sweetkorta
name = "Sweet Korta Nut"
- item_path = /obj/item/food/grown/korta_nut/sweet
+ purchase_path = /obj/item/food/grown/korta_nut/sweet
cost_per_order = 30
/datum/orderable_item/veggies/redonion
name = "Red Onion"
- item_path = /obj/item/food/grown/onion/red
+ purchase_path = /obj/item/food/grown/onion/red
cost_per_order = 25
/datum/orderable_item/veggies/peanut
name = "Peanut"
- item_path = /obj/item/food/grown/peanut
+ purchase_path = /obj/item/food/grown/peanut
/datum/orderable_item/veggies/sweetpotato
name = "Sweet Potato"
- item_path = /obj/item/food/grown/potato/sweet
+ purchase_path = /obj/item/food/grown/potato/sweet
cost_per_order = 25
/datum/orderable_item/veggies/oat
name = "Oat"
- item_path = /obj/item/food/grown/oat
+ purchase_path = /obj/item/food/grown/oat
/datum/orderable_item/veggies/trumpet
name = "Spaceman's Trumpet"
- item_path = /obj/item/food/grown/trumpet
+ purchase_path = /obj/item/food/grown/trumpet
cost_per_order = 25
/datum/orderable_item/veggies/banana
name = "Banana"
- item_path = /obj/item/food/grown/banana
+ purchase_path = /obj/item/food/grown/banana
/datum/orderable_item/veggies/ghostchili
name = "Ghost Chili"
- item_path = /obj/item/food/grown/ghost_chili
+ purchase_path = /obj/item/food/grown/ghost_chili
cost_per_order = 25
/datum/orderable_item/veggies/lemon
name = "Lemon"
- item_path = /obj/item/food/grown/citrus/lemon
+ purchase_path = /obj/item/food/grown/citrus/lemon
/datum/orderable_item/veggies/lime
name = "Lime"
- item_path = /obj/item/food/grown/citrus/lime
+ purchase_path = /obj/item/food/grown/citrus/lime
/datum/orderable_item/veggies/toechtauese
name = "Töchtaüse berries"
- item_path = /obj/item/food/grown/toechtauese
+ purchase_path = /obj/item/food/grown/toechtauese
cost_per_order = 15
diff --git a/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm b/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm
index a91a34b46f2da..79e82ac954b22 100644
--- a/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm
+++ b/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm
@@ -2,53 +2,53 @@
category_index = CATEGORY_CONSUMABLES
/datum/orderable_item/consumables/survival_pen
- item_path = /obj/item/reagent_containers/hypospray/medipen/survival
+ purchase_path = /obj/item/reagent_containers/hypospray/medipen/survival
cost_per_order = 250
/datum/orderable_item/consumables/luxury_pen
- item_path = /obj/item/reagent_containers/hypospray/medipen/survival/luxury
+ purchase_path = /obj/item/reagent_containers/hypospray/medipen/survival/luxury
cost_per_order = 750
/datum/orderable_item/consumables/medkit
- item_path = /obj/item/storage/medkit/brute
+ purchase_path = /obj/item/storage/medkit/brute
cost_per_order = 400
/datum/orderable_item/consumables/medkit_fire
- item_path = /obj/item/storage/medkit/fire
+ purchase_path = /obj/item/storage/medkit/fire
desc = "For emergency magmatic burn relief."
cost_per_order = 500
/datum/orderable_item/consumables/whiskey
- item_path = /obj/item/reagent_containers/cup/glass/bottle/whiskey
+ purchase_path = /obj/item/reagent_containers/cup/glass/bottle/whiskey
cost_per_order = 100
/datum/orderable_item/consumables/absinthe
- item_path = /obj/item/reagent_containers/cup/glass/bottle/absinthe/premium
+ purchase_path = /obj/item/reagent_containers/cup/glass/bottle/absinthe/premium
cost_per_order = 100
/datum/orderable_item/consumables/bubblegum
- item_path = /obj/item/storage/box/gum/bubblegum
+ purchase_path = /obj/item/storage/box/gum/bubblegum
cost_per_order = 100
/datum/orderable_item/consumables/havana_cigars
- item_path = /obj/item/cigarette/cigar/havana
+ purchase_path = /obj/item/cigarette/cigar/havana
cost_per_order = 150
/datum/orderable_item/consumables/havana_cigars
- item_path = /obj/item/cigarette/cigar/havana
+ purchase_path = /obj/item/cigarette/cigar/havana
cost_per_order = 150
/datum/orderable_item/consumables/tracking_implants
- item_path = /obj/item/storage/box/minertracker
+ purchase_path = /obj/item/storage/box/minertracker
cost_per_order = 600
/datum/orderable_item/consumables/space_cash
- item_path = /obj/item/stack/spacecash/c1000
+ purchase_path = /obj/item/stack/spacecash/c1000
desc = "A stack of space cash worth 1000 credits."
cost_per_order = 2000
/datum/orderable_item/consumables/rescue_hook
name = "Rescue Fishing Rod"
- item_path = /obj/item/fishing_rod/rescue
+ purchase_path = /obj/item/fishing_rod/rescue
desc = "For when your fellow miner has inevitably fallen into a chasm, and it's up to you to save them."
cost_per_order = 600
diff --git a/code/game/machinery/computer/orders/order_items/mining/order_golem.dm b/code/game/machinery/computer/orders/order_items/mining/order_golem.dm
index cbd037230f242..237360978e8d4 100644
--- a/code/game/machinery/computer/orders/order_items/mining/order_golem.dm
+++ b/code/game/machinery/computer/orders/order_items/mining/order_golem.dm
@@ -2,34 +2,34 @@
category_index = CATEGORY_GOLEM
/datum/orderable_item/golem/mining_id
- item_path = /obj/item/card/id/advanced/mining
+ purchase_path = /obj/item/card/id/advanced/mining
cost_per_order = 200
/datum/orderable_item/golem/science_goggles
- item_path = /obj/item/clothing/glasses/science
+ purchase_path = /obj/item/clothing/glasses/science
cost_per_order = 200
/datum/orderable_item/golem/monkeycubes
- item_path = /obj/item/food/monkeycube
+ purchase_path = /obj/item/food/monkeycube
cost_per_order = 250
/datum/orderable_item/golem/belt
- item_path = /obj/item/storage/belt/utility
+ purchase_path = /obj/item/storage/belt/utility
cost_per_order = 300
/datum/orderable_item/golem/royal_cape
- item_path = /obj/item/bedsheet/rd/royal_cape
+ purchase_path = /obj/item/bedsheet/rd/royal_cape
cost_per_order = 400
/datum/orderable_item/golem/grey_extract
- item_path = /obj/item/slime_extract/grey
+ purchase_path = /obj/item/slime_extract/grey
cost_per_order = 800
/datum/orderable_item/golem/trigger_guard
- item_path = /obj/item/borg/upgrade/modkit/trigger_guard
+ purchase_path = /obj/item/borg/upgrade/modkit/trigger_guard
cost_per_order = 750
/datum/orderable_item/golem/rnd_boards
- item_path = /obj/item/storage/box/rndboards
+ purchase_path = /obj/item/storage/box/rndboards
cost_per_order = 1000
diff --git a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm
index 76af0dc806c96..babbd4a47381e 100644
--- a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm
+++ b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm
@@ -2,132 +2,132 @@
category_index = CATEGORY_MINING
/datum/orderable_item/mining/marker_beacon
- item_path = /obj/item/stack/marker_beacon/ten
+ purchase_path = /obj/item/stack/marker_beacon/ten
cost_per_order = 80
/datum/orderable_item/mining/skeleton_key
- item_path = /obj/item/skeleton_key
+ purchase_path = /obj/item/skeleton_key
cost_per_order = 675
/datum/orderable_item/mining/mining_stabilizer
- item_path = /obj/item/mining_stabilizer
+ purchase_path = /obj/item/mining_stabilizer
cost_per_order = 320
/datum/orderable_item/mining/fulton_core
- item_path = /obj/item/fulton_core
+ purchase_path = /obj/item/fulton_core
cost_per_order = 320
/datum/orderable_item/mining/mining_modsuit
- item_path = /obj/item/mod/control/pre_equipped/mining
+ purchase_path = /obj/item/mod/control/pre_equipped/mining
desc = "A mining-themed MODsuit that works best when in a mining environment."
cost_per_order = 2500
/datum/orderable_item/mining/mining_belt
- item_path = /obj/item/storage/belt/mining
+ purchase_path = /obj/item/storage/belt/mining
cost_per_order = 450
/datum/orderable_item/mining/jaunter
- item_path = /obj/item/wormhole_jaunter
+ purchase_path = /obj/item/wormhole_jaunter
cost_per_order = 650
/datum/orderable_item/mining/crusher
- item_path = /obj/item/kinetic_crusher
+ purchase_path = /obj/item/kinetic_crusher
cost_per_order = 650
/datum/orderable_item/mining/crusher_retool_kit
- item_path = /obj/item/crusher_trophy/retool_kit
+ purchase_path = /obj/item/crusher_trophy/retool_kit
cost_per_order = 150
/datum/orderable_item/mining/crusher_retool_kit_harpoon
- item_path = /obj/item/crusher_trophy/retool_kit/harpoon
+ purchase_path = /obj/item/crusher_trophy/retool_kit/harpoon
cost_per_order = 150
/datum/orderable_item/mining/crusher_retool_kit_dagger
- item_path = /obj/item/crusher_trophy/retool_kit/dagger
+ purchase_path = /obj/item/crusher_trophy/retool_kit/dagger
cost_per_order = 150
/datum/orderable_item/mining/resonator
- item_path = /obj/item/resonator
+ purchase_path = /obj/item/resonator
cost_per_order = 710
/datum/orderable_item/mining/resonator_advanced
- item_path = /obj/item/resonator/upgraded
+ purchase_path = /obj/item/resonator/upgraded
cost_per_order = 2000
/datum/orderable_item/mining/mining_scanner
- item_path = /obj/item/t_scanner/adv_mining_scanner
+ purchase_path = /obj/item/t_scanner/adv_mining_scanner
cost_per_order = 675
/datum/orderable_item/mining/fulton
- item_path = /obj/item/extraction_pack
+ purchase_path = /obj/item/extraction_pack
cost_per_order = 800
/datum/orderable_item/mining/lazarus
- item_path = /obj/item/lazarus_injector
+ purchase_path = /obj/item/lazarus_injector
cost_per_order = 1000
/datum/orderable_item/mining/gar_mesons
- item_path = /obj/item/clothing/glasses/meson/gar
+ purchase_path = /obj/item/clothing/glasses/meson/gar
cost_per_order = 500
/datum/orderable_item/mining/silver_pickaxe
- item_path = /obj/item/pickaxe/silver
+ purchase_path = /obj/item/pickaxe/silver
cost_per_order = 1000
/datum/orderable_item/mining/diamond_pickaxe
- item_path = /obj/item/pickaxe/diamond
+ purchase_path = /obj/item/pickaxe/diamond
cost_per_order = 2000
/datum/orderable_item/mining/conscription_kit
- item_path = /obj/item/storage/backpack/duffelbag/mining_conscript
+ purchase_path = /obj/item/storage/backpack/duffelbag/mining_conscript
desc = "A kit containing everything a crewmember needs to support a shaft miner in the field."
cost_per_order = 1200
/datum/orderable_item/mining/capsule
- item_path = /obj/item/survivalcapsule
+ purchase_path = /obj/item/survivalcapsule
cost_per_order = 350
/datum/orderable_item/mining/capsule/bathroom
- item_path = /obj/item/survivalcapsule/bathroom
+ purchase_path = /obj/item/survivalcapsule/bathroom
cost_per_order = 300
/datum/orderable_item/mining/capsule_luxury
- item_path = /obj/item/survivalcapsule/luxury
+ purchase_path = /obj/item/survivalcapsule/luxury
cost_per_order = 2300
/datum/orderable_item/mining/capsule_luxuryelite
- item_path = /obj/item/survivalcapsule/luxuryelite
+ purchase_path = /obj/item/survivalcapsule/luxuryelite
cost_per_order = 7000
/datum/orderable_item/mining/kheiralcuffs
- item_path = /obj/item/kheiral_cuffs
+ purchase_path = /obj/item/kheiral_cuffs
cost_per_order = 675
/datum/orderable_item/mining/bhop
- item_path = /obj/item/clothing/shoes/bhop
+ purchase_path = /obj/item/clothing/shoes/bhop
cost_per_order = 2000
/datum/orderable_item/mining/hiking_boots
- item_path = /obj/item/clothing/shoes/winterboots/ice_boots
+ purchase_path = /obj/item/clothing/shoes/winterboots/ice_boots
cost_per_order = 2000
/datum/orderable_item/mining/style_meter
- item_path = /obj/item/style_meter
+ purchase_path = /obj/item/style_meter
cost_per_order = 1200
/datum/orderable_item/mining/weather_radio
- item_path = /obj/item/radio/weather_monitor
+ purchase_path = /obj/item/radio/weather_monitor
cost_per_order = 320
/datum/orderable_item/mining/ventpointer
- item_path = /obj/item/pinpointer/vent
+ purchase_path = /obj/item/pinpointer/vent
cost_per_order = 1150
/datum/orderable_item/mining/boulder_processing
- item_path = /obj/item/boulder_beacon
+ purchase_path = /obj/item/boulder_beacon
desc = "A Bouldertech brand all-in-one boulder processing beacon. Each use will teleport in a component of a full boulder processing assembly line. Good for when you need to process additional boulders."
cost_per_order = 875
/datum/orderable_item/mining/grapple_gun
- item_path = /obj/item/grapple_gun
+ purchase_path = /obj/item/grapple_gun
cost_per_order = 3000
diff --git a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm
index f239e9f2a7eaf..ceaa83d8ef734 100644
--- a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm
+++ b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm
@@ -2,45 +2,45 @@
category_index = CATEGORY_PKA
/datum/orderable_item/accelerator/gun
- item_path = /obj/item/gun/energy/recharge/kinetic_accelerator
+ purchase_path = /obj/item/gun/energy/recharge/kinetic_accelerator
cost_per_order = 600
/datum/orderable_item/accelerator/range
- item_path = /obj/item/borg/upgrade/modkit/range
+ purchase_path = /obj/item/borg/upgrade/modkit/range
cost_per_order = 675
/datum/orderable_item/accelerator/damage
- item_path = /obj/item/borg/upgrade/modkit/damage
+ purchase_path = /obj/item/borg/upgrade/modkit/damage
cost_per_order = 675
/datum/orderable_item/accelerator/cooldown
- item_path = /obj/item/borg/upgrade/modkit/cooldown
+ purchase_path = /obj/item/borg/upgrade/modkit/cooldown
cost_per_order = 675
/datum/orderable_item/accelerator/chasis
- item_path = /obj/item/borg/upgrade/modkit/chassis_mod
+ purchase_path = /obj/item/borg/upgrade/modkit/chassis_mod
cost_per_order = 250
/datum/orderable_item/accelerator/chasis_orange
- item_path = /obj/item/borg/upgrade/modkit/chassis_mod/orange
+ purchase_path = /obj/item/borg/upgrade/modkit/chassis_mod/orange
cost_per_order = 300
/datum/orderable_item/accelerator/tracer
- item_path = /obj/item/borg/upgrade/modkit/tracer
+ purchase_path = /obj/item/borg/upgrade/modkit/tracer
cost_per_order = 100
/datum/orderable_item/accelerator/adjustable_tracer
- item_path = /obj/item/borg/upgrade/modkit/tracer/adjustable
+ purchase_path = /obj/item/borg/upgrade/modkit/tracer/adjustable
cost_per_order = 150
/datum/orderable_item/accelerator/aoe_mobs
- item_path = /obj/item/borg/upgrade/modkit/aoe/mobs
+ purchase_path = /obj/item/borg/upgrade/modkit/aoe/mobs
cost_per_order = 1500
/datum/orderable_item/accelerator/minebot_passthrough
- item_path = /obj/item/borg/upgrade/modkit/minebot_passthrough
+ purchase_path = /obj/item/borg/upgrade/modkit/minebot_passthrough
cost_per_order = 800
/datum/orderable_item/accelerator/friendly_fire
- item_path = /obj/item/borg/upgrade/modkit/human_passthrough
+ purchase_path = /obj/item/borg/upgrade/modkit/human_passthrough
cost_per_order = 750
diff --git a/code/game/machinery/computer/orders/order_items/mining/order_toys.dm b/code/game/machinery/computer/orders/order_items/mining/order_toys.dm
index fab03cabaa4b6..65bbee24ead6e 100644
--- a/code/game/machinery/computer/orders/order_items/mining/order_toys.dm
+++ b/code/game/machinery/computer/orders/order_items/mining/order_toys.dm
@@ -2,38 +2,38 @@
category_index = CATEGORY_TOYS_DRONE
/datum/orderable_item/toys_drones/soap
- item_path = /obj/item/soap/nanotrasen
+ purchase_path = /obj/item/soap/nanotrasen
cost_per_order = 180
/datum/orderable_item/toys_drones/laser_pointer
- item_path = /obj/item/laser_pointer
+ purchase_path = /obj/item/laser_pointer
cost_per_order = 275
/datum/orderable_item/toys_drones/facehugger
- item_path = /obj/item/clothing/mask/facehugger/toy
+ purchase_path = /obj/item/clothing/mask/facehugger/toy
cost_per_order = 275
/datum/orderable_item/toys_drones/mining_drone
- item_path = /mob/living/basic/mining_drone
+ purchase_path = /mob/living/basic/mining_drone
cost_per_order = 675
/datum/orderable_item/toys_drones/drone_health
- item_path = /obj/item/mine_bot_upgrade/health
+ purchase_path = /obj/item/mine_bot_upgrade/health
cost_per_order = 350
/datum/orderable_item/toys_drones/drone_shield
- item_path = /obj/item/mine_bot_upgrade/regnerative_shield
+ purchase_path = /obj/item/mine_bot_upgrade/regnerative_shield
cost_per_order = 500
/datum/orderable_item/toys_drones/drone_remote
- item_path = /obj/item/minebot_remote_control
+ purchase_path = /obj/item/minebot_remote_control
cost_per_order = 500
/datum/orderable_item/toys_drones/drone_pka
- item_path = /obj/item/borg/upgrade/modkit/cooldown/minebot
+ purchase_path = /obj/item/borg/upgrade/modkit/cooldown/minebot
cost_per_order = 525
/datum/orderable_item/toys_drones/drone_sentience
- item_path = /obj/item/slimepotion/slime/sentience/mining
+ purchase_path = /obj/item/slimepotion/slime/sentience/mining
cost_per_order = 850
diff --git a/code/game/machinery/computer/orders/order_items/order_datum.dm b/code/game/machinery/computer/orders/order_items/order_datum.dm
index 13684fc742b44..28c21a14f267e 100644
--- a/code/game/machinery/computer/orders/order_items/order_datum.dm
+++ b/code/game/machinery/computer/orders/order_items/order_datum.dm
@@ -5,7 +5,7 @@
///Description shown in the shop, set automatically unless it's hard set by the subtype
var/desc
///Path of the item that is purchased when ordering us.
- var/obj/item/item_path
+ var/atom/movable/purchase_path
///The category this item will be displayed in.
var/category_index = NONE
///How much this item costs to order.
@@ -15,14 +15,9 @@
. = ..()
if(!category_index)
CRASH("[type] doesn't have a category_index assigned!")
- if(!item_path)
+ if(!purchase_path)
CRASH("[type] orderable item datum with no item path was created!")
if(!name)
- name = initial(item_path.name)
+ name = initial(purchase_path.name)
if(!desc)
- desc = initial(item_path.desc)
-
-/datum/orderable_item/Destroy(force)
- if(item_path)
- qdel(item_path)
- return ..()
+ desc = initial(purchase_path.desc)
diff --git a/code/game/machinery/computer/records/security.dm b/code/game/machinery/computer/records/security.dm
index b2bc95e3fd060..3b84836bd5e9b 100644
--- a/code/game/machinery/computer/records/security.dm
+++ b/code/game/machinery/computer/records/security.dm
@@ -184,7 +184,7 @@
if("set_note")
var/note = strip_html_full(params["note"], MAX_MESSAGE_LEN)
- investigate_log("[user] has changed the security note of record: \"[target]\" from \"[target.security_note]\" to \"[note]\".")
+ investigate_log("[user] has changed the security note of record: \"[target]\" from \"[target.security_note]\" to \"[note]\".", INVESTIGATE_RECORDS)
target.security_note = note
return TRUE
diff --git a/code/game/machinery/computer/telescreen.dm b/code/game/machinery/computer/telescreen.dm
index 082ac7560eef0..b9a7273ae75ba 100644
--- a/code/game/machinery/computer/telescreen.dm
+++ b/code/game/machinery/computer/telescreen.dm
@@ -45,8 +45,9 @@
var/icon_state_off = "entertainment_blank"
var/icon_state_on = "entertainment"
-/obj/machinery/vending/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+/obj/machinery/computer/security/telescreen/entertainment/add_context(atom/source, list/context, obj/item/held_item, mob/user)
context[SCREENTIP_CONTEXT_CTRL_LMB] = "Toggle mute button"
+ return CONTEXTUAL_SCREENTIP_SET
/obj/machinery/computer/security/telescreen/entertainment/click_ctrl(mob/user)
. = ..()
@@ -64,6 +65,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai
/obj/machinery/computer/security/telescreen/entertainment/Initialize(mapload)
. = ..()
find_and_hang_on_wall()
+ register_context()
speakers = new(src)
/obj/machinery/computer/security/telescreen/entertainment/Destroy()
diff --git a/code/game/machinery/dna_infuser/infuser_actions.dm b/code/game/machinery/dna_infuser/infuser_actions.dm
index 1b55059bb9899..466bed9e17efe 100644
--- a/code/game/machinery/dna_infuser/infuser_actions.dm
+++ b/code/game/machinery/dna_infuser/infuser_actions.dm
@@ -41,6 +41,8 @@
if(!LAZYACCESS(params2list(params), RIGHT_CLICK))
return
. = ..()
+ if(!.)
+ return
var/modifiers = params2list(params)
caller.visible_message(
@@ -48,7 +50,7 @@
span_bold("You spit ink."),
)
var/obj/projectile/ink_spit/ink = new /obj/projectile/ink_spit(caller.loc)
- ink.preparePixelProjectile(target, caller, modifiers)
+ ink.aim_projectile(target, caller, modifiers)
ink.firer = caller
ink.fire()
playsound(caller, 'sound/items/weapons/pierce.ogg', 20, TRUE, -1)
diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
index 1e4bc41ae415b..9a873b5e373f6 100644
--- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
@@ -10,6 +10,7 @@
bonus_activate_text = span_notice("Carp DNA is deeply infused with you! You've learned how to propel yourself through space!")
bonus_deactivate_text = span_notice("Your DNA is once again mostly yours, and so fades your ability to space-swim...")
bonus_traits = list(TRAIT_SPACEWALK)
+ bonus_biotype = MOB_AQUATIC
limb_overlay = /datum/bodypart_overlay/texture/carpskin
color_overlay_priority = LIMB_COLOR_CARP_INFUSION
diff --git a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
index c7f9ec460f508..b14b76a52565d 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
@@ -8,8 +8,8 @@
id = "organ_set_bonus_fish"
tick_interval = 1 SECONDS
organs_needed = 3
- bonus_activate_text = span_notice("Fish DNA is deeply infused with you! While wet, you crawl faster, are slippery, and cannot slip, and it takes longer to dry out. \
- You're also more resistant to high pressure, better at fishing, but less resilient when dry, especially against burns.")
+ bonus_activate_text = span_notice("Fish DNA is deeply infused with you! While wet, you crawl faster, are slippery, cannot slip, and it takes longer to dry out. \
+ You're also resistant to high pressure, better at fishing, but less resilient when dry, especially against burns.")
bonus_deactivate_text = span_notice("You no longer feel as fishy. The moisture around your body begins to dissipate faster...")
bonus_traits = list(
TRAIT_RESISTHIGHPRESSURE,
@@ -23,6 +23,7 @@
TRAIT_EXPANDED_FOV, //fish vision
TRAIT_WATER_ADAPTATION,
)
+ bonus_biotype = MOB_AQUATIC
/datum/status_effect/organ_set_bonus/fish/enable_bonus()
. = ..()
@@ -34,6 +35,9 @@
if(ishuman(owner))
var/mob/living/carbon/human/human = owner
+ //Fish is slightly weaker to being cooked. oh oh.
+ human.physiology.burn_mod *= 1.15
+ human.physiology.heat_mod *= 1.15
human.physiology.damage_resistance += 8 //base 8% damage resistance, much wow.
if(!HAS_TRAIT(owner, TRAIT_IS_WET))
apply_debuff()
@@ -61,6 +65,8 @@
owner.clear_mood_event("fish_organs_bonus")
if(ishuman(owner))
var/mob/living/carbon/human/human = owner
+ human.physiology.burn_mod /= 1.15
+ human.physiology.heat_mod /= 1.15
human.physiology.damage_resistance -= 8
if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
remove_speed_buff()
@@ -190,6 +196,7 @@
. = ..()
owner.AddElementTrait(TRAIT_WADDLING, type, /datum/element/waddling/flopping_only) // DOPPLER EDIT, old code: owner.AddElementTrait(TRAIT_WADDLING, type, /datum/element/waddling)
RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_location))
+ RegisterSignal(owner, COMSIG_LIVING_GIBBER_ACT, PROC_REF(on_gibber_processed))
check_location(owner, null)
/obj/item/organ/tail/fish/on_mob_remove(mob/living/carbon/owner)
@@ -197,7 +204,12 @@
owner.remove_traits(list(TRAIT_WADDLING, TRAIT_NO_STAGGER), type)
owner.remove_movespeed_modifier(/datum/movespeed_modifier/fish_on_water)
owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/fish_on_water)
- UnregisterSignal(owner, COMSIG_MOVABLE_MOVED)
+ UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_GIBBER_ACT))
+
+/obj/item/organ/tail/fish/proc/on_gibber_processed(mob/living/carbon/owner, mob/living/user, obj/machinery/gibber, list/results)
+ SIGNAL_HANDLER
+ for(var/iteration in 1 to fillet_amount * 0.5)
+ results += new fillet_type
/obj/item/organ/tail/fish/get_greyscale_color_from_draw_color()
set_greyscale(bodypart_overlay.draw_color)
diff --git a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
index 0ca652c3ab92c..a9401189b40aa 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
@@ -49,12 +49,10 @@
"S" = "Z",
)
-/obj/item/organ/tongue/fly/New(class, timer, datum/mutation/human/copymut)
- . = ..()
- AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech)))
/obj/item/organ/tongue/fly/Initialize(mapload)
. = ..()
+ AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech)))
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
/obj/item/organ/tongue/fly/get_possible_languages()
diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
index 82c9c9fc8e8be..805277b3d9c61 100644
--- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
@@ -34,7 +34,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
AddElement(/datum/element/noticable_organ, "%PRONOUN_They radiate%PRONOUN_s an aura of serenity.")
AddElement(/datum/element/update_icon_blocker)
-/obj/item/organ/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/heart/gondola/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(!(FACTION_HOSTILE in receiver.faction))
factions_to_remove += FACTION_HOSTILE
@@ -42,7 +42,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
factions_to_remove += FACTION_MINING
receiver.faction |= list(FACTION_HOSTILE, FACTION_MINING)
-/obj/item/organ/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags)
+/obj/item/organ/heart/gondola/on_mob_remove(mob/living/carbon/heartless, special, movement_flags)
. = ..()
for(var/faction in factions_to_remove)
heartless.faction -= faction
@@ -64,11 +64,11 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is permanently affixed into a relaxed smile.", BODY_ZONE_PRECISE_MOUTH)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola)
-/obj/item/organ/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/gondola/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
. = ..()
tongue_owner.add_mood_event("gondola_zen", /datum/mood_event/gondola_serenity)
-/obj/item/organ/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/gondola/on_mob_remove(mob/living/carbon/tongue_owner, special, movement_flags)
tongue_owner.clear_mood_event("gondola_zen")
return ..()
@@ -87,7 +87,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their left arm has small needles breaching the skin all over it.", BODY_ZONE_L_ARM)
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their right arm has small needles breaching the skin all over it.", BODY_ZONE_R_ARM)
-/obj/item/organ/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags)
+/obj/item/organ/liver/gondola/on_mob_insert(mob/living/carbon/liver_owner, special, movement_flags)
. = ..()
var/has_left = liver_owner.has_left_hand(check_disabled = FALSE)
var/has_right = liver_owner.has_right_hand(check_disabled = FALSE)
@@ -102,7 +102,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
RegisterSignal(liver_owner, COMSIG_LIVING_TRY_PULL, PROC_REF(on_owner_try_pull))
RegisterSignal(liver_owner, COMSIG_CARBON_HELPED, PROC_REF(on_hug))
-/obj/item/organ/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags)
+/obj/item/organ/liver/gondola/on_mob_remove(mob/living/carbon/liver_owner, special, movement_flags)
. = ..()
UnregisterSignal(liver_owner, list(COMSIG_HUMAN_EQUIPPING_ITEM, COMSIG_LIVING_TRY_PULL, COMSIG_CARBON_HELPED))
diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
index f10dcefb0d5c5..251c5c35a49b0 100644
--- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
@@ -74,7 +74,7 @@
//but 1.5 damage
human_receiver.physiology?.damage_resistance -= 50
-/obj/item/organ/heart/rat/on_mob_remove(mob/living/carbon/heartless, special)
+/obj/item/organ/heart/rat/on_mob_remove(mob/living/carbon/heartless, special, movement_flags)
. = ..()
if(!ishuman(heartless))
return
diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
index 2b32ad8570223..2c07038fd1709 100644
--- a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
@@ -16,10 +16,9 @@
// - Immunity to nuke gibs
// - Nukes come with radiation (not actually but yknow)
bonus_traits = list(TRAIT_NUKEIMMUNE, TRAIT_RADIMMUNE, TRAIT_VIRUS_RESISTANCE)
+ bonus_biotype = MOB_BUG
/// Armor type attached to the owner's physiology
var/datum/armor/given_armor = /datum/armor/roach_internal_armor
- /// Storing biotypes pre-organ bonus applied so we don't remove bug from mobs which should have it.
- var/old_biotypes = NONE
/datum/status_effect/organ_set_bonus/roach/enable_bonus()
. = ..()
@@ -29,9 +28,6 @@
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.armor = human_owner.physiology.armor.add_other_armor(given_armor)
- old_biotypes = human_owner.mob_biotypes
- human_owner.mob_biotypes |= MOB_BUG
-
/datum/status_effect/organ_set_bonus/roach/disable_bonus()
. = ..()
if(!ishuman(owner) || QDELETED(owner))
@@ -40,9 +36,6 @@
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.armor = human_owner.physiology.armor.subtract_other_armor(given_armor)
- if(!(old_biotypes & MOB_BUG)) // only remove bug if it wasn't there before
- human_owner.mob_biotypes &= ~MOB_BUG
-
/// Roach heart:
/// Reduces damage taken from brute attacks from behind,
/// but increases duration of knockdowns
@@ -72,7 +65,7 @@
QDEL_NULL(roach_shell)
return ..()
-/obj/item/organ/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(!ishuman(organ_owner))
return
@@ -87,7 +80,7 @@
. = ..()
limb.add_bodypart_overlay(roach_shell)
-/obj/item/organ/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(!ishuman(organ_owner) || QDELETED(organ_owner))
return
@@ -195,7 +188,7 @@
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
-/obj/item/organ/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(!ishuman(organ_owner))
return
@@ -203,7 +196,7 @@
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.tox_mod *= 2
-/obj/item/organ/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(!ishuman(organ_owner) || QDELETED(organ_owner))
return
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 39909c64cf994..7cbd5126ca487 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -545,7 +545,7 @@
else
. += get_airlock_overlay("fill_[frame_state]", icon, src, em_block = TRUE)
- if(lights && hasPower())
+ if(lights && hasPower() && light_state)
. += get_airlock_overlay("lights_[light_state]", overlays_file, src, em_block = FALSE)
if(panel_open)
@@ -1390,9 +1390,10 @@
/obj/machinery/door/airlock/proc/prison_open()
if(obj_flags & EMAGGED)
return
- locked = FALSE
+ if(locked)
+ unbolt()
open()
- locked = TRUE
+ bolt()
return
// gets called when a player uses an airlock painter on this airlock
@@ -1548,6 +1549,7 @@
assembly.previous_assembly = previous_airlock
assembly.update_name()
assembly.update_appearance()
+ assembly.dir = dir
/obj/machinery/door/airlock/on_deconstruction(disassembled)
var/obj/structure/door_assembly/A
@@ -2464,6 +2466,10 @@
opacity = FALSE
glass = TRUE
+/obj/machinery/door/airlock/multi_tile/setDir(newdir)
+ . = ..()
+ set_bounds()
+
/obj/structure/fluff/airlock_filler
name = "airlock fluff"
desc = "You shouldn't be able to see this fluff!"
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 858f2dffefff2..b238f3416681f 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -548,18 +548,20 @@
if(welded || operating)
return
+ var/atom/crowbar_owner = acting_object.loc //catchs mechs and any other non-mob using a crowbar
+
if(density)
being_held_open = TRUE
- user.balloon_alert_to_viewers("holding firelock open", "holding firelock open")
+ crowbar_owner.balloon_alert_to_viewers("holding firelock open", "holding firelock open")
COOLDOWN_START(src, activation_cooldown, REACTIVATION_DELAY)
open()
- if(QDELETED(user))
+ if(QDELETED(crowbar_owner))
being_held_open = FALSE
return
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(handle_held_open_adjacency))
- RegisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(handle_held_open_adjacency))
- RegisterSignal(user, COMSIG_QDELETING, PROC_REF(handle_held_open_adjacency))
- handle_held_open_adjacency(user)
+ RegisterSignal(crowbar_owner, COMSIG_MOVABLE_MOVED, PROC_REF(handle_held_open_adjacency))
+ RegisterSignal(crowbar_owner, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(handle_held_open_adjacency))
+ RegisterSignal(crowbar_owner, COMSIG_QDELETING, PROC_REF(handle_held_open_adjacency))
+ handle_held_open_adjacency(crowbar_owner)
else
close()
@@ -575,19 +577,23 @@
else
close()
-/obj/machinery/door/firedoor/proc/handle_held_open_adjacency(mob/user)
+/obj/machinery/door/firedoor/proc/handle_held_open_adjacency(atom/crowbar_owner)
SIGNAL_HANDLER
- var/mob/living/living_user = user
- if(!QDELETED(user) && Adjacent(user) && isliving(user) && (living_user.body_position == STANDING_UP))
- return
+
+ if(!QDELETED(crowbar_owner) && crowbar_owner.CanReach(src))
+ if(!ismob(crowbar_owner))
+ return
+ var/mob/living/mob_user = crowbar_owner
+ if(isliving(mob_user) && (mob_user.body_position == STANDING_UP))
+ return
being_held_open = FALSE
correct_state()
- UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
- UnregisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION)
- UnregisterSignal(user, COMSIG_QDELETING)
- if(user)
- user.balloon_alert_to_viewers("released firelock", "released firelock")
+ UnregisterSignal(crowbar_owner, COMSIG_MOVABLE_MOVED)
+ UnregisterSignal(crowbar_owner, COMSIG_LIVING_SET_BODY_POSITION)
+ UnregisterSignal(crowbar_owner, COMSIG_QDELETING)
+ if(crowbar_owner)
+ crowbar_owner.balloon_alert_to_viewers("released firelock", "released firelock")
/obj/machinery/door/firedoor/attack_ai(mob/user)
add_fingerprint(user)
diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm
index 83b1626900286..7a5e562dd3ecf 100644
--- a/code/game/machinery/embedded_controller/access_controller.dm
+++ b/code/game/machinery/embedded_controller/access_controller.dm
@@ -4,6 +4,7 @@
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.04
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/idSelf
/obj/machinery/door_buttons/attackby(obj/O, mob/user)
@@ -109,6 +110,7 @@
icon_state = "access_control_standby"
base_icon_state = "access_control"
interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN|INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_OPEN_SILICON
+ mouse_over_pointer = MOUSE_HAND_POINTER
///the id of the interior airlock
var/idInterior
///the id of the exterior airlock
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index b22959ce461be..4505be8be47eb 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -18,6 +18,7 @@
max_integrity = 250
integrity_failure = 0.4
armor_type = /datum/armor/machinery_firealarm
+ mouse_over_pointer = MOUSE_HAND_POINTER
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.02
power_channel = AREA_USAGE_ENVIRON
diff --git a/code/game/machinery/flatpacker.dm b/code/game/machinery/flatpacker.dm
index 4a0e78f52071f..c26d9ad036d53 100644
--- a/code/game/machinery/flatpacker.dm
+++ b/code/game/machinery/flatpacker.dm
@@ -477,3 +477,9 @@
return ITEM_INTERACT_SUCCESS
#undef MAX_FLAT_PACKS
+
+/obj/item/flatpack/flatpacker // a roundstart flatpacker is NICE you can gahdamn tell the time and everythin'
+ board = /obj/item/circuitboard/machine/flatpacker
+
+/obj/item/flatpack/mailsorter // to have a roundstart mail sorter at cargo
+ board = /obj/item/circuitboard/machine/mailsorter
diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm
index 4949f53adfbfe..bbb6f33236d23 100644
--- a/code/game/machinery/harvester.dm
+++ b/code/game/machinery/harvester.dm
@@ -179,7 +179,7 @@
obj_flags |= EMAGGED
allow_living = TRUE
allow_clothing = TRUE
- balloon_alert(!user, "lifesign scanners overloaded")
+ balloon_alert(user, "lifesign scanners overloaded")
return TRUE
/obj/machinery/harvester/container_resist_act(mob/living/user)
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index 437c2dbd168a6..f8bfeceb69f5d 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -25,8 +25,8 @@
use_power = NO_POWER_USE
interaction_flags_mouse_drop = NEED_HANDS
- ///What are we sticking our needle in?
- var/atom/attached
+ /// Information and effects about where the IV drip is attached to
+ var/datum/iv_drip_attachment/attachment
///Are we donating or injecting?
var/mode = IV_INJECTING
///The chemicals flow speed
@@ -54,7 +54,7 @@
AddElement(/datum/element/noisy_movement)
/obj/machinery/iv_drip/Destroy()
- attached = null
+ QDEL_NULL(attachment)
QDEL_NULL(reagent_container)
return ..()
@@ -65,7 +65,7 @@
ui.open()
/obj/machinery/iv_drip/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
- if(attached)
+ if(attachment)
context[SCREENTIP_CONTEXT_RMB] = "Take needle out"
else if(reagent_container && !use_internal_storage)
context[SCREENTIP_CONTEXT_RMB] = "Eject container"
@@ -93,12 +93,12 @@
.["canRemoveContainer"] = !use_internal_storage
.["mode"] = mode == IV_INJECTING ? TRUE : FALSE
- .["canDraw"] = inject_only || (attached && !isliving(attached)) ? FALSE : TRUE
+ .["canDraw"] = inject_only || (attachment && !isliving(attachment.attached_to)) ? FALSE : TRUE
.["transferRate"] = transfer_rate
- .["hasObjectAttached"] = attached ? TRUE : FALSE
- if(attached)
- .["objectName"] = attached.name
+ .["hasObjectAttached"] = !!attachment
+ if(attachment)
+ .["objectName"] = attachment.attached_to.name
var/datum/reagents/drip_reagents = get_reagents()
if(drip_reagents)
@@ -131,7 +131,7 @@
update_appearance(UPDATE_ICON)
/obj/machinery/iv_drip/update_icon_state()
- if(transfer_rate > 0 && attached)
+ if(transfer_rate > 0 && attachment)
icon_state = "[base_icon_state]_[mode ? "injecting" : "donating"]"
else
icon_state = "[base_icon_state]_[mode ? "injectidle" : "donateidle"]"
@@ -143,7 +143,7 @@
if(!reagent_container)
return
- . += attached ? "beakeractive" : "beakeridle"
+ . += attachment ? "beakeractive" : "beakeridle"
var/datum/reagents/container_reagents = get_reagents()
if(!container_reagents)
return
@@ -172,9 +172,9 @@
if(!target.is_injectable(user))
to_chat(user, span_warning("Can't inject into this!"))
return
- if(attached)
- visible_message(span_warning("[attached] is detached from [src]."))
- attached = null
+ if(attachment)
+ visible_message(span_warning("[attachment.attached_to] is detached from [src]."))
+ QDEL_NULL(attachment)
update_appearance(UPDATE_ICON)
user.visible_message(span_warning("[user] attaches [src] to [target]."), span_notice("You attach [src] to [target]."))
attach_iv(target, user)
@@ -214,19 +214,21 @@
new /obj/item/stack/sheet/iron(loc)
/obj/machinery/iv_drip/process(seconds_per_tick)
- if(!attached)
+ if(!attachment)
return PROCESS_KILL
- if(!(get_dist(src, attached) <= 1 && isturf(attached.loc)))
- if(isliving(attached))
- var/mob/living/carbon/attached_mob = attached
- to_chat(attached, span_userdanger("The IV drip needle is ripped out of you, leaving an open bleeding wound!"))
+ var/atom/attached_to = attachment.attached_to
+
+ if(!(get_dist(src, attached_to) <= 1 && isturf(attached_to.loc)))
+ if(isliving(attached_to))
+ var/mob/living/carbon/attached_mob = attached_to
+ to_chat(attached_to, span_userdanger("The IV drip needle is ripped out of you, leaving an open bleeding wound!"))
var/list/arm_zones = shuffle(list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM))
var/obj/item/bodypart/chosen_limb = attached_mob.get_bodypart(arm_zones[1]) || attached_mob.get_bodypart(arm_zones[2]) || attached_mob.get_bodypart(BODY_ZONE_CHEST)
- chosen_limb.receive_damage(3)
+ attached_mob.apply_damage(3, BRUTE, chosen_limb, wound_bonus = CANT_WOUND)
attached_mob.cause_wound_of_type_and_severity(WOUND_PIERCE, chosen_limb, WOUND_SEVERITY_MODERATE, wound_source = "IV needle")
else
- visible_message(span_warning("[attached] is detached from [src]."))
+ visible_message(span_warning("[attached_to] is detached from [src]."))
detach_iv()
return PROCESS_KILL
@@ -240,12 +242,12 @@
// Give reagents
if(mode)
if(drip_reagents.total_volume)
- drip_reagents.trans_to(attached, transfer_rate * seconds_per_tick, methods = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages
+ drip_reagents.trans_to(attached_to, transfer_rate * seconds_per_tick, methods = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages
update_appearance(UPDATE_ICON)
// Take blood
- else if (isliving(attached))
- var/mob/living/attached_mob = attached
+ else if (isliving(attached_to))
+ var/mob/living/attached_mob = attached_to
var/amount = min(transfer_rate * seconds_per_tick, drip_reagents.maximum_volume - drip_reagents.total_volume)
// If the beaker is full, ping
if(!amount)
@@ -267,8 +269,8 @@
return
if(!ishuman(user))
return
- if(attached)
- visible_message(span_notice("[attached] is detached from [src]."))
+ if(attachment)
+ visible_message(span_notice("[attachment.attached_to] is detached from [src]."))
detach_iv()
else if(reagent_container)
eject_beaker(user)
@@ -291,7 +293,10 @@
if(isliving(target))
var/mob/living/target_mob = target
target_mob.throw_alert(ALERT_IV_CONNECTED, /atom/movable/screen/alert/iv_connected)
- attached = target
+
+ qdel(attachment)
+ attachment = new(src, target)
+
START_PROCESSING(SSmachines, src)
update_appearance(UPDATE_ICON)
@@ -299,13 +304,13 @@
///Called when an iv is detached. doesnt include chat stuff because there's multiple options and its better handled by the caller
/obj/machinery/iv_drip/proc/detach_iv()
- if(attached)
- visible_message(span_notice("[attached] is detached from [src]."))
- if(isliving(attached))
- var/mob/living/attached_mob = attached
+ if(attachment)
+ visible_message(span_notice("[attachment.attached_to] is detached from [src]."))
+ if(isliving(attachment.attached_to))
+ var/mob/living/attached_mob = attachment.attached_to
attached_mob.clear_alert(ALERT_IV_CONNECTED, /atom/movable/screen/alert/iv_connected)
- SEND_SIGNAL(src, COMSIG_IV_DETACH, attached)
- attached = null
+ SEND_SIGNAL(src, COMSIG_IV_DETACH, attachment?.attached_to)
+ QDEL_NULL(attachment)
update_appearance(UPDATE_ICON)
/// Get the reagents used by IV drip
@@ -325,8 +330,8 @@
if(usr.incapacitated)
return
if(reagent_container)
- if(attached)
- visible_message(span_warning("[attached] is detached from [src]."))
+ if(attachment)
+ visible_message(span_warning("[attachment?.attached_to] is detached from [src]."))
detach_iv()
reagent_container.forceMove(drop_location())
reagent_container = null
@@ -346,7 +351,7 @@
mode = IV_INJECTING
return
// Prevent blood draining from non-living
- if(attached && !isliving(attached))
+ if(attachment && !isliving(attachment.attached_to))
mode = IV_INJECTING
return
mode = !mode
@@ -367,7 +372,50 @@
. += span_notice("It has an internal chemical storage.")
else
. += span_notice("No chemicals are attached.")
- . += span_notice("[attached ? attached : "Nothing"] is connected.")
+ . += span_notice("[attachment ? attachment.attached_to : "Nothing"] is connected.")
+
+/// Information and effects about where an IV drip is attached to
+// Lifetime is managed by the iv_drip, which will delete the iv_drip_attachment after
+// a process if the attached object is invalid.
+// iv_drip_attachment should never outlive iv_drip.
+/datum/iv_drip_attachment
+ var/obj/machinery/iv_drip/iv_drip
+ var/atom/attached_to
+
+ VAR_PRIVATE
+ datum/beam/beam
+ datum/component/tug_towards/tug_to_me
+
+/datum/iv_drip_attachment/New(
+ obj/machinery/iv_drip/iv_drip,
+ atom/attached_to
+)
+ src.iv_drip = iv_drip
+ src.attached_to = attached_to
+
+ tug_to_me = attached_to.AddComponent(/datum/component/tug_towards, iv_drip)
+
+ beam = iv_drip.Beam(
+ attached_to,
+ icon_state = "1-full",
+ beam_color = COLOR_SILVER,
+ layer = BELOW_MOB_LAYER,
+
+ // Come out from the spout
+ override_origin_pixel_x = 9,
+ override_origin_pixel_y = 2,
+ )
+
+/datum/iv_drip_attachment/Destroy(force)
+ tug_to_me.remove_tug_target(iv_drip)
+ tug_to_me = null
+
+ iv_drip = null
+ attached_to = null
+
+ QDEL_NULL(beam)
+
+ return ..()
/datum/crafting_recipe/iv_drip
name = "IV drip"
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index c8d0249fca02d..ceb5716849a79 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -7,6 +7,7 @@
desc = "Make dark."
power_channel = AREA_USAGE_LIGHT
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02
+ mouse_over_pointer = MOUSE_HAND_POINTER
/// Set this to a string, path, or area instance to control that area
/// instead of the switch's location.
var/area/area = null
diff --git a/code/game/machinery/newscaster/newscaster_machine.dm b/code/game/machinery/newscaster/newscaster_machine.dm
index 62d70e1e6925c..2097e919247e5 100644
--- a/code/game/machinery/newscaster/newscaster_machine.dm
+++ b/code/game/machinery/newscaster/newscaster_machine.dm
@@ -231,7 +231,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
data["channelLocked"] = current_channel.locked
data["channelCensored"] = current_channel.censored
- //We send all the information about all messages in existance.
+ //We send all the information about all messages in existence.
data["messages"] = message_list
data["wanted"] = wanted_info
@@ -590,7 +590,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
else
to_chat(user, span_warning("You cannot interface with silicon photo uploading!"))
if(!targetcam.stored.len)
- to_chat(usr, span_boldannounce("No images saved."))
+ to_chat(usr, span_bolddanger("No images saved."))
return
var/datum/picture/selection = targetcam.selectpicture(user)
if(selection)
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 39d6fe7d2ea0c..abd481d525d0c 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -134,7 +134,7 @@ Buildable meters
return ..()
/obj/item/pipe/proc/make_from_existing(obj/machinery/atmospherics/make_from)
- p_init_dir = make_from.initialize_directions
+ p_init_dir = make_from.get_init_directions()
setDir(make_from.dir)
pipename = make_from.name
add_atom_colour(make_from.color, FIXED_COLOUR_PRIORITY)
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index e64e01bbcf246..32e29a2e5dd0a 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -655,7 +655,7 @@ DEFINE_BITFIELD(turret_flags, list(
//Shooting Code:
- A.preparePixelProjectile(target, T)
+ A.aim_projectile(target, T)
A.firer = src
A.fired_from = src
if(ignore_faction)
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 7454f18551150..226e19bfe84f1 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -17,6 +17,7 @@
/obj/item/melee/baton/security,
/obj/item/ammo_box/magazine/recharge,
/obj/item/modular_computer,
+ /obj/item/gun/ballistic/automatic/battle_rifle,
))
/obj/machinery/recharger/RefreshParts()
@@ -55,6 +56,11 @@
var/obj/item/ammo_box/magazine/recharge/power_pack = charging
. += span_notice("- \The [charging]'s cell is at [PERCENT(power_pack.stored_ammo.len/power_pack.max_ammo)]% .")
return
+ if(istype(charging, /obj/item/gun/ballistic/automatic/battle_rifle))
+ var/obj/item/gun/ballistic/automatic/battle_rifle/recalibrating_gun = charging
+ . += span_notice("- \The [charging]'s system degradation is at stage [recalibrating_gun.degradation_stage] of [recalibrating_gun.degradation_stage_max]%.")
+ . += span_notice("- \The [charging]'s degradation buffer is at [PERCENT(recalibrating_gun.shots_before_degradation/recalibrating_gun.max_shots_before_degradation)]% .")
+ return
. += span_notice("- \The [charging] is not reporting a power level.")
/obj/machinery/recharger/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
@@ -158,6 +164,23 @@
using_power = TRUE
update_appearance()
return
+
+ if(istype(charging, /obj/item/gun/ballistic/automatic/battle_rifle))
+ var/obj/item/gun/ballistic/automatic/battle_rifle/recalibrating_gun = charging
+
+ if(recalibrating_gun.degradation_stage)
+ recalibrating_gun.attempt_recalibration(FALSE)
+ use_energy(active_power_usage * recharge_coeff * seconds_per_tick)
+ using_power = TRUE
+
+ else if(recalibrating_gun.shots_before_degradation < recalibrating_gun.max_shots_before_degradation)
+ recalibrating_gun.attempt_recalibration(TRUE, 1 * recharge_coeff)
+ use_energy(active_power_usage * recharge_coeff * seconds_per_tick)
+ using_power = TRUE
+
+ update_appearance()
+ return
+
if(!using_power && !finished_recharging) //Inserted thing is at max charge/ammo, notify those around us
finished_recharging = TRUE
playsound(src, 'sound/machines/ping.ogg', 30, TRUE)
diff --git a/code/game/machinery/scanner_gate.dm b/code/game/machinery/scanner_gate.dm
index 3d87e4cb60b9a..ee93f41cf552e 100644
--- a/code/game/machinery/scanner_gate.dm
+++ b/code/game/machinery/scanner_gate.dm
@@ -5,7 +5,6 @@
#define SCANGATE_WANTED "Wanted"
#define SCANGATE_SPECIES "Species"
#define SCANGATE_NUTRITION "Nutrition"
-#define SCANGATE_CONTRABAND "Contraband"
/obj/machinery/scanner_gate
name = "scanner gate"
@@ -39,8 +38,6 @@
var/minus_false_beep = 0
///Base false positive/negative chance
var/base_false_beep = 5
- ///Is an n-spect scanner attached to the gate? Enables contraband scanning.
- var/obj/item/inspector/n_spect = null
///List of species that can be scanned by the gate. Supports adding more species' IDs during in-game.
var/list/available_species = list(
SPECIES_HUMAN,
@@ -76,12 +73,6 @@
for(var/datum/stock_part/scanning_module/scanning_module in component_parts)
minus_false_beep = scanning_module.tier //The better are scanninning modules - the lower is chance of False Positives
-/obj/machinery/scanner_gate/atom_deconstruct(disassembled)
- . = ..()
- if(n_spect)
- n_spect.forceMove(drop_location())
- n_spect = null
-
/obj/machinery/scanner_gate/examine(mob/user)
. = ..()
@@ -90,18 +81,6 @@
. += span_notice("The control panel is ID-locked. Swipe a valid ID to unlock it.")
else
. += span_notice("The control panel is unlocked. Swipe an ID to lock it.")
- if(n_spect)
- . += span_notice("The scanner is equipped with an N-Spect scanner. Use a [span_boldnotice("crowbar")] to uninstall.")
-
-/obj/machinery/scanner_gate/add_context(atom/source, list/context, obj/item/held_item, mob/user)
- . = ..()
- if(n_spect && held_item?.tool_behaviour == TOOL_CROWBAR)
- context[SCREENTIP_CONTEXT_LMB] = "Remove N-Spect scanner"
- return CONTEXTUAL_SCREENTIP_SET
- if(!n_spect && istype(held_item, /obj/item/inspector))
- context[SCREENTIP_CONTEXT_LMB] = "Install N-Spect scanner"
- return CONTEXTUAL_SCREENTIP_SET
-
/obj/machinery/scanner_gate/proc/on_entered(datum/source, atom/movable/thing)
SIGNAL_HANDLER
@@ -136,19 +115,6 @@
return
set_scanline("passive")
-/obj/machinery/scanner_gate/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
- if(istype(tool, /obj/item/inspector))
- if(n_spect)
- to_chat(user, span_warning("The scanner is already equipped with an N-Spect scanner."))
- return ITEM_INTERACT_BLOCKING
- else
- to_chat(user, span_notice("You install an N-Spect scanner on [src]."))
- n_spect = tool
- if(!user.transferItemToLoc(tool, src))
- return ITEM_INTERACT_BLOCKING
- return ITEM_INTERACT_SUCCESS
- return NONE
-
/obj/machinery/scanner_gate/attackby(obj/item/attacking_item, mob/user, params)
var/obj/item/card/id/card = attacking_item.GetID()
if(card)
@@ -171,24 +137,6 @@
wires.interact(user)
return ..()
-/obj/machinery/scanner_gate/crowbar_act(mob/living/user, obj/item/tool)
- . = ..()
- if(n_spect)
- if(locked)
- balloon_alert(user, "locked!")
- return ITEM_INTERACT_BLOCKING
-
- to_chat(user, span_notice("You uninstall [n_spect] from [src]."))
- n_spect.forceMove(drop_location())
- return ITEM_INTERACT_SUCCESS
-
-/obj/machinery/scanner_gate/Exited(atom/gone)
- . = ..()
- if(gone == n_spect)
- n_spect = null
- if(scangate_mode == SCANGATE_CONTRABAND)
- scangate_mode = SCANGATE_NONE
-
/obj/machinery/scanner_gate/emag_act(mob/user, obj/item/card/emag/emag_card)
if(obj_flags & EMAGGED)
return FALSE
@@ -202,6 +150,7 @@
var/beep = FALSE
var/color = null
var/detected_thing = null
+ var/bypassed = FALSE
playsound(src, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE)
switch(scangate_mode)
if(SCANGATE_NONE)
@@ -251,7 +200,7 @@
if((!HAS_TRAIT(scanned_human, TRAIT_MINDSHIELD)) && (isnull(idcard) || !(ACCESS_WEAPONS in idcard.access))) // mindshield or ID card with weapons access, like bartender
beep = TRUE
break
- say("[detected_thing] detection bypassed.")
+ bypassed = TRUE
break
else
for(var/obj/item/content in thing.get_all_contents_skipping_traits(TRAIT_CONTRABAND_BLOCKER))
@@ -267,14 +216,6 @@
if(scanned_human.nutrition >= detect_nutrition && detect_nutrition == NUTRITION_LEVEL_FAT)
beep = TRUE
detected_thing = "Obesity"
- if(SCANGATE_CONTRABAND)
- for(var/obj/item/content in thing.get_all_contents_skipping_traits(TRAIT_CONTRABAND_BLOCKER))
- detected_thing = "Contraband"
- if(content.is_contraband())
- beep = TRUE
- break
- if(!n_spect.scans_correctly)
- beep = !beep //We do a little trolling
if(reverse)
beep = !beep
@@ -291,6 +232,8 @@
assembly?.activate()
else
SEND_SIGNAL(src, COMSIG_SCANGATE_PASS_NO_TRIGGER, thing)
+ if(bypassed)
+ say("[detected_thing] detection bypassed.")
if(!ignore_signals)
color = wires.get_color_of_wire(WIRE_DENY)
var/obj/item/assembly/assembly = wires.get_attached(color)
@@ -338,7 +281,6 @@
data["disease_threshold"] = disease_threshold
data["target_species_id"] = detect_species_id
data["target_nutrition"] = detect_nutrition
- data["contraband_enabled"] = !!n_spect
data["target_zombie"] = (detect_species_id == SPECIES_ZOMBIE)
return data
@@ -385,7 +327,7 @@
/obj/machinery/scanner_gate/preset_guns
locked = TRUE
- req_access = ACCESS_SECURITY
+ req_access = list(ACCESS_SECURITY)
scangate_mode = SCANGATE_GUNS
#undef SCANGATE_NONE
@@ -395,4 +337,3 @@
#undef SCANGATE_WANTED
#undef SCANGATE_SPECIES
#undef SCANGATE_NUTRITION
-#undef SCANGATE_CONTRABAND
diff --git a/code/game/objects/effects/anomalies/_anomalies.dm b/code/game/objects/effects/anomalies/_anomalies.dm
index f249d22500c30..035a6e05d9044 100644
--- a/code/game/objects/effects/anomalies/_anomalies.dm
+++ b/code/game/objects/effects/anomalies/_anomalies.dm
@@ -11,10 +11,13 @@
var/obj/item/assembly/signaler/anomaly/anomaly_core = /obj/item/assembly/signaler/anomaly
var/area/impact_area
+ /// How long till we seppuku? Blocked by immortal
var/lifespan = ANOMALY_COUNTDOWN_TIMER
var/death_time
+ /// Color of the countdown effect
var/countdown_colour
+ /// Reference to the countdown effect
var/obj/effect/countdown/anomaly/countdown
/// Do we drop a core when we're neutralized?
@@ -129,7 +132,6 @@
to_chat(user, span_notice("Analyzing... [src]'s unstable field is not fluctuating along a stable frequency."))
return ITEM_INTERACT_BLOCKING
-
///Stabilize an anomaly, letting it stay around forever or untill destabilizes by a player. An anomaly without a core can't be signalled, but can be destabilized
/obj/effect/anomaly/proc/stabilize(anchor = FALSE, has_core = TRUE)
immortal = TRUE
diff --git a/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm b/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm
index d722d90ed1172..379143081998d 100644
--- a/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm
+++ b/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm
@@ -3,9 +3,10 @@
name = "bioscrambler anomaly"
icon_state = "bioscrambler"
anomaly_core = /obj/item/assembly/signaler/anomaly/bioscrambler
- immortal = TRUE
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS
layer = ABOVE_MOB_LAYER
+ lifespan = ANOMALY_COUNTDOWN_TIMER * 2
+
/// Who are we moving towards?
var/datum/weakref/pursuit_target
/// Cooldown for every anomaly pulse
@@ -80,6 +81,10 @@
/obj/effect/anomaly/bioscrambler/docile/update_target()
return
+/obj/effect/anomaly/bioscrambler/detonate()
+ COOLDOWN_RESET(src, pulse_cooldown)
+ anomalyEffect()
+
/// Visual effect spawned when the bioscrambler scrambles your bio
/obj/effect/temp_visual/circle_wave
icon = 'icons/effects/64x64.dmi'
diff --git a/code/game/objects/effects/anomalies/anomalies_bluespace.dm b/code/game/objects/effects/anomalies/anomalies_bluespace.dm
index 7b1de41e5640a..5c941050bfd00 100644
--- a/code/game/objects/effects/anomalies/anomalies_bluespace.dm
+++ b/code/game/objects/effects/anomalies/anomalies_bluespace.dm
@@ -24,6 +24,9 @@
do_teleport(AM, locate(AM.x, AM.y, AM.z), 8, channel = TELEPORT_CHANNEL_BLUESPACE)
/obj/effect/anomaly/bluespace/detonate()
+ new /obj/effect/temp_visual/circle_wave/bluespace(get_turf(src))
+ playsound(src, 'sound/effects/magic/cosmic_energy.ogg', vol = 50)
+
var/turf/T = pick(get_area_turfs(impact_area))
if(!T)
return
@@ -110,3 +113,8 @@
var/mob/living/living = bumpee
living.apply_status_effect(/datum/status_effect/teleport_madness)
+
+/obj/effect/temp_visual/circle_wave/bluespace
+ color = COLOR_BLUE_LIGHT
+ duration = 1 SECONDS
+ amount_to_scale = 5
diff --git a/code/game/objects/effects/anomalies/anomalies_dimensional.dm b/code/game/objects/effects/anomalies/anomalies_dimensional.dm
index 53129c0e9ce3f..accbe993ab189 100644
--- a/code/game/objects/effects/anomalies/anomalies_dimensional.dm
+++ b/code/game/objects/effects/anomalies/anomalies_dimensional.dm
@@ -3,7 +3,7 @@
name = "dimensional anomaly"
icon_state = "dimensional"
anomaly_core = /obj/item/assembly/signaler/anomaly/dimensional
- immortal = TRUE
+ lifespan = ANOMALY_COUNTDOWN_TIMER * 20 // will generally be killed off by reaching max teleports first
move_chance = 0
/// Range of effect, if left alone anomaly will convert a 2(range)+1 squared area.
var/range = 3
@@ -13,6 +13,12 @@
var/datum/dimension_theme/theme
/// Effect displaying on the anomaly to represent the theme.
var/mutable_appearance/theme_icon
+ /// How many times we can still teleport. Delete self if it hits 0 and we try to teleport. If immortal, will simply stay where it is
+ var/teleports_left
+ /// Minimum teleports it will do before going away permanently
+ var/minimum_teleports = 1
+ /// Maximum teleports it will do before going away permanently
+ var/maximum_teleports = 4
/obj/effect/anomaly/dimensional/Initialize(mapload, new_lifespan, drops_core)
. = ..()
@@ -21,6 +27,8 @@
animate(src, transform = matrix()*0.85, time = 3, loop = -1)
animate(transform = matrix(), time = 3, loop = -1)
+ teleports_left = rand(minimum_teleports, maximum_teleports)
+
/obj/effect/anomaly/dimensional/Destroy()
theme = null
target_turfs = null
@@ -37,6 +45,10 @@
if (!theme)
prepare_area()
if (!target_turfs.len)
+ if(teleports_left <= 0 && !immortal)
+ detonate()
+ return
+ teleports_left--
relocate()
return
@@ -80,6 +92,9 @@
src.forceMove(new_turf)
prepare_area()
+/obj/effect/anomaly/dimensional/detonate()
+ qdel(src)
+
/obj/effect/temp_visual/transmute_tile_flash
icon = 'icons/effects/effects.dmi'
icon_state = "shield-flash"
diff --git a/code/game/objects/effects/anomalies/anomalies_gravity.dm b/code/game/objects/effects/anomalies/anomalies_gravity.dm
index 82b55542246c7..40cdcbcb15e49 100644
--- a/code/game/objects/effects/anomalies/anomalies_gravity.dm
+++ b/code/game/objects/effects/anomalies/anomalies_gravity.dm
@@ -82,6 +82,10 @@
A.throw_at(target, 5, 1)
boing = 0
+/obj/effect/anomaly/grav/detonate()
+ new /obj/effect/temp_visual/circle_wave/gravity(get_turf(src))
+ playsound(src, 'sound/effects/magic/cosmic_energy.ogg', vol = 50)
+
/obj/effect/anomaly/grav/high
var/datum/proximity_monitor/advanced/gravity/grav_field
@@ -93,6 +97,7 @@
grav_field = new(src, 7, TRUE, rand(0, 3))
/obj/effect/anomaly/grav/high/detonate()
+ ..()
for(var/obj/machinery/gravity_generator/main/the_generator as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/gravity_generator/main))
if(is_station_level(the_generator.z))
the_generator.blackout()
@@ -111,3 +116,6 @@
. = ..()
transform *= 3
+
+/obj/effect/temp_visual/circle_wave/gravity
+ color = COLOR_NAVY
diff --git a/code/game/objects/effects/anomalies/anomalies_vortex.dm b/code/game/objects/effects/anomalies/anomalies_vortex.dm
index 0313f63146b52..4c3a63ae5a641 100644
--- a/code/game/objects/effects/anomalies/anomalies_vortex.dm
+++ b/code/game/objects/effects/anomalies/anomalies_vortex.dm
@@ -62,3 +62,13 @@
SSexplosions.medturf += T
if(EXPLODE_LIGHT)
SSexplosions.lowturf += T
+
+/obj/effect/anomaly/bhole/detonate()
+ new /obj/effect/temp_visual/circle_wave/vortex(get_turf(src))
+ playsound(src, 'sound/effects/hallucinations/far_noise.ogg', vol = 50)
+
+/obj/effect/temp_visual/circle_wave/vortex
+ color = COLOR_BLACK
+ duration = 3 SECONDS
+ amount_to_scale = 4
+
diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm
index c3bdfbdb89543..ad8d9b9f13b64 100644
--- a/code/game/objects/effects/decals/cleanable/humans.dm
+++ b/code/game/objects/effects/decals/cleanable/humans.dm
@@ -272,9 +272,9 @@
for(var/Ddir in GLOB.cardinals)
if(old_entered_dirs & Ddir)
- entered_dirs |= angle2dir_cardinal(dir2angle(Ddir) + ang_change)
+ entered_dirs |= turn_cardinal(Ddir, ang_change)
if(old_exited_dirs & Ddir)
- exited_dirs |= angle2dir_cardinal(dir2angle(Ddir) + ang_change)
+ exited_dirs |= turn_cardinal(Ddir, ang_change)
update_appearance()
return ..()
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index b90ebe54ffaf2..71817de3a1052 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -28,7 +28,7 @@
name = "thermite"
desc = "Looks hot."
icon = 'icons/effects/fire.dmi'
- icon_state = "2" //what?
+ icon_state = "medium" //what?
anchored = TRUE
plane = ABOVE_GAME_PLANE
layer = FLY_LAYER
diff --git a/code/game/objects/effects/particles/fire.dm b/code/game/objects/effects/particles/fire.dm
index 9904685807364..481849c00eb1d 100644
--- a/code/game/objects/effects/particles/fire.dm
+++ b/code/game/objects/effects/particles/fire.dm
@@ -34,6 +34,9 @@
spin = generator(GEN_NUM, list(-15,15), NORMAL_RAND)
scale = generator(GEN_VECTOR, list(0.5,0.5), list(2,2), NORMAL_RAND)
+/particles/embers/minor
+ spawning = 1
+
/particles/embers/spark
count = 3
spawning = 2
diff --git a/code/game/objects/effects/particles/smoke.dm b/code/game/objects/effects/particles/smoke.dm
index f7c07231cf2c1..cc4fec3583911 100644
--- a/code/game/objects/effects/particles/smoke.dm
+++ b/code/game/objects/effects/particles/smoke.dm
@@ -107,16 +107,16 @@
"steam_cloud_4" = 1,
"steam_cloud_5" = 1,
)
- color = "#FFFFFFAA"
- count = 6
- spawning = 0.5
+ color = "#FFFFFF8A"
+ count = 5
+ spawning = 0.3
lifespan = 3 SECONDS
fade = 1.2 SECONDS
fadein = 0.4 SECONDS
position = generator(GEN_BOX, list(-17,-15,0), list(24,15,0), NORMAL_RAND)
scale = generator(GEN_VECTOR, list(0.9,0.9), list(1.1,1.1), NORMAL_RAND)
drift = generator(GEN_SPHERE, list(-0.01,0), list(0.01,0.01), UNIFORM_RAND)
- spin = generator(GEN_NUM, list(-3,3), NORMAL_RAND)
+ spin = generator(GEN_NUM, list(-2,2), NORMAL_RAND)
gravity = list(0.05, 0.28)
friction = 0.3
grow = 0.037
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 18f633504264f..dbb5ad3d8bdba 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -130,29 +130,36 @@
linked = null
return ..()
-/obj/effect/portal/attack_ghost(mob/dead/observer/O)
- if(!teleport(O, TRUE))
+/obj/effect/portal/attack_ghost(mob/dead/observer/ghost)
+ if(!teleport(ghost, force = TRUE))
return ..()
+ return BULLET_ACT_FORCE_PIERCE
-/obj/effect/portal/proc/teleport(atom/movable/M, force = FALSE)
- if(!force && (!istype(M) || iseffect(M) || (ismecha(M) && !mech_sized) || (!isobj(M) && !ismob(M)))) //Things that shouldn't teleport.
+/obj/effect/portal/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit)
+ if (!teleport(hitting_projectile, force = TRUE))
+ return ..()
+ return BULLET_ACT_FORCE_PIERCE
+
+/obj/effect/portal/proc/teleport(atom/movable/moving, force = FALSE)
+ if(!force && (!istype(moving) || iseffect(moving) || (ismecha(moving) && !mech_sized) || (!isobj(moving) && !ismob(moving)))) //Things that shouldn't teleport.
return
var/turf/real_target = get_link_target_turf()
if(!istype(real_target))
return FALSE
- if(!force && (!ismecha(M) && !isprojectile(M) && M.anchored && !allow_anchored))
+
+ if(!force && (!ismecha(moving) && !isprojectile(moving) && moving.anchored && !allow_anchored))
return
var/no_effect = FALSE
if(last_effect == world.time || sparkless)
no_effect = TRUE
else
last_effect = world.time
- var/turf/start_turf = get_turf(M)
- if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel, forced = force_teleport))
- if(isprojectile(M))
- var/obj/projectile/P = M
- P.ignore_source_check = TRUE
- new /obj/effect/temp_visual/portal_animation(start_turf, src, M)
+ var/turf/start_turf = get_turf(moving)
+ if(do_teleport(moving, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel, forced = force_teleport))
+ if(isprojectile(moving))
+ var/obj/projectile/proj = moving
+ proj.ignore_source_check = TRUE
+ new /obj/effect/temp_visual/portal_animation(start_turf, src, moving)
playsound(start_turf, SFX_PORTAL_ENTER, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
playsound(real_target, SFX_PORTAL_ENTER, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
return TRUE
@@ -189,7 +196,7 @@
linked = P
break
-/obj/effect/portal/permanent/teleport(atom/movable/M, force = FALSE)
+/obj/effect/portal/permanent/teleport(atom/movable/moving, force = FALSE)
set_linked() // update portal links
. = ..()
@@ -213,9 +220,9 @@
name = "one-use portal"
desc = "This is probably the worst decision you'll ever make in your life."
-/obj/effect/portal/permanent/one_way/one_use/teleport(atom/movable/M, force = FALSE)
+/obj/effect/portal/permanent/one_way/one_use/teleport(atom/movable/moving, force = FALSE)
. = ..()
- if (. && !isdead(M))
+ if (. && !isdead(moving))
expire()
/**
diff --git a/code/game/objects/effects/shared_particle_holder.dm b/code/game/objects/effects/shared_particle_holder.dm
new file mode 100644
index 0000000000000..2fe0c97647986
--- /dev/null
+++ b/code/game/objects/effects/shared_particle_holder.dm
@@ -0,0 +1,89 @@
+#define SHARED_PARTICLE_HOLDER_INDEX 1
+#define SHARED_PARTICLE_USER_NUM_INDEX 2
+// Assoc list of particle type/key -> list(list of particle holders, number of particle users)
+GLOBAL_LIST_EMPTY(shared_particles)
+
+//A more abstract version of particle holder not bound to a specific object
+/obj/effect/abstract/shared_particle_holder
+ name = "shared particle holder"
+ desc = "How are you reading this? Please make a bug report :)"
+ appearance_flags = KEEP_APART|KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
+ vis_flags = VIS_INHERIT_PLANE
+ layer = ABOVE_ALL_MOB_LAYER
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ anchored = TRUE
+ /// Holds info about how this particle emitter works
+ /// See \code\__DEFINES\particles.dm
+ var/particle_flags = NONE
+
+/obj/effect/abstract/shared_particle_holder/Initialize(mapload, particle_path = /particles/smoke, particle_flags = NONE)
+ . = ..()
+ // Shouldn't exist outside of nullspace
+ loc = null
+ src.particle_flags = particle_flags
+ particles = new particle_path()
+
+/obj/effect/abstract/shared_particle_holder/Destroy(force)
+ QDEL_NULL(particles)
+ return ..()
+
+/* Adds (or creates and adds) a shared particle holder
+ * Shared particle holders are held in nullspace and added to vis_contents of all atoms using it
+ * in order to save clientside performance by making clients only render 3-5 particle holders
+ * for 400 objects using them. This should be prioritized over normal particles when possible if it is known
+ * that there will be a lot of objects using certain particles.
+ * custom_key can be used to create a new pool of already existing particle type in case you're planning to edit holder's color or properties
+ * pool_size controls how many particle holders per type are created. Any objects over this cap will pick an existing holder from the pool
+ */
+/atom/movable/proc/add_shared_particles(particle_type, custom_key = null, particle_flags = NONE, pool_size = 3)
+ var/particle_key = custom_key || "[particle_type]"
+ if (!GLOB.shared_particles[particle_key])
+ GLOB.shared_particles[particle_key] = list(list(new /obj/effect/abstract/shared_particle_holder(null, particle_type, particle_flags)), 1)
+ vis_contents += GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX][1]
+ return GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX][1]
+
+ var/list/type_holders = GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX]
+ for (var/obj/effect/abstract/shared_particle_holder/particle_holder as anything in type_holders)
+ if (particle_holder in vis_contents)
+ return particle_holder
+
+ if (length(type_holders) < pool_size)
+ var/obj/effect/abstract/shared_particle_holder/new_holder = new(null, particle_type, particle_flags)
+ type_holders += new_holder
+ vis_contents += new_holder
+ GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] += 1
+ return new_holder
+
+ var/obj/effect/abstract/shared_particle_holder/particle_holder = pick(type_holders)
+ vis_contents += particle_holder
+ GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] += 1
+ return particle_holder
+
+/* Removes shared particles from object's vis_contents and disposes of it if nothing uses that type/key of particle
+ * particle_key can be either a type (if no custom_key was passed) or said custom_key
+ */
+/atom/movable/proc/remove_shared_particles(particle_key, delete_on_empty = TRUE)
+ if (!particle_key)
+ return
+
+ if (ispath(particle_key))
+ particle_key = "[particle_key]"
+
+ if (!GLOB.shared_particles[particle_key])
+ return
+
+ var/list/type_holders = GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX]
+ for (var/obj/effect/abstract/shared_particle_holder/particle_holder as anything in type_holders)
+ if (!(particle_holder in vis_contents))
+ continue
+
+ vis_contents -= particle_holder
+ GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] -= 1
+
+ if (delete_on_empty && GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] <= 0)
+ QDEL_LIST(type_holders)
+ GLOB.shared_particles -= particle_key
+ return
+
+#undef SHARED_PARTICLE_HOLDER_INDEX
+#undef SHARED_PARTICLE_USER_NUM_INDEX
diff --git a/code/game/objects/effects/spawners/random/structure.dm b/code/game/objects/effects/spawners/random/structure.dm
index 289a2aba27600..a83b88c3a9863 100644
--- a/code/game/objects/effects/spawners/random/structure.dm
+++ b/code/game/objects/effects/spawners/random/structure.dm
@@ -260,22 +260,117 @@
)
/obj/effect/spawner/random/structure/shipping_container
- name = "shipping container spawner"
+ name = "random shipping container spawner"
icon = 'icons/obj/fluff/containers.dmi'
icon_state = "random_container"
loot = list(
+ /obj/structure/shipping_container = 3,
+ /obj/structure/shipping_container/amsco = 3,
+ /obj/structure/shipping_container/blue = 3,
/obj/structure/shipping_container/conarex = 3,
/obj/structure/shipping_container/deforest = 3,
- /obj/structure/shipping_container/kahraman = 3,
- /obj/structure/shipping_container/kahraman/alt = 3,
+ /obj/structure/shipping_container/defaced = 3,
+ /obj/structure/shipping_container/great_northern = 3,
+ /obj/structure/shipping_container/green = 3,
+ /obj/structure/shipping_container/kahraman = 2,
+ /obj/structure/shipping_container/kahraman/alt = 1,
/obj/structure/shipping_container/kosmologistika = 3,
- /obj/structure/shipping_container/interdyne = 3,
+ /obj/structure/shipping_container/magenta = 3,
/obj/structure/shipping_container/nakamura = 3,
/obj/structure/shipping_container/nanotrasen = 3,
- /obj/structure/shipping_container/nthi = 3,
- /obj/structure/shipping_container/vitezstvi = 3,
+ /obj/structure/shipping_container/ntfid = 2,
+ /obj/structure/shipping_container/ntfid/defaced = 1,
+ /obj/structure/shipping_container/nthi = 1,
+ /obj/structure/shipping_container/nthi/minor = 1,
+ /obj/structure/shipping_container/nthi/precious = 1,
+ /obj/structure/shipping_container/orange = 3,
+ /obj/structure/shipping_container/purple = 3,
+ /obj/structure/shipping_container/red = 3,
+ /obj/structure/shipping_container/sunda = 3,
+ /obj/structure/shipping_container/vitezstvi = 2,
+ /obj/structure/shipping_container/vitezstvi/flags = 1,
+ /obj/structure/shipping_container/yellow = 3,
+ /obj/structure/shipping_container/biosustain = 3,
/obj/structure/shipping_container/cybersun = 2,
- /obj/structure/shipping_container/donk_co = 2,
- /obj/structure/shipping_container/gorlex = 1,
+ /obj/structure/shipping_container/cybersun/defaced = 1,
+ /obj/structure/shipping_container/donk_co = 3,
+ /obj/structure/shipping_container/exagon = 1,
+ /obj/structure/shipping_container/exagon/minor = 1,
+ /obj/structure/shipping_container/exagon/precious = 1,
+ /obj/structure/shipping_container/gorlex = 2,
+ /obj/structure/shipping_container/gorlex/red = 1,
+ /obj/structure/shipping_container/interdyne = 3,
+ /obj/structure/shipping_container/oms = 3,
+ /obj/structure/shipping_container/tiger_coop = 2,
+ /obj/structure/shipping_container/tiger_coop = 1,
+ )
+
+/obj/effect/spawner/random/structure/shipping_container/blank
+ name = "random blank shipping container spawner"
+ loot = list(
+ /obj/structure/shipping_container = 3,
+ /obj/structure/shipping_container/blue = 3,
+ /obj/structure/shipping_container/green = 3,
+ /obj/structure/shipping_container/magenta = 3,
+ /obj/structure/shipping_container/orange = 3,
+ /obj/structure/shipping_container/purple = 3,
+ /obj/structure/shipping_container/red = 3,
+ /obj/structure/shipping_container/yellow = 3,
+ )
+
+/obj/effect/spawner/random/structure/syndicate //syndicate containers only
+ name = "random syndicate shipping container spawner"
+ loot = list(
+ /obj/structure/shipping_container/biosustain = 3,
+ /obj/structure/shipping_container/cybersun = 2,
+ /obj/structure/shipping_container/cybersun/defaced = 1,
+ /obj/structure/shipping_container/donk_co = 3,
+ /obj/structure/shipping_container/exagon = 1,
+ /obj/structure/shipping_container/exagon/minor = 1,
+ /obj/structure/shipping_container/exagon/precious = 1,
+ /obj/structure/shipping_container/gorlex = 2,
/obj/structure/shipping_container/gorlex/red = 1,
+ /obj/structure/shipping_container/interdyne = 3,
+ /obj/structure/shipping_container/oms = 3,
+ /obj/structure/shipping_container/tiger_coop = 2,
+ /obj/structure/shipping_container/tiger_coop = 1,
+ )
+
+/obj/effect/spawner/random/structure/shipping_container/station_appropriate //places extra emphasis on NT containers, excludes syndicate companies (except Donk. Co.) entirely
+ name = "station-appropriate shipping container spawner"
+ loot = list(
+ /obj/structure/shipping_container/nanotrasen = 5,
+ /obj/structure/shipping_container/nthi = 1,
+ /obj/structure/shipping_container/nthi/minor = 1,
+ /obj/structure/shipping_container/nthi/precious = 1,
+ /obj/structure/shipping_container/ntfid = 3,
+ /obj/structure/shipping_container/nakamura = 2,
+ /obj/structure/shipping_container/deforest = 2,
+ /obj/structure/shipping_container/kosmologistika = 2,
+ /obj/structure/shipping_container/donk_co = 2,
+ /obj/structure/shipping_container/amsco = 1,
+ /obj/structure/shipping_container/conarex = 1,
+ /obj/structure/shipping_container/kahraman = 1,
+ /obj/structure/shipping_container/kahraman/alt = 1,
+ /obj/structure/shipping_container/sunda = 1,
+ /obj/structure/shipping_container/vitezstvi = 1,
+ )
+
+/obj/effect/spawner/random/structure/shipping_container/reefer //reefers only
+ name = "random reefer container spawner"
+ loot = list(
+ /obj/structure/shipping_container/reefer = 3,
+ /obj/structure/shipping_container/reefer/biosustain = 3,
+ /obj/structure/shipping_container/reefer/deforest = 3,
+ /obj/structure/shipping_container/reefer/interdyne = 3,
+ )
+
+/obj/effect/spawner/random/structure/shipping_container/gas //gas cisterns only
+ name = "random gas cistern spawner"
+ loot = list(
+ /obj/structure/shipping_container/gas = 3,
+ /obj/structure/shipping_container/gas/apda = 3,
+ /obj/structure/shipping_container/gas/apda/hydrogen = 3,
+ /obj/structure/shipping_container/gas/exagon = 3,
+ /obj/structure/shipping_container/gas/nthi = 3,
)
diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm
index 31ca55a54fb7b..0920b8e8b72a8 100644
--- a/code/game/objects/effects/step_triggers.dm
+++ b/code/game/objects/effects/step_triggers.dm
@@ -17,15 +17,15 @@
/obj/effect/step_trigger/proc/Trigger(atom/movable/A)
return 0
-/obj/effect/step_trigger/proc/on_entered(datum/source, H as mob|obj)
+/obj/effect/step_trigger/proc/on_entered(datum/source, atom/movable/entering)
SIGNAL_HANDLER
- if(!H || H == src)
+ if(!entering || entering == src || entering.invisibility >= INVISIBILITY_ABSTRACT || istype(entering, /atom/movable/mirage_holder)) //dont teleport ourselves, abstract objects, and mirage holders due to init shenanigans
return
- if(isobserver(H) && !affect_ghosts)
+ if(isobserver(entering) && !affect_ghosts)
return
- if(!ismob(H) && mobs_only)
+ if(!ismob(entering) && mobs_only)
return
- INVOKE_ASYNC(src, PROC_REF(Trigger), H)
+ INVOKE_ASYNC(src, PROC_REF(Trigger), entering)
/obj/effect/step_trigger/singularity_act()
@@ -144,7 +144,7 @@
var/teleport_x_offset = 0
var/teleport_y_offset = 0
-/obj/effect/step_trigger/teleporter/offset/on_entered(datum/source, H as mob|obj, atom/old_loc)
+/obj/effect/step_trigger/teleporter/offset/on_entered(datum/source, atom/movable/entered, atom/old_loc)
if(!old_loc?.Adjacent(loc)) // prevents looping, if we were teleported into this then the old loc is usually not adjacent
return
return ..()
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index ae2ce27b100f6..0df5c1baee624 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -57,6 +57,12 @@
icon_state = "firing_effect"
duration = 3
+/obj/effect/temp_visual/dir_setting/firing_effect/Initialize(mapload, set_dir)
+ . = ..()
+ if (ismovable(loc))
+ var/atom/movable/spawned_inside = loc
+ spawned_inside.vis_contents += src
+
/obj/effect/temp_visual/dir_setting/firing_effect/setDir(newdir)
switch(newdir)
if(NORTH)
@@ -245,7 +251,7 @@
/obj/effect/temp_visual/fire
icon = 'icons/effects/fire.dmi'
- icon_state = "3"
+ icon_state = "heavy"
light_range = LIGHT_RANGE_FIRE
light_color = LIGHT_COLOR_FIRE
duration = 10
@@ -437,8 +443,7 @@
var/size_matrix = matrix()
if(size_calc_target)
layer = size_calc_target.layer + 0.01
- var/icon/I = icon(size_calc_target.icon, size_calc_target.icon_state, size_calc_target.dir)
- size_matrix = matrix() * (I.Height()/ICON_SIZE_Y)
+ size_matrix = matrix() * (size_calc_target.get_cached_height()/ICON_SIZE_Y)
transform = size_matrix //scale the bleed overlay's size based on the target's icon size
var/matrix/M = transform
if(shrink)
diff --git a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm
index 2d112aa205909..e9e043a598173 100644
--- a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm
+++ b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm
@@ -36,26 +36,19 @@
apply_vars(angle_override, p_x, p_y, color_override, scaling)
return ..()
-/obj/effect/projectile/proc/apply_vars(angle_override, p_x = 0, p_y = 0, color_override, scaling = 1, atom/new_loc, increment = 0)
- var/mutable_appearance/look = new(src)
- SET_PLANE_EXPLICIT(look, plane, new_loc || src)
- look.pixel_x = p_x
- look.pixel_y = p_y
+/obj/effect/projectile/proc/apply_vars(angle_override, p_x = 0, p_y = 0, color_override, scaling = 1, increment = 0)
+ pixel_x = p_x
+ pixel_y = p_y
if(color_override)
- look.color = color_override
- appearance = look
- scale_to(1,scaling, FALSE)
+ color = color_override
+ scale_to(1, scaling, FALSE)
turn_to(angle_override, FALSE)
- if(!isnull(new_loc)) //If you want to null it just delete it...
- forceMove(new_loc)
for(var/i in 1 to increment)
pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1)
pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1)
-/obj/effect/projectile_lighting
- var/owner
+/obj/effect/abstract/projectile_lighting
-/obj/effect/projectile_lighting/Initialize(mapload, color, range, intensity, owner_key)
+/obj/effect/abstract/projectile_lighting/Initialize(mapload, color, range, intensity)
. = ..()
set_light(range, intensity, color)
- owner = owner_key
diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm
index 8c4ea163232e1..e2323ce4413f9 100644
--- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm
+++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm
@@ -1,25 +1,3 @@
-/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5, light_range = 2, light_color_override, light_intensity = 1, instance_key) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported!
- if(!istype(starting) || !istype(ending) || !ispath(beam_type))
- return
- var/datum/point/midpoint = point_midpoint_points(starting, ending)
- var/obj/effect/projectile/tracer/PB = new beam_type
- if(isnull(light_color_override))
- light_color_override = color
- PB.apply_vars(angle_between_points(starting, ending), midpoint.return_px(), midpoint.return_py(), color, pixel_length_between_points(starting, ending) / ICON_SIZE_ALL, midpoint.return_turf(), 0)
- . = PB
- if(light_range > 0 && light_intensity > 0)
- var/list/turf/line = get_line(starting.return_turf(), ending.return_turf())
- tracing_line:
- for(var/i in line)
- var/turf/T = i
- for(var/obj/effect/projectile_lighting/PL in T)
- if(PL.owner == instance_key)
- continue tracing_line
- QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity, instance_key), qdel_in > 0? qdel_in : 5)
- line = null
- if(qdel_in)
- QDEL_IN(PB, qdel_in)
-
/obj/effect/projectile/tracer
name = "beam"
icon = 'icons/obj/weapons/guns/projectiles_tracer.dmi'
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 1a9306ca24f6b..f51023aa22387 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -27,7 +27,7 @@
///Icon state for mob worn overlays, if null the normal icon_state will be used.
var/worn_icon_state
///Icon state for the belt overlay, if null the normal icon_state will be used.
- var/belt_icon_state
+ var/inside_belt_icon_state
///Forced mob worn layer instead of the standard preferred size.
var/alternate_worn_layer
///The config type to use for greyscaled worn sprites. Both this and greyscale_colors must be assigned to work.
@@ -259,8 +259,10 @@
/// Has the item been reskinned?
var/current_skin
- ///// List of options to reskin.
+ /// List of options to reskin.
var/list/unique_reskin
+ /// If reskins change inhands as well
+ var/unique_reskin_changes_inhand = FALSE
/// Do we apply a click cooldown when resisting this object if it is restraining them?
var/resist_cooldown = CLICK_CD_BREAKOUT
@@ -943,7 +945,7 @@
/// Returns the icon used for overlaying the object on a belt
/obj/item/proc/get_belt_overlay()
- var/icon_state_to_use = belt_icon_state || icon_state
+ var/icon_state_to_use = inside_belt_icon_state || icon_state
if(greyscale_config_belt && greyscale_colors)
return mutable_appearance(SSgreyscale.GetColoredIconByType(greyscale_config_belt, greyscale_colors), icon_state_to_use)
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state_to_use)
@@ -1922,11 +1924,12 @@
return src
/// Checks if the bait is liked by the fish type or not. Returns a multiplier that affects the chance of catching it.
-/obj/item/proc/check_bait(obj/item/fish/fish_type)
+/obj/item/proc/check_bait(obj/item/fish/fish)
if(HAS_TRAIT(src, TRAIT_OMNI_BAIT))
return 1
var/catch_multiplier = 1
- var/list/properties = SSfishing.fish_properties[fish_type]
+
+ var/list/properties = SSfishing.fish_properties[isfish(fish) ? fish.type : fish]
//Bait matching likes doubles the chance
var/list/fav_bait = properties[FISH_PROPERTIES_FAV_BAIT]
for(var/bait_identifer in fav_bait)
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index d11c6e21d6981..a1f0001f651f8 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -239,10 +239,11 @@
/obj/item/blueprints/slime/edit_area(mob/user)
. = ..()
var/area/area = get_area(src)
+ var/list/turf_matrix = color_transition_filter("#2956B2")
for(var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists())
for(var/turf/area_turf as anything in zlevel_turfs)
area_turf.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- area_turf.add_atom_colour("#2956B2", FIXED_COLOUR_PRIORITY)
+ area_turf.add_atom_colour(turf_matrix, FIXED_COLOUR_PRIORITY)
area.area_flags |= XENOBIOLOGY_COMPATIBLE
qdel(src)
diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm
index d5769ceb8d798..7a8d70888f066 100644
--- a/code/game/objects/items/body_egg.dm
+++ b/code/game/objects/items/body_egg.dm
@@ -15,14 +15,14 @@
if(iscarbon(loc))
Insert(loc)
-/obj/item/organ/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/body_egg/on_mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags)
. = ..()
egg_owner.add_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT)
egg_owner.med_hud_set_status()
INVOKE_ASYNC(src, PROC_REF(AddInfectionImages), egg_owner)
-/obj/item/organ/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/body_egg/on_mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
. = ..()
egg_owner.remove_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT)
egg_owner.med_hud_set_status()
diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm
index f2d81ac4bde1d..8045646b075ca 100644
--- a/code/game/objects/items/chainsaw.dm
+++ b/code/game/objects/items/chainsaw.dm
@@ -68,6 +68,8 @@
toolspeed = active ? 0.5 : initial(toolspeed)
update_item_action_buttons()
+ return COMPONENT_NO_DEFAULT_MESSAGE
+
/obj/item/chainsaw/suicide_act(mob/living/carbon/user)
if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE))
user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!"))
diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm
index c91326afc97ff..6db6d8cb35c43 100644
--- a/code/game/objects/items/charter.dm
+++ b/code/game/objects/items/charter.dm
@@ -57,7 +57,9 @@
to_chat(user, span_notice("Your name has been sent to your employers for approval."))
// Autoapproves after a certain time
response_timer_id = addtimer(CALLBACK(src, PROC_REF(rename_station), new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
- to_chat(GLOB.admins, span_adminnotice("CUSTOM STATION RENAME: [ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT ) [ADMIN_CENTCOM_REPLY(user)]"))
+ to_chat(GLOB.admins,
+ span_adminnotice("CUSTOM STATION RENAME: [ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT ) [ADMIN_CENTCOM_REPLY(user)]"),
+ type = MESSAGE_TYPE_PRAYER)
for(var/client/admin_client in GLOB.admins)
if(admin_client.prefs.toggles & SOUND_ADMINHELP)
window_flash(admin_client, ignorepref = TRUE)
diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
index 619cd42ce5cf6..d8155b5032ace 100644
--- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
@@ -1471,6 +1471,16 @@
/datum/stock_part/scanning_module = 1,
/datum/stock_part/card_reader = 1)
+/obj/item/circuitboard/machine/mailsorter
+ name = "Mail Sorter"
+ greyscale_colors = CIRCUIT_COLOR_SUPPLY
+ build_path = /obj/machinery/mailsorter
+ req_components = list(
+ /obj/item/stack/sheet/glass = 1,
+ /datum/stock_part/matter_bin = 2,
+ /datum/stock_part/scanning_module = 1)
+ needs_anchored = TRUE
+
//Tram
/obj/item/circuitboard/machine/crossing_signal
name = "Crossing Signal"
diff --git a/code/game/objects/items/climbingrope.dm b/code/game/objects/items/climbingrope.dm
index 936858bbae757..46bc56e21fef2 100644
--- a/code/game/objects/items/climbingrope.dm
+++ b/code/game/objects/items/climbingrope.dm
@@ -24,7 +24,7 @@
. = ..()
var/list/look_binds = user.client.prefs.key_bindings["look up"]
. += span_notice("Firstly, look upwards by holding [english_list(look_binds, nothing_text = "(nothing bound)", and_text = " or ", comma_text = ", or ")]! ")
- . += span_notice("Then, click solid ground adjacent to the hole above you.")
+ . += span_notice("Then, click solid ground (or lattice/catwalk) adjacent to the hole above you.")
. += span_notice("The rope looks like you could use it [uses] times before it falls apart.")
/obj/item/climbing_hook/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
@@ -32,26 +32,27 @@
return NONE
return ranged_interact_with_atom(interacting_with, user, modifiers)
-/obj/item/climbing_hook/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
+/obj/item/climbing_hook/ranged_interact_with_atom(turf/open/interacting_with, mob/living/user, list/modifiers)
+ interacting_with = get_turf(interacting_with)
if(interacting_with.z == user.z)
return NONE
- var/turf/open/target = interacting_with
- if(!istype(target) || isopenspaceturf(target))
+ if(!istype(interacting_with) || !isturf(user.loc)) //better safe than sorry
return ITEM_INTERACT_BLOCKING
var/turf/user_turf = get_turf(user)
var/turf/above = GET_TURF_ABOVE(user_turf)
- if(target_blocked(target, above))
+ if(target_blocked(interacting_with, above))
+ balloon_alert(user, "cant get there!")
return ITEM_INTERACT_BLOCKING
- if(!isopenspaceturf(above) || !above.Adjacent(target)) //are we below a hole, is the target blocked, is the target adjacent to our hole
- balloon_alert(user, "blocked!")
+ if(!above.Adjacent(interacting_with)) //is the target adjacent to our hole
+ balloon_alert(user, "too far!")
return ITEM_INTERACT_BLOCKING
- var/away_dir = get_dir(above, target)
+ var/away_dir = get_dir(above, interacting_with)
user.visible_message(span_notice("[user] begins climbing upwards with [src]."), span_notice("You get to work on properly hooking [src] and going upwards."))
- playsound(target, 'sound/effects/pickaxe/picaxe1.ogg', 50) //plays twice so people above and below can hear
+ playsound(interacting_with, 'sound/effects/pickaxe/picaxe1.ogg', 50) //plays twice so people above and below can hear
playsound(user_turf, 'sound/effects/pickaxe/picaxe1.ogg', 50)
- var/list/effects = list(new /obj/effect/temp_visual/climbing_hook(target, away_dir), new /obj/effect/temp_visual/climbing_hook(user_turf, away_dir))
+ var/list/effects = list(new /obj/effect/temp_visual/climbing_hook(interacting_with, away_dir), new /obj/effect/temp_visual/climbing_hook(user_turf, away_dir))
// Our climbers athletics ability
var/fitness_level = user.mind?.get_skill_level(/datum/skill/athletics)
@@ -65,8 +66,8 @@
var/final_climb_time = (climb_time - fitness_level) * misc_multiplier
- if(do_after(user, final_climb_time, target))
- user.forceMove(target)
+ if(do_after(user, final_climb_time, interacting_with))
+ user.forceMove(interacting_with)
uses--
user.mind?.adjust_experience(/datum/skill/athletics, 50) //get some experience for our trouble, especially since this costs us a climbing rope use
@@ -80,7 +81,7 @@
// didnt want to mess up is_blocked_turf_ignore_climbable
/// checks if our target is blocked, also checks for border objects facing the above turf and climbable stuff
/obj/item/climbing_hook/proc/target_blocked(turf/target, turf/above)
- if(target.density || above.density)
+ if(target.density || (isopenspaceturf(target) && target.zPassOut(DOWN)) || !above.zPassOut(DOWN) || above.density) // we check if we would fall down from it additionally
return TRUE
for(var/atom/movable/atom_content as anything in target.contents)
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 77b94761a7a5b..18da163bce4a6 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -202,7 +202,7 @@
/obj/item/toy/crayon/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!"))
- user.add_atom_colour(paint_color, ADMIN_COLOUR_PRIORITY)
+ user.add_atom_colour(color_transition_filter(paint_color, SATURATION_OVERRIDE), ADMIN_COLOUR_PRIORITY)
return (BRUTELOSS|OXYLOSS)
/obj/item/toy/crayon/Initialize(mapload)
@@ -435,7 +435,7 @@
if(!isValidSurface(target))
target.balloon_alert(user, "can't use there!")
- return
+ return ITEM_INTERACT_BLOCKING
var/drawing = drawtype
switch(drawtype)
@@ -471,7 +471,7 @@
if (istagger)
cost *= 0.5
if(check_empty(user, cost))
- return
+ return ITEM_INTERACT_BLOCKING
var/temp = "rune"
var/ascii = (length(drawing) == 1)
@@ -521,10 +521,10 @@
wait_time *= 0.5
if(!instant && !do_after(user, wait_time, target = target, max_interact_count = 4))
- return
+ return ITEM_INTERACT_BLOCKING
if(!use_charges(user, cost))
- return
+ return ITEM_INTERACT_BLOCKING
if(length(text_buffer))
drawing = text_buffer[1]
@@ -548,7 +548,7 @@
affected_turfs += right
else
balloon_alert(user, "no room!")
- return
+ return ITEM_INTERACT_BLOCKING
created_art.add_hiddenprint(user)
if(istagger)
created_art.AddElement(/datum/element/art, GOOD_ART)
@@ -575,15 +575,14 @@
for(var/turf/draw_turf as anything in affected_turfs)
reagents.expose(draw_turf, methods = TOUCH, volume_modifier = volume_multiplier)
check_empty(user)
- return
+ return ITEM_INTERACT_SUCCESS
/obj/item/toy/crayon/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if (!check_allowed_items(interacting_with))
return NONE
if(can_use_on(interacting_with, user, modifiers))
- use_on(interacting_with, user, modifiers)
- return ITEM_INTERACT_BLOCKING
+ return use_on(interacting_with, user, modifiers)
return NONE
/obj/item/toy/crayon/get_writing_implement_details()
@@ -790,6 +789,12 @@
post_noise = FALSE
interaction_flags_click = NEED_DEXTERITY|NEED_HANDS|ALLOW_RESTING
+ /// Types which use their color var for additional logic, so we need to avoid using transition filters on them.
+ var/static/list/direct_color_types = typecacheof(list(
+ /obj/item/paper, // Uses color for TGUI backgrounds, doesn't look very good either
+ /obj/item/fish, // Used for aquarium sprites
+ ))
+
/obj/item/toy/crayon/spraycan/Initialize(mapload)
. = ..()
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/improvised_coolant)
@@ -819,13 +824,14 @@
return .
context[SCREENTIP_CONTEXT_LMB] = "Paint"
+ context[SCREENTIP_CONTEXT_RMB] = "Coat with paint"
if(isbodypart(target))
var/obj/item/bodypart/limb = target
if(IS_ROBOTIC_LIMB(limb))
- context[SCREENTIP_CONTEXT_RMB] = "Restyle robotic limb"
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Restyle robotic limb"
else
- context[SCREENTIP_CONTEXT_RMB] = "Copy color"
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Copy color"
return CONTEXTUAL_SCREENTIP_SET
@@ -881,12 +887,15 @@
return ..()
/obj/item/toy/crayon/spraycan/use_on(atom/target, mob/user, list/modifiers)
+ if (LAZYACCESS(modifiers, CTRL_CLICK))
+ return ctrl_interact(target, user)
+
if(is_capped)
balloon_alert(user, "take the cap off first!")
- return
+ return ITEM_INTERACT_BLOCKING
if(check_empty(user))
- return
+ return ITEM_INTERACT_BLOCKING
if(iscarbon(target))
if(pre_noise || post_noise)
@@ -912,11 +921,15 @@
else if(actually_paints && target.is_atom_colour(paint_color, min_priority_index = WASHABLE_COLOUR_PRIORITY))
balloon_alert(user, "[target.p_theyre()] already that color!")
- return
+ return ITEM_INTERACT_BLOCKING
+
+ var/saturation_mode = SATURATION_MULTIPLY
+ if (LAZYACCESS(modifiers, RIGHT_CLICK))
+ saturation_mode = SATURATION_OVERRIDE
if(ismob(target) && (HAS_TRAIT(target, TRAIT_SPRAY_PAINTABLE)))
if(actually_paints)
- target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY)
+ target.add_atom_colour(color_transition_filter(paint_color, saturation_mode), WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(target, COMSIG_LIVING_MOB_PAINTED)
use_charges(user, 2, requires_full = FALSE)
reagents.trans_to(target, ., volume_multiplier, transferred_by = user, methods = VAPOR)
@@ -924,45 +937,13 @@
if(pre_noise || post_noise)
playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5)
user.visible_message(span_notice("[user] coats [target] with spray paint!"), span_notice("You coat [target] with spray paint."))
- return
-
- if(isobj(target) && !(target.flags_1 & UNPAINTABLE_1))
- var/color_is_dark = FALSE
- if(actually_paints)
- color_is_dark = is_color_dark(paint_color)
-
- if (color_is_dark && !(target.flags_1 & ALLOW_DARK_PAINTS_1))
- to_chat(user, span_warning("A color that dark on an object like this? Surely not..."))
- return
-
- if(istype(target, /obj/item/pipe))
- if(GLOB.pipe_color_name.Find(paint_color))
- var/obj/item/pipe/target_pipe = target
- target_pipe.pipe_color = paint_color
- target.add_atom_colour(paint_color, FIXED_COLOUR_PRIORITY)
- balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color")
- else
- balloon_alert(user, "invalid pipe color!")
- return
- else if(istype(target, /obj/machinery/atmospherics))
- if(GLOB.pipe_color_name.Find(paint_color))
- var/obj/machinery/atmospherics/target_pipe = target
- target_pipe.paint(paint_color)
- balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color")
- else
- balloon_alert(user, "invalid pipe color!")
- return
- else
- target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY)
+ return ITEM_INTERACT_SUCCESS
- if(isitem(target) && isliving(target.loc))
- var/obj/item/target_item = target
- var/mob/living/holder = target.loc
- if(holder.is_holding(target_item))
- holder.update_held_items()
- else
- holder.update_clothing(target_item.slot_flags)
+ if(!isobj(target) || (target.flags_1 & UNPAINTABLE_1))
+ return ..()
+ var/color_is_dark = is_color_dark(paint_color)
+ if(!actually_paints)
if(!(SEND_SIGNAL(target, COMSIG_OBJ_PAINTED, user, src, color_is_dark) & DONT_USE_SPRAYCAN_CHARGES))
use_charges(user, 2, requires_full = FALSE)
reagents.trans_to(target, ., volume_multiplier, transferred_by = user, methods = VAPOR)
@@ -970,11 +951,50 @@
if(pre_noise || post_noise)
playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5)
user.visible_message(span_notice("[user] coats [target] with spray paint!"), span_notice("You coat [target] with spray paint."))
- return
+ return ITEM_INTERACT_SUCCESS
- return ..()
+ if (color_is_dark && saturation_mode == SATURATION_OVERRIDE && !(target.flags_1 & ALLOW_DARK_PAINTS_1))
+ to_chat(user, span_warning("A color that dark on an object like this? Surely not..."))
+ return ITEM_INTERACT_BLOCKING
+
+ if(istype(target, /obj/item/pipe))
+ if(!GLOB.pipe_color_name.Find(paint_color))
+ balloon_alert(user, "invalid pipe color!")
+ return ITEM_INTERACT_BLOCKING
+ var/obj/item/pipe/target_pipe = target
+ target_pipe.pipe_color = paint_color
+ target.add_atom_colour(paint_color, FIXED_COLOUR_PRIORITY)
+ balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color")
+ else if(istype(target, /obj/machinery/atmospherics))
+ if(!GLOB.pipe_color_name.Find(paint_color))
+ balloon_alert(user, "invalid pipe color!")
+ return ITEM_INTERACT_BLOCKING
+ var/obj/machinery/atmospherics/target_pipe = target
+ target_pipe.paint(paint_color)
+ balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color")
+ else if (is_type_in_typecache(target, direct_color_types))
+ target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY)
+ else
+ target.add_atom_colour(color_transition_filter(paint_color, saturation_mode), WASHABLE_COLOUR_PRIORITY)
+
+ if(isitem(target) && isliving(target.loc))
+ var/obj/item/target_item = target
+ var/mob/living/holder = target.loc
+ if(holder.is_holding(target_item))
+ holder.update_held_items()
+ else
+ holder.update_clothing(target_item.slot_flags)
+
+ if(!(SEND_SIGNAL(target, COMSIG_OBJ_PAINTED, user, src, color_is_dark) & DONT_USE_SPRAYCAN_CHARGES))
+ use_charges(user, 2, requires_full = FALSE)
+ reagents.trans_to(target, ., volume_multiplier, transferred_by = user, methods = VAPOR)
-/obj/item/toy/crayon/spraycan/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
+ if(pre_noise || post_noise)
+ playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5)
+ user.visible_message(span_notice("[user] coats [target] with spray paint!"), span_notice("You coat [target] with spray paint."))
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/toy/crayon/spraycan/proc/ctrl_interact(atom/interacting_with, mob/living/user)
if(is_capped)
if(!interacting_with.color)
// let's be generous and assume if they're trying to match something with no color, while capped,
@@ -982,32 +1002,41 @@
return NONE
balloon_alert(user, "take the cap off first!")
return ITEM_INTERACT_BLOCKING
+
if(check_empty(user))
return ITEM_INTERACT_BLOCKING
- /* DOPPLER EDIT REMOVAL START
- if(isbodypart(interacting_with) && actually_paints)
- var/obj/item/bodypart/limb = interacting_with
- if(IS_ROBOTIC_LIMB(limb))
- var/list/skins = list()
- var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi')
- for(var/skin_option in style_list_icons)
- var/image/part_image = image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.body_zone]")
- if(limb.aux_zone) //Hands
- part_image.overlays += image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.aux_zone]")
- skins += list("[skin_option]" = part_image)
- var/choice = show_radial_menu(user, src, skins, require_near = TRUE)
- if(choice && (use_charges(user, 5, requires_full = FALSE)))
- playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5)
- limb.change_appearance(style_list_icons[choice], greyscale = FALSE)
- return ITEM_INTERACT_SUCCESS
- DOPPLER EDIT REMOVAL END */
- if(interacting_with.color)
- paint_color = interacting_with.color
- balloon_alert(user, "matched colour of target")
- update_appearance()
+
+ if(!isbodypart(interacting_with) || !actually_paints)
+ if(interacting_with.color)
+ paint_color = interacting_with.color
+ balloon_alert(user, "matched colour of target")
+ update_appearance()
+ return ITEM_INTERACT_BLOCKING
+ balloon_alert(user, "can't match those colours!")
+ return ITEM_INTERACT_BLOCKING
+
+ var/obj/item/bodypart/limb = interacting_with
+ if(!IS_ROBOTIC_LIMB(limb))
return ITEM_INTERACT_BLOCKING
- balloon_alert(user, "can't match those colours!")
- return ITEM_INTERACT_BLOCKING
+
+ var/list/skins = list()
+ var/static/list/style_list_icons = list(
+ "standard" = 'icons/mob/augmentation/augments.dmi',
+ "engineer" = 'icons/mob/augmentation/augments_engineer.dmi',
+ "security" = 'icons/mob/augmentation/augments_security.dmi',
+ "mining" = 'icons/mob/augmentation/augments_mining.dmi',
+ )
+
+ for(var/skin_option in style_list_icons)
+ var/image/part_image = image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.body_zone]")
+ if(limb.aux_zone) //Hands
+ part_image.overlays += image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.aux_zone]")
+ skins += list("[skin_option]" = part_image)
+ var/choice = show_radial_menu(user, src, skins, require_near = TRUE)
+ if(choice && (use_charges(user, 5, requires_full = FALSE)))
+ playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5)
+ limb.change_appearance(style_list_icons[choice], greyscale = FALSE)
+ return ITEM_INTERACT_SUCCESS
/obj/item/toy/crayon/spraycan/click_alt(mob/user)
if(!has_cap)
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index dd5d78fce0d61..70fb3bb6693c2 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -365,7 +365,7 @@
if(!req_defib)
return
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_range))
- RegisterSignal(defib.loc, COMSIG_MOVABLE_MOVED, PROC_REF(check_range))
+ RegisterSignal(defib, COMSIG_MOVABLE_MOVED, PROC_REF(check_range))
/obj/item/shockpaddles/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
. = ..()
@@ -430,9 +430,9 @@
/obj/item/shockpaddles/dropped(mob/user)
. = ..()
+ UnregisterSignal(defib, COMSIG_MOVABLE_MOVED)
if(user)
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
- UnregisterSignal(defib.loc, COMSIG_MOVABLE_MOVED)
if(req_defib)
if(user)
to_chat(user, span_notice("The paddles snap back into the main unit."))
@@ -558,7 +558,7 @@
playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
do_cancel()
return
- user.visible_message(span_boldannounce("[user] shocks [H] with \the [src]!"), span_warning("You shock [H] with \the [src]!"))
+ user.visible_message(span_bolddanger("[user] shocks [H] with \the [src]!"), span_warning("You shock [H] with \the [src]!"))
playsound(src, 'sound/machines/defib/defib_zap.ogg', 100, TRUE, -1)
playsound(src, 'sound/items/weapons/egloves.ogg', 100, TRUE, -1)
H.emote("scream")
diff --git a/code/game/objects/items/devices/broadcast_camera.dm b/code/game/objects/items/devices/broadcast_camera.dm
index 78868844e48cb..1a7ba3ed1c4c1 100644
--- a/code/game/objects/items/devices/broadcast_camera.dm
+++ b/code/game/objects/items/devices/broadcast_camera.dm
@@ -13,7 +13,7 @@
force = 8
throwforce = 12
w_class = WEIGHT_CLASS_NORMAL
- obj_flags = INDESTRUCTIBLE | EMP_PROTECT_ALL // No fun police
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
slot_flags = NONE
light_system = OVERLAY_LIGHT
light_color = COLOR_SOFT_RED
@@ -33,14 +33,18 @@
/// The "virtual" radio inside of the the physical camera, a la microphone
var/obj/item/radio/entertainment/microphone/internal_radio
+/obj/item/broadcast_camera/Initialize(mapload)
+ . = ..()
+
+ AddElement(/datum/element/empprotection, EMP_PROTECT_ALL)
+
/obj/item/broadcast_camera/Destroy(force)
QDEL_NULL(internal_radio)
QDEL_NULL(internal_camera)
-
return ..()
/obj/item/broadcast_camera/update_icon_state()
- icon_state = "[base_icon_state]0"
+ icon_state = "[base_icon_state][active]"
return ..()
/obj/item/broadcast_camera/attack_self(mob/user, modifiers)
@@ -75,7 +79,7 @@
if(!iscarbon(loc))
return
active = TRUE
- icon_state = "[base_icon_state][active]"
+ update_icon_state()
/// The carbon who wielded the camera, allegedly
var/mob/living/carbon/wielding_carbon = loc
@@ -98,7 +102,7 @@
/// When deactivating the camera
/obj/item/broadcast_camera/proc/on_deactivating()
active = FALSE
- icon_state = "[base_icon_state][active]"
+ update_icon_state()
QDEL_NULL(internal_camera)
QDEL_NULL(internal_radio)
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index e323c65b1ebc1..4d538f46184d9 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -204,7 +204,7 @@
var/turf/our_turf = get_turf(src)
detect_state = PROXIMITY_NONE
- for(var/mob/eye/ai_eye/AI_eye as anything in GLOB.aiEyes)
+ for(var/mob/eye/camera/ai/AI_eye as anything in GLOB.camera_eyes)
if(!AI_eye.ai_detector_visible)
continue
@@ -253,7 +253,7 @@
// copied from camera chunks but we are doing a really big edge case here though
/obj/item/multitool/ai_detect/proc/surrounding_chunks(turf/epicenter)
. = list()
- var/static_range = /mob/eye/ai_eye::static_visibility_range
+ var/static_range = /mob/eye/camera/ai::static_visibility_range
var/x1 = max(1, epicenter.x - static_range)
var/y1 = max(1, epicenter.y - static_range)
var/x2 = min(world.maxx, epicenter.x + static_range)
@@ -283,7 +283,7 @@
desc = "An omni-technological interface."
icon = 'icons/obj/antags/abductor.dmi'
icon_state = "multitool"
- belt_icon_state = "multitool_alien"
+ inside_belt_icon_state = "multitool_alien"
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT)
toolspeed = 0.1
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 72f3747b01121..ac9cbfec8211f 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -351,8 +351,8 @@
if(isliving(talking_movable))
var/mob/living/talking_living = talking_movable
var/volume_modifier = (talking_living.client?.prefs.read_preference(/datum/preference/numeric/sound_radio_noise))
- if(radio_noise && talking_living.can_hear() && volume_modifier && signal.frequency != FREQ_COMMON)
- var/sound/radio_noise = sound(sound('sound/items/radio/radio_talk.ogg', volume = volume_modifier))
+ if(radio_noise && talking_living.can_hear() && volume_modifier && signal.frequency != FREQ_COMMON && !LAZYACCESS(message_mods, MODE_SEQUENTIAL))
+ var/sound/radio_noise = sound('sound/items/radio/radio_talk.ogg', volume = volume_modifier)
radio_noise.frequency = get_rand_frequency_low_range()
SEND_SOUND(talking_living, radio_noise)
diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm
index d71d84e1f1909..7d58838fc2135 100644
--- a/code/game/objects/items/devices/scanners/gas_analyzer.dm
+++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm
@@ -136,13 +136,13 @@
return list("gasmixes" = last_gasmix_data)
/obj/item/analyzer/attack_self(mob/user, modifiers)
- if(user.stat != CONSCIOUS || !user.can_read(src) || user.is_blind())
+ if(user.stat != CONSCIOUS || !user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again
return
atmos_scan(user=user, target=get_turf(src), silent=FALSE)
on_analyze(source=src, target=get_turf(src))
/obj/item/analyzer/attack_self_secondary(mob/user, modifiers)
- if(user.stat != CONSCIOUS || !user.can_read(src) || user.is_blind())
+ if(user.stat != CONSCIOUS || !user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again
return
ui_interact(user)
@@ -183,8 +183,8 @@
var/icon = target
var/message = list()
- playsound(user, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE)
if(!silent && isliving(user))
+ playsound(user, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE)
user.visible_message(span_notice("[user] uses the analyzer on [icon2html(icon, viewers(user))] [target]."), span_notice("You use the analyzer on [icon2html(icon, user)] [target]."))
message += span_boldnotice("Results of analysis of [icon2html(icon, user)] [target].")
diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm
index 76942605f2b13..dd75928cb2d16 100644
--- a/code/game/objects/items/devices/scanners/health_analyzer.dm
+++ b/code/game/objects/items/devices/scanners/health_analyzer.dm
@@ -47,7 +47,7 @@
return BRUTELOSS
/obj/item/healthanalyzer/attack_self(mob/user)
- if(!user.can_read(src) || user.is_blind())
+ if(!user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again
return
scanmode = (scanmode + 1) % SCANMODE_COUNT
@@ -80,7 +80,7 @@
floor_text += "Subject lacks a brain. "
floor_text += "Body temperature: [scan_turf?.return_air()?.return_temperature() || "???"] "
- if(user.can_read(src) && !user.is_blind())
+ if(!user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again
to_chat(user, examine_block(floor_text))
last_scan_text = floor_text
return
@@ -93,7 +93,7 @@
balloon_alert(user, "analyzing vitals")
playsound(user.loc, 'sound/items/healthanalyzer.ogg', 50)
- var/readability_check = user.can_read(src) && !user.is_blind()
+ var/readability_check = user.can_read(src) //DOPPLER EDIT - Blind People Can Analyze Again
switch (scanmode)
if (SCANMODE_HEALTH)
last_scan_text = healthscan(user, M, mode, advanced, tochat = readability_check)
@@ -106,7 +106,7 @@
/obj/item/healthanalyzer/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
return NONE
- if(user.can_read(src) && !user.is_blind())
+ if(user.can_read(src)) //DOPPLER EDIT - Blind People can Analyze Again
chemscan(user, interacting_with)
return ITEM_INTERACT_SUCCESS
@@ -469,7 +469,7 @@
var/datum/reagent/reagent = r
if(reagent.chemical_flags & REAGENT_INVISIBLE) //Don't show hidden chems on scanners
continue
- render_block += "[round(reagent.volume, 0.001)] units of [reagent.name][reagent.overdosed ? " - [span_boldannounce("OVERDOSING")]" : "."] "
+ render_block += "[round(reagent.volume, 0.001)] units of [reagent.name][reagent.overdosed ? " - [span_bolddanger("OVERDOSING")]" : "."] "
if(!length(render_block)) //If no VISIBLY DISPLAYED reagents are present, we report as if there is nothing.
render_list += "Subject contains no reagents in their blood. "
@@ -487,11 +487,11 @@
if(bit.chemical_flags & REAGENT_INVISIBLE)
continue
if(!belly.food_reagents[bit.type])
- render_block += "[round(bit.volume, 0.001)] units of [bit.name][bit.overdosed ? " - [span_boldannounce("OVERDOSING")]" : "."] "
+ render_block += "[round(bit.volume, 0.001)] units of [bit.name][bit.overdosed ? " - [span_bolddanger("OVERDOSING")]" : "."] "
else
var/bit_vol = bit.volume - belly.food_reagents[bit.type]
if(bit_vol > 0)
- render_block += "[round(bit_vol, 0.001)] units of [bit.name][bit.overdosed ? " - [span_boldannounce("OVERDOSING")]" : "."] "
+ render_block += "[round(bit_vol, 0.001)] units of [bit.name][bit.overdosed ? " - [span_bolddanger("OVERDOSING")]" : "."] "
if(!length(render_block))
render_list += "Subject contains no reagents in their stomach. "
@@ -626,7 +626,7 @@
/obj/item/healthanalyzer/simple/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
return NONE
- if(!user.can_read(src) || user.is_blind())
+ if(!user.can_read(src)) //DOPPLER EDIT - Blind People Can Analyze Again
return ITEM_INTERACT_BLOCKING
add_fingerprint(user)
diff --git a/code/game/objects/items/devices/scanners/slime_scanner.dm b/code/game/objects/items/devices/scanners/slime_scanner.dm
index 79050f0a78c67..87bea03261b8b 100644
--- a/code/game/objects/items/devices/scanners/slime_scanner.dm
+++ b/code/game/objects/items/devices/scanners/slime_scanner.dm
@@ -16,7 +16,7 @@
/obj/item/slime_scanner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
return NONE
- if(!user.can_read(src) || user.is_blind())
+ if(!user.can_read(src)) //DOPPLER EDIT - Blind People Can Analyze Again
return ITEM_INTERACT_BLOCKING
if (!isslime(interacting_with))
to_chat(user, span_warning("This device can only scan slimes!"))
diff --git a/code/game/objects/items/devices/table_clock.dm b/code/game/objects/items/devices/table_clock.dm
index d9c5e44fcf76c..fcea4c27246ab 100644
--- a/code/game/objects/items/devices/table_clock.dm
+++ b/code/game/objects/items/devices/table_clock.dm
@@ -40,7 +40,7 @@
if(break_clock(break_sound = 'sound/effects/magic/clockwork/ark_activation.ogg'))
user.visible_message(
span_warning("[user] smashes \the [src] so hard it stops breaking!"),
- span_boldannounce("I can't stand this stupid machine anymore! Shut up already!"),
+ span_bolddanger("I can't stand this stupid machine anymore! Shut up already!"),
span_notice("You hear repeated smashing!"),
)
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index df0fbb928ed8c..433df9869d224 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -262,7 +262,7 @@
balloon_alert(usr, "recording ended")
stoplag(1 SECONDS) //prevents multiple balloon alerts covering each other
break
- say("[mytape.storedinfo[i]]", sanitize=FALSE)//We want to display this properly, don't double encode
+ say("[mytape.storedinfo[i]]", sanitize=FALSE, message_mods = list(MODE_SEQUENTIAL = TRUE))//We want to display this properly, don't double encode
if(mytape.storedinfo.len < i + 1)
playsleepseconds = 1
sleep(1 SECONDS)
@@ -270,7 +270,7 @@
playsleepseconds = mytape.timestamp[i + 1] - mytape.timestamp[i]
if(playsleepseconds > 14 SECONDS)
sleep(1 SECONDS)
- say("Skipping [playsleepseconds/10] seconds of silence.")
+ say("Skipping [playsleepseconds/10] seconds of silence.", message_mods = list(MODE_SEQUENTIAL = TRUE))
playsleepseconds = 1 SECONDS
i++
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 5a108c83e823b..341231d767a14 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -329,7 +329,7 @@ effective or pretty fucking useless.
/obj/item/jammer
name = "radio jammer"
- desc = "Device used to disrupt nearby radio communication. Alternate function creates a powerful distruptor wave which disables all nearby listening devices."
+ desc = "Device used to disrupt nearby radio communication. Alternate function creates a powerful disruptor wave which disables all nearby listening devices."
icon = 'icons/obj/devices/syndie_gadget.dmi'
icon_state = "jammer"
var/active = FALSE
@@ -341,8 +341,8 @@ effective or pretty fucking useless.
. = ..()
register_context()
-/atom/movable/screen/alert/give/add_context(atom/source, list/context, obj/item/held_item, mob/user)
- context[SCREENTIP_CONTEXT_LMB] = "Release distruptor wave"
+/obj/item/jammer/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ context[SCREENTIP_CONTEXT_LMB] = "Release disruptor wave"
context[SCREENTIP_CONTEXT_RMB] = "Toggle"
return CONTEXTUAL_SCREENTIP_SET
@@ -352,8 +352,8 @@ effective or pretty fucking useless.
user.balloon_alert(user, "on cooldown!")
return
- user.balloon_alert(user, "distruptor wave released!")
- to_chat(user, span_notice("You release a distruptor wave, disabling all nearby radio devices."))
+ user.balloon_alert(user, "disruptor wave released!")
+ to_chat(user, span_notice("You release a disruptor wave, disabling all nearby radio devices."))
for (var/atom/potential_owner in view(7, user))
disable_radios_on(potential_owner)
COOLDOWN_START(src, jam_cooldown, jam_cooldown_duration)
@@ -379,8 +379,8 @@ effective or pretty fucking useless.
user.balloon_alert(user, "out of reach!")
return
- interacting_with.balloon_alert(user, "radio distrupted!")
- to_chat(user, span_notice("You release a directed distruptor wave, disabling all radio devices on [interacting_with]."))
+ interacting_with.balloon_alert(user, "radio disrupted!")
+ to_chat(user, span_notice("You release a directed disruptor wave, disabling all radio devices on [interacting_with]."))
disable_radios_on(interacting_with)
return ITEM_INTERACT_SUCCESS
@@ -530,4 +530,4 @@ effective or pretty fucking useless.
/obj/projectile/bullet/toolbox_turret
damage = 10
- speed = 0.6
+ speed = 1.6
diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm
index 40f08e78ffc77..e44e989706a6d 100644
--- a/code/game/objects/items/eightball.dm
+++ b/code/game/objects/items/eightball.dm
@@ -15,26 +15,33 @@
var/cooldown_time = 10 SECONDS
var/static/list/possible_answers = list(
- "It is certain",
- "It is decidedly so",
- "Without a doubt",
- "Yes definitely",
- "You may rely on it",
- "As I see it, yes",
- "Most likely",
- "Outlook good",
- "Yes",
- "Signs point to yes",
- "Reply hazy try again",
- "Ask again later",
- "Better not tell you now",
- "Cannot predict now",
- "Concentrate and ask again",
- "Don't count on it",
- "My reply is no",
- "My sources say no",
- "Outlook not so good",
- "Very doubtful")
+ "Yes" = list(
+ "It is certain",
+ "It is decidedly so",
+ "Without a doubt",
+ "Yes definitely",
+ "You may rely on it",
+ "As I see it, yes",
+ "Most likely",
+ "Outlook good",
+ "Yes",
+ "Signs point to yes",
+ ),
+ "Maybe" = list(
+ "Reply hazy try again",
+ "Ask again later",
+ "Better not tell you now",
+ "Cannot predict now",
+ "Concentrate and ask again",
+ ),
+ "No" = list(
+ "Don't count on it",
+ "My reply is no",
+ "My sources say no",
+ "Outlook not so good",
+ "Very doubtful"
+ ),
+ )
/obj/item/toy/eightball/Initialize(mapload)
. = ..()
@@ -77,8 +84,14 @@
/obj/item/toy/eightball/proc/start_shaking(mob/user)
return TRUE
+/// Different from get_answer().
+/obj/item/toy/eightball/proc/pick_from_answer_list()
+ //! This is for grabbing an answer from the answer matrix.
+ var/key = pick(possible_answers)
+ return pick(possible_answers[key])
+
/obj/item/toy/eightball/proc/get_answer()
- return pick(possible_answers)
+ return pick_from_answer_list()
// A broken magic eightball, it only says "YOU SUCK" over and over again.
@@ -89,7 +102,7 @@
/obj/item/toy/eightball/broken/Initialize(mapload)
. = ..()
- fixed_answer = pick(possible_answers)
+ fixed_answer = pick_from_answer_list()
/obj/item/toy/eightball/broken/get_answer()
return fixed_answer
@@ -104,38 +117,10 @@
//these kind of store the same thing but one is easier to work with.
var/list/votes = list()
var/list/voted = list()
- var/static/list/haunted_answers = list(
- "yes" = list(
- "It is certain",
- "It is decidedly so",
- "Without a doubt",
- "Yes definitely",
- "You may rely on it",
- "As I see it, yes",
- "Most likely",
- "Outlook good",
- "Yes",
- "Signs point to yes"
- ),
- "maybe" = list(
- "Reply hazy try again",
- "Ask again later",
- "Better not tell you now",
- "Cannot predict now",
- "Concentrate and ask again"
- ),
- "no" = list(
- "Don't count on it",
- "My reply is no",
- "My sources say no",
- "Outlook not so good",
- "Very doubtful"
- )
- )
/obj/item/toy/eightball/haunted/Initialize(mapload)
. = ..()
- for (var/answer in haunted_answers)
+ for (var/answer in possible_answers)
votes[answer] = 0
SSpoints_of_interest.make_point_of_interest(src)
@@ -153,7 +138,7 @@
/obj/item/toy/eightball/haunted/start_shaking(mob/user)
// notify ghosts that someone's shaking a haunted eightball
// and inform them of the message, (hopefully a yes/no question)
- selected_message = tgui_input_text(user, "What is your question?", "Eightball", max_length = MAX_MESSAGE_LEN) || initial(selected_message)
+ selected_message = tgui_input_text(user, "What is your question?", "Eightball", max_length = CHAT_MESSAGE_MAX_LENGTH) || initial(selected_message)
if (!(src in user.held_items))
return FALSE
notify_ghosts(
@@ -186,7 +171,7 @@
voted.Cut()
- var/list/top_options = haunted_answers[top_vote]
+ var/list/top_options = possible_answers[top_vote]
return pick(top_options)
// Only ghosts can interact because only ghosts can open the ui
@@ -210,11 +195,11 @@
data["question"] = selected_message
data["answers"] = list()
- for(var/vote in haunted_answers)
+ for(var/vote in possible_answers)
var/list/answer_data = list()
answer_data["answer"] = vote
answer_data["amount"] = votes[vote]
- answer_data["selected"] = voted[user.ckey]
+ answer_data["selected"] = (voted[user.ckey] == vote)
data["answers"] += list(answer_data)
return data
@@ -229,7 +214,7 @@
switch(action)
if("vote")
var/selected_answer = params["answer"]
- if(!(selected_answer in haunted_answers))
+ if(!(selected_answer in possible_answers))
return
var/oldvote = voted[user.ckey]
if(oldvote)
diff --git a/code/game/objects/items/food/lizard.dm b/code/game/objects/items/food/lizard.dm
index e0e005502d87c..f8d8dbec8f51f 100644
--- a/code/game/objects/items/food/lizard.dm
+++ b/code/game/objects/items/food/lizard.dm
@@ -142,8 +142,9 @@
. = ..()
//Moonfish can lay eggs (unaffected by breeding, so think of them as unfertilizard)
RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, PROC_REF(generate_aquarium_appearance))
- RegisterSignal(src, AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position))
- AddComponent(/datum/component/aquarium_content, beauty = 100)
+ RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position))
+ AddComponent(/datum/component/aquarium_content)
+ RegisterSignal(src, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, PROC_REF(get_aquarium_beauty))
/obj/item/food/moonfish_eggs/proc/generate_aquarium_appearance(datum/source, obj/effect/aquarium/visual)
SIGNAL_HANDLER
@@ -153,13 +154,18 @@
/obj/item/food/moonfish_eggs/proc/randomize_aquarium_position(datum/source, obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual)
SIGNAL_HANDLER
- var/list/aq_properties = current_aquarium.get_surface_properties()
var/sprite_width = 5
- var/px_min = aq_properties[AQUARIUM_PROPERTIES_PX_MIN]
- var/px_max = aq_properties[AQUARIUM_PROPERTIES_PX_MAX] - sprite_width
+ var/sprite_height = 4
+ var/px_min = visual.aquarium_zone_min_px
+ var/px_max = visual.aquarium_zone_max_px - sprite_width
+ var/py_min = visual.aquarium_zone_min_py - sprite_height
- visual.pixel_x = rand(px_min,px_max)
- visual.pixel_y = rand(-1, 1)
+ visual.pixel_x = rand(px_min, px_max)
+ visual.pixel_y = py_min + rand(-1, 1)
+
+/obj/item/food/moonfish_eggs/proc/get_aquarium_beauty(datum/source, list/beauty_holder)
+ SIGNAL_HANDLER
+ beauty_holder += 100 //moonfish eggs are kinda eye candy
/obj/item/food/moonfish_caviar
name = "moonfish caviar paste"
@@ -575,7 +581,7 @@
/datum/reagent/consumable/nutriment/protein = 10,
)
tastes = list("bread" = 1, "meat" = 1)
- foodtypes = MEAT | NUTS | RAW | GORE
+ foodtypes = MEAT | NUTS | GORE
crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/flatbread/stinging
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index 6da965e47578d..24472eb5e7a4d 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -195,7 +195,12 @@
. = ..()
RegisterSignal(src, COMSIG_ITEM_GRILL_PROCESS, PROC_REF(OnGrill))
if(stink_particles)
- particles = new stink_particles
+ add_shared_particles(stink_particles)
+
+/obj/item/food/badrecipe/Destroy(force)
+ if (stink_particles)
+ remove_shared_particles(stink_particles)
+ return ..()
// We override the parent procs here to prevent burned messes from cooking into burned messes.
/obj/item/food/badrecipe/make_grillable()
@@ -361,25 +366,27 @@
foodtypes = DAIRY
w_class = WEIGHT_CLASS_SMALL
dog_fashion = /datum/dog_fashion/head/butter
+ var/can_stick = TRUE
/obj/item/food/butter/examine(mob/user)
. = ..()
- . += span_notice("If you had a rod you could make butter on a stick .")
+ if (can_stick)
+ . += span_notice("If you had a rod you could make butter on a stick .")
/obj/item/food/butter/attackby(obj/item/item, mob/user, params)
- if(istype(item, /obj/item/stack/rods))
- var/obj/item/stack/rods/rods = item
- if(!rods.use(1))//borgs can still fail this if they have no metal
- to_chat(user, span_warning("You do not have enough iron to put [src] on a stick!"))
- return ..()
- to_chat(user, span_notice("You stick the rod into the stick of butter."))
- var/obj/item/food/butter/on_a_stick/new_item = new(usr.loc)
- var/replace = (user.get_inactive_held_item() == rods)
- if(!rods && replace)
- user.put_in_hands(new_item)
- qdel(src)
- return TRUE
- ..()
+ if(!istype(item, /obj/item/stack/rods) || !can_stick)
+ return ..()
+ var/obj/item/stack/rods/rods = item
+ if(!rods.use(1))//borgs can still fail this if they have no metal
+ to_chat(user, span_warning("You do not have enough iron to put [src] on a stick!"))
+ return ..()
+ to_chat(user, span_notice("You stick the rod into the stick of butter."))
+ user.temporarilyRemoveItemFromInventory(src)
+ var/obj/item/food/butter/on_a_stick/new_item = new(drop_location())
+ if (user.CanReach(new_item))
+ user.put_in_hands(new_item)
+ qdel(src)
+ return TRUE
/obj/item/food/butter/on_a_stick //there's something so special about putting it on a stick.
name = "butter on a stick"
@@ -388,6 +395,7 @@
trash_type = /obj/item/stack/rods
food_flags = FOOD_FINGER_FOOD
venue_value = FOOD_PRICE_CHEAP
+ can_stick = FALSE
/obj/item/food/butter/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/butterslice, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
diff --git a/code/game/objects/items/food/packaged.dm b/code/game/objects/items/food/packaged.dm
index b3578204a2daa..0c68d329d97e6 100644
--- a/code/game/objects/items/food/packaged.dm
+++ b/code/game/objects/items/food/packaged.dm
@@ -218,7 +218,7 @@
/obj/item/food/ready_donk
name = "\improper Ready-Donk: Bachelor Chow"
desc = "A quick Donk-dinner: now with flavour!"
- icon_state = "ready_donk"
+ icon_state = "ready_donk_bachelor"
trash_type = /obj/item/trash/ready_donk
food_reagents = list(/datum/reagent/consumable/nutriment = 5)
tastes = list("food?" = 2, "laziness" = 1)
@@ -249,7 +249,7 @@
/obj/item/food/ready_donk/warm
name = "warm Ready-Donk: Bachelor Chow"
desc = "A quick Donk-dinner, now with flavour! And it's even hot!"
- icon_state = "ready_donk_warm"
+ icon_state = "ready_donk_bachelor_warm"
food_reagents = list(
/datum/reagent/consumable/nutriment = 5,
/datum/reagent/medicine/omnizine = 3,
@@ -262,6 +262,7 @@
/obj/item/food/ready_donk/mac_n_cheese
name = "\improper Ready-Donk: Donk-a-Roni"
desc = "Neon-orange mac n' cheese in seconds!"
+ icon_state = "ready_donk_mac"
tastes = list("cheesy pasta" = 2, "laziness" = 1)
foodtypes = GRAIN | DAIRY | JUNKFOOD
@@ -270,13 +271,14 @@
/obj/item/food/ready_donk/warm/mac_n_cheese
name = "warm Ready-Donk: Donk-a-Roni"
desc = "Neon-orange mac n' cheese, ready to eat!"
- icon_state = "ready_donk_warm_mac"
+ icon_state = "ready_donk_mac_warm"
tastes = list("cheesy pasta" = 2, "laziness" = 1)
foodtypes = GRAIN | DAIRY | JUNKFOOD
/obj/item/food/ready_donk/donkhiladas
name = "\improper Ready-Donk: Donkhiladas"
desc = "Donk Co's signature Donkhiladas with Donk sauce, for an 'authentic' taste of Mexico."
+ icon_state = "ready_donk_mex"
tastes = list("enchiladas" = 2, "laziness" = 1)
foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD
@@ -285,13 +287,14 @@
/obj/item/food/ready_donk/warm/donkhiladas
name = "warm Ready-Donk: Donkhiladas"
desc = "Donk Co's signature Donkhiladas with Donk sauce, served as hot as the Mexican sun."
- icon_state = "ready_donk_warm_mex"
+ icon_state = "ready_donk_mex_warm"
tastes = list("enchiladas" = 2, "laziness" = 1)
foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD
/obj/item/food/ready_donk/nachos_grandes //which translates to... big nachos
name = "\improper Ready-Donk: Donk Sol Series Boritos Nachos Grandes"
desc = "Get ready for game day with Donk's classic Nachos Grandes, sponsors of the Donk Sol Series! Boritos chips loaded with cheese, spicy meat and beans, alongside separate guac, pico and donk sauce. Batter up!"
+ icon_state = "ready_donk_nachos"
tastes = list("nachos" = 2, "laziness" = 1)
foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD
@@ -300,25 +303,58 @@
/obj/item/food/ready_donk/warm/nachos_grandes
name = "warm Ready-Donk: Donk Sol Series Boritos Nachos Grandes"
desc = "Get ready for game day with Donk's classic Nachos Grandes, sponsors of the Donk Sol Series! Boritos chips loaded with cheese, spicy meat and beans, alongside separate guac, pico and donk sauce. Served hotter than Sakamoto's fastball!"
- icon_state = "ready_donk_warm_nachos"
+ icon_state = "ready_donk_nachos_warm"
tastes = list("nachos" = 2, "laziness" = 1)
foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD
/obj/item/food/ready_donk/donkrange_chicken
name = "\improper Ready-Donk: Donk-range Chicken"
desc = "A Chinese classic, it's Donk's original spicy orange chicken with stir-fried peppers and onions, all over steamed rice."
+ icon_state = "ready_donk_orange"
tastes = list("orange chicken" = 2, "laziness" = 1)
foodtypes = GRAIN | MEAT | VEGETABLES | JUNKFOOD
warm_type = /obj/item/food/ready_donk/warm/donkrange_chicken
/obj/item/food/ready_donk/warm/donkrange_chicken
- name = "warm Ready-Donk: Ready-Donk: Donk-range Chicken"
+ name = "warm Ready-Donk: Donk-range Chicken"
desc = "A Chinese classic, it's Donk's original spicy orange chicken with stir-fried peppers and onions, all over steamed rice and served hotter than a dragon's breath."
- icon_state = "ready_donk_warm_orange"
+ icon_state = "ready_donk_orange_warm"
tastes = list("orange chicken" = 2, "laziness" = 1)
foodtypes = GRAIN | MEAT | VEGETABLES | JUNKFOOD
+/obj/item/food/ready_donk/salisbury_steak
+ name = "\improper Ready-Donk Donkriginals: Salisbury Steak"
+ desc = "The original and best: it's a slab of moulded beef, drenched in brown gravy, with a side of mashed potatoes. Better find a TV to eat this in front of."
+ icon_state = "ready_donk_salisbury"
+ tastes = list("salisbury steak" = 2, "laziness" = 1)
+ foodtypes = MEAT | VEGETABLES | JUNKFOOD
+
+ warm_type = /obj/item/food/ready_donk/warm/salisbury_steak
+
+/obj/item/food/ready_donk/warm/salisbury_steak
+ name = "warm Ready-Donk Donkriginals: Salisbury Steak"
+ desc = "The original and best: it's a slab of moulded beef, drenched in brown gravy, with a side of mashed potatoes. It's almost as hot as a season finale."
+ icon_state = "ready_donk_salisbury_warm"
+ tastes = list("salisbury steak" = 2, "laziness" = 1)
+ foodtypes = MEAT | VEGETABLES | JUNKFOOD
+
+/obj/item/food/ready_donk/country_chicken
+ name = "\improper Ready-Donk Donkriginals: Country-Fried Chicken"
+ desc = "A TV dinner classic: \"crispy\" fried chicken in country gravy, mashed potatoes, and green beans."
+ icon_state = "ready_donk_chicken"
+ tastes = list("country-fried chicken" = 2, "laziness" = 1)
+ foodtypes = MEAT | DAIRY | VEGETABLES | JUNKFOOD
+
+ warm_type = /obj/item/food/ready_donk/warm/country_chicken
+
+/obj/item/food/ready_donk/warm/country_chicken
+ name = "warm Ready-Donk Donkriginals: Country-Fried Chicken"
+ desc = "A TV dinner classic: \"crispy\" fried chicken in country gravy, mashed potatoes, and green beans. Get it while it's hot!"
+ icon_state = "ready_donk_chicken_warm"
+ tastes = list("country-fried chicken" = 2, "laziness" = 1)
+ foodtypes = MEAT | DAIRY | VEGETABLES | JUNKFOOD
+
// Rations
/obj/item/food/rationpack
name = "ration pack"
diff --git a/code/game/objects/items/food/pie.dm b/code/game/objects/items/food/pie.dm
index 6d73bc2f5df21..fae0edd7a2020 100644
--- a/code/game/objects/items/food/pie.dm
+++ b/code/game/objects/items/food/pie.dm
@@ -430,6 +430,7 @@
icon_state = "baklavaslice"
tastes = list("nuts" = 1, "pie" = 1)
foodtypes = NUTS | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pie/frenchsilkpie
name = "french silk pie"
diff --git a/code/game/objects/items/food/sweets.dm b/code/game/objects/items/food/sweets.dm
index d757261ac0154..62c10675f0458 100644
--- a/code/game/objects/items/food/sweets.dm
+++ b/code/game/objects/items/food/sweets.dm
@@ -204,9 +204,6 @@
slot_flags = ITEM_SLOT_MASK
w_class = WEIGHT_CLASS_TINY
- /// The amount to metabolize per second
- var/metabolization_amount = REAGENTS_METABOLISM / 2
-
/obj/item/food/bubblegum/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] swallows [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
qdel(src)
@@ -214,7 +211,7 @@
/obj/item/food/bubblegum/Initialize(mapload)
. = ..()
- AddElement(/datum/element/chewable, metabolization_amount = metabolization_amount)
+ AddElement(/datum/element/chewable)
/obj/item/food/bubblegum/nicotine
name = "nicotine gum"
@@ -238,7 +235,6 @@
color = "#913D3D"
food_reagents = list(/datum/reagent/blood = 15)
tastes = list("hell" = 1, "people" = 1)
- metabolization_amount = REAGENTS_METABOLISM
/obj/item/food/bubblegum/bubblegum/process()
if(iscarbon(loc))
diff --git a/code/game/objects/items/granters/martial_arts/cqc.dm b/code/game/objects/items/granters/martial_arts/cqc.dm
index 7d3f7f2ef9e26..4fff32623c864 100644
--- a/code/game/objects/items/granters/martial_arts/cqc.dm
+++ b/code/game/objects/items/granters/martial_arts/cqc.dm
@@ -3,7 +3,7 @@
name = "old manual"
martial_name = "close quarters combat"
desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat."
- greet = span_boldannounce("You've mastered the basics of CQC.")
+ greet = span_bolddanger("You've mastered the basics of CQC.")
icon_state = "cqcmanual"
remarks = list(
"Kick... Slam...",
diff --git a/code/game/objects/items/granters/martial_arts/plasma_fist.dm b/code/game/objects/items/granters/martial_arts/plasma_fist.dm
index 22b6b4aefa18e..6c185243c7086 100644
--- a/code/game/objects/items/granters/martial_arts/plasma_fist.dm
+++ b/code/game/objects/items/granters/martial_arts/plasma_fist.dm
@@ -3,7 +3,7 @@
name = "frayed scroll"
martial_name = "plasma fist"
desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism."
- greet = span_boldannounce("You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \
+ greet = span_bolddanger("You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \
the plasma fist, which when pulled off will make someone violently explode.")
icon = 'icons/obj/scrolls.dmi'
icon_state ="plasmafist"
diff --git a/code/game/objects/items/grenades/_grenade.dm b/code/game/objects/items/grenades/_grenade.dm
index 780311fa4d149..664a31c226207 100644
--- a/code/game/objects/items/grenades/_grenade.dm
+++ b/code/game/objects/items/grenades/_grenade.dm
@@ -159,7 +159,7 @@
if(istype(user))
user.add_mob_memory(/datum/memory/bomb_planted, antagonist = src)
active = TRUE
- icon_state = initial(icon_state) + "_active"
+ icon_state = (base_icon_state || initial(icon_state)) + "_active"
SEND_SIGNAL(src, COMSIG_GRENADE_ARMED, det_time, delayoverride)
addtimer(CALLBACK(src, PROC_REF(detonate)), isnull(delayoverride)? det_time : delayoverride)
@@ -255,7 +255,7 @@
if(det_time == 0)
det_time = "Instant"
else
- det_time = num2text(det_time * 0.1)
+ det_time = num2text(det_time * 0.1)
var/old_selection = possible_fuse_time.Find(det_time) //Position of det_time in the list
if(old_selection >= possible_fuse_time.len)
diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm
index c83801d81fc53..2bc9401c77451 100644
--- a/code/game/objects/items/grenades/flashbang.dm
+++ b/code/game/objects/items/grenades/flashbang.dm
@@ -53,7 +53,8 @@
/obj/item/grenade/stingbang
name = "stingbang"
- icon_state = "timeg"
+ icon_state = "timeg_locked"
+ base_icon_state = "timeg"
inhand_icon_state = "flashbang"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
@@ -64,6 +65,8 @@
/obj/item/grenade/stingbang/mega
name = "mega stingbang"
+ icon_state = "timeg_mega_locked"
+ base_icon_state = "timeg_mega"
shrapnel_type = /obj/projectile/bullet/pellet/stingball/mega
shrapnel_radius = 12
@@ -121,7 +124,8 @@
/obj/item/grenade/primer
name = "rotfrag grenade"
desc = "A grenade that generates more shrapnel the more you rotate it in your hand after pulling the pin. This one releases shrapnel shards."
- icon_state = "timeg"
+ icon_state = "timeg_locked"
+ base_icon_state = "timeg"
inhand_icon_state = "flashbang"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm
index 005bcff76771a..befd9a619a3f4 100644
--- a/code/game/objects/items/hand_items.dm
+++ b/code/game/objects/items/hand_items.dm
@@ -218,6 +218,7 @@
/obj/item/hand_item/slapper/attack(mob/living/slapped, mob/living/carbon/human/user)
SEND_SIGNAL(user, COMSIG_LIVING_SLAP_MOB, slapped)
+ SEND_SIGNAL(slapped, COMSIG_LIVING_SLAPPED, user)
if(iscarbon(slapped))
var/mob/living/carbon/potential_tailed = slapped
@@ -257,8 +258,8 @@
)
// Worse than just help intenting people.
- slapped.AdjustSleeping(-75)
- slapped.AdjustUnconscious(-50)
+ slapped.AdjustSleeping(-7.5 SECONDS)
+ slapped.AdjustUnconscious(-5 SECONDS)
else
user.visible_message(
@@ -493,7 +494,7 @@
blown_kiss.fired_from = user
blown_kiss.firer = user // don't hit ourself that would be really annoying
blown_kiss.impacted = list(WEAKREF(user) = TRUE) // just to make sure we don't hit the wearer
- blown_kiss.preparePixelProjectile(target, user)
+ blown_kiss.aim_projectile(target, user)
blown_kiss.fire()
qdel(src)
return ITEM_INTERACT_SUCCESS
@@ -520,7 +521,7 @@
blown_kiss.fired_from = offerer
blown_kiss.firer = offerer // don't hit ourself that would be really annoying
blown_kiss.impacted = list(WEAKREF(offerer) = TRUE) // just to make sure we don't hit the wearer
- blown_kiss.preparePixelProjectile(taker, offerer)
+ blown_kiss.aim_projectile(taker, offerer)
blown_kiss.suppressed = SUPPRESSED_VERY // this also means it's a direct offer
blown_kiss.fire()
qdel(src)
@@ -545,7 +546,7 @@
hitsound = 'sound/effects/emotes/kiss.ogg'
hitsound_wall = 'sound/effects/emotes/kiss.ogg'
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
- speed = 1.6
+ speed = 0.66
damage_type = BRUTE
damage = 0 // love can't actually hurt you
armour_penetration = 100 // but if it could, it would cut through even the thickest plate
diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm
index 049ea8928feff..efe1d9e31f1ba 100644
--- a/code/game/objects/items/holosign_creator.dm
+++ b/code/game/objects/items/holosign_creator.dm
@@ -35,6 +35,11 @@
return
. += span_notice("It is currently maintaining [signs.len]/[max_signs] projections.")
+/obj/item/holosign_creator/check_allowed_items(atom/target, not_inside, target_self)
+ if(HAS_TRAIT(target, TRAIT_COMBAT_MODE_SKIP_INTERACTION))
+ return FALSE
+ return ..()
+
/obj/item/holosign_creator/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!check_allowed_items(interacting_with, not_inside = TRUE))
return NONE
diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm
index 20233db522b39..8bede8813a256 100644
--- a/code/game/objects/items/hot_potato.dm
+++ b/code/game/objects/items/hot_potato.dm
@@ -18,7 +18,7 @@
var/stimulant = TRUE
var/detonate_explosion = TRUE
var/detonate_dev_range = 0
- var/detonate_heavy_range = 0
+ var/detonate_heavy_range = 1
var/detonate_light_range = 2
var/detonate_flash_range = 5
var/detonate_fire_range = 5
@@ -51,7 +51,10 @@
/obj/item/hot_potato/proc/detonate()
var/atom/location = loc
location.visible_message(span_userdanger("[src] [detonate_explosion? "explodes" : "activates"]!"), span_userdanger("[src] activates! You've ran out of time!"))
- if(detonate_explosion)
+ if(detonate_explosion && isliving(loc))
+ var/mob/living/victim_mob = loc
+ if(victim_mob.is_holding(src))
+ victim_mob.gib(DROP_ALL_REMAINS)
explosion(src, detonate_dev_range, detonate_heavy_range, detonate_light_range, detonate_fire_range, detonate_flash_range)
deactivate()
if(!reusable)
diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm
index 0f66cd4b6d108..948606d6d4068 100644
--- a/code/game/objects/items/inducer.dm
+++ b/code/game/objects/items/inducer.dm
@@ -61,8 +61,23 @@
/obj/item/inducer/examine(mob/living/user)
. = ..()
- if(!QDELETED(powerdevice))
- . += span_notice("Its display shows: [display_energy(powerdevice.charge)].")
+ . += examine_hints(user)
+
+/**
+ * Gives description for this inducer
+ * Arguments
+ *
+ * * mob/living/user - the mob we are returning the description to
+ */
+/obj/item/inducer/proc/examine_hints(mob/living/user)
+ PROTECTED_PROC(TRUE)
+ SHOULD_BE_PURE(TRUE)
+
+ . = list()
+
+ var/obj/item/stock_parts/power_store/our_cell = get_cell(src, user)
+ if(!QDELETED(our_cell))
+ . += span_notice("Its display shows: [display_energy(our_cell.charge)].")
if(opened)
. += span_notice("The cell can be removed with an empty hand.")
. += span_notice("Plasma sheets can be used to recharge the cell.")
@@ -99,14 +114,15 @@
/obj/item/inducer/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
. = NONE
+
if(user.combat_mode || !istype(tool) || tool.flags_1 & HOLOGRAM_1 || tool.item_flags & ABSTRACT)
return ITEM_INTERACT_SKIP_TO_ATTACK
- if(!opened)
- balloon_alert(user, "open first!")
- return ITEM_INTERACT_FAILURE
-
if(istype(tool, /obj/item/stock_parts/power_store))
+ if(!opened)
+ balloon_alert(user, "open first!")
+ return ITEM_INTERACT_FAILURE
+
if(!QDELETED(powerdevice))
balloon_alert(user, "cell already installed!")
return ITEM_INTERACT_FAILURE
@@ -118,7 +134,7 @@
powerdevice = tool
return ITEM_INTERACT_SUCCESS
- if(istype(tool, /obj/item/stack/sheet/mineral/plasma) && !QDELETED(powerdevice))
+ else if(istype(tool, /obj/item/stack/sheet/mineral/plasma) && !QDELETED(powerdevice))
if(!powerdevice.used_charge())
balloon_alert(user, "fully charged!")
return ITEM_INTERACT_FAILURE
@@ -131,6 +147,10 @@
/obj/item/inducer/interact_with_atom(atom/movable/interacting_with, mob/living/user, list/modifiers)
. = NONE
+
+ if(HAS_TRAIT(interacting_with, TRAIT_COMBAT_MODE_SKIP_INTERACTION))
+ return
+
if(user.combat_mode || !istype(interacting_with) || interacting_with.flags_1 & HOLOGRAM_1)
return ITEM_INTERACT_SKIP_TO_ATTACK
@@ -146,11 +166,13 @@
to_chat(user, span_warning("You don't have the dexterity to use [src]!"))
return ITEM_INTERACT_FAILURE
- if(QDELETED(powerdevice))
+ var/obj/item/stock_parts/power_store/our_cell = get_cell(src, user)
+
+ if(QDELETED(our_cell))
balloon_alert(user, "no cell installed!")
return ITEM_INTERACT_FAILURE
- if(!powerdevice.charge)
+ if(!our_cell.charge)
balloon_alert(user, "no charge!")
return ITEM_INTERACT_FAILURE
@@ -173,13 +195,13 @@
break
//transfer of charge
- var/transferred = min(powerdevice.charge, target_cell.used_charge(), (target_cell.rating_base * target_cell.rating * power_transfer_multiplier))
+ var/transferred = min(our_cell.charge, target_cell.used_charge(), target_cell.rating_base * target_cell.rating * power_transfer_multiplier)
if(!transferred)
break
- powerdevice.use(target_cell.give(transferred))
+ our_cell.use(target_cell.give(transferred))
//update all appearances
- powerdevice.update_appearance()
+ our_cell.update_appearance()
target_cell.update_appearance()
interacting_with.update_appearance()
@@ -223,3 +245,24 @@
desc = "A tool for inductively charging internal power cells. This one has a suspicious colour scheme, and seems to be rigged to transfer charge at a much faster rate."
power_transfer_multiplier = 2 // 2x the base speed
powerdevice = /obj/item/stock_parts/power_store/battery/super
+
+/obj/item/inducer/cyborg
+ name = "internal inducer"
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "inducer-engi"
+ powerdevice = null
+
+/obj/item/inducer/cyborg/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ return NONE
+
+/obj/item/inducer/cyborg/examine_hints(mob/living/user)
+ return list()
+
+/obj/item/inducer/cyborg/get_cell(atom/movable/interface, mob/living/silicon/robot/silicon_friend)
+ return istype(silicon_friend) ? silicon_friend.cell : null
+
+/obj/item/inducer/cyborg/screwdriver_act(mob/living/user, obj/item/tool)
+ return ITEM_INTERACT_FAILURE
+
+/obj/item/inducer/cyborg/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ return ITEM_INTERACT_FAILURE
diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm
index d4abe4c1d1a5b..7783dcff072b5 100644
--- a/code/game/objects/items/inspector.dm
+++ b/code/game/objects/items/inspector.dm
@@ -20,7 +20,6 @@
interaction_flags_click = NEED_DEXTERITY
throw_range = 1
throw_speed = 1
- COOLDOWN_DECLARE(scanning_person) //Cooldown for scanning a carbon
///How long it takes to print on time each mode, ordered NORMAL, FAST, HONK
var/list/time_list = list(5 SECONDS, 1 SECONDS, 0.1 SECONDS)
///Which print time mode we're on.
@@ -108,17 +107,8 @@
balloon_alert(user, "check cell!")
return ITEM_INTERACT_BLOCKING
- if(iscarbon(interacting_with)) //Prevents insta scanning people
- if(!COOLDOWN_FINISHED(src, scanning_person))
- return ITEM_INTERACT_BLOCKING
-
- visible_message(span_warning("[user] starts scanning [interacting_with] with [src]"))
- to_chat(interacting_with, span_userdanger("[user] is trying to scan you for contraband!"))
- balloon_alert_to_viewers("scanning...")
- playsound(src, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE)
- COOLDOWN_START(src, scanning_person, 4 SECONDS)
- if(!do_after(user, 4 SECONDS, interacting_with))
- return ITEM_INTERACT_BLOCKING
+ if(iscarbon(interacting_with)) // Prevents scanning people
+ return
if(contraband_scan(interacting_with, user))
playsound(src, 'sound/machines/uplink/uplinkerror.ogg', 40)
diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm
index 24506e006d81f..19de11388abf4 100644
--- a/code/game/objects/items/kitchen.dm
+++ b/code/game/objects/items/kitchen.dm
@@ -12,6 +12,7 @@
icon = 'icons/obj/service/kitchen.dmi'
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ worn_icon_state = "kitchen_tool"
/obj/item/kitchen/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/lighter.dm b/code/game/objects/items/lighter.dm
index a27db91909c3d..38794ab9079e3 100644
--- a/code/game/objects/items/lighter.dm
+++ b/code/game/objects/items/lighter.dm
@@ -52,6 +52,13 @@
)
update_appearance()
+/obj/item/lighter/examine(mob/user)
+ . = ..()
+ if(get_fuel() <= 0)
+ . += span_warning("It is out of lighter fluid! Refill it with welder fuel.")
+ else
+ . += span_notice("It contains [get_fuel()] units of fuel out of [maximum_fuel].")
+
/// Destroy the lighter when it's shot by a bullet
/obj/item/lighter/proc/on_intercepted_bullet(mob/living/victim, obj/projectile/bullet)
victim.visible_message(span_warning("\The [bullet] shatters on [victim]'s lighter!"))
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 7ea8a663caf56..6ef4624f50e2a 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -188,7 +188,7 @@
wound_bonus = 5
bare_wound_bonus = 15
-/obj/item/melee/sabre/Initialize(mapload)
+/obj/item/melee/parsnip_sabre/Initialize(mapload)
. = ..()
AddComponent(/datum/component/jousting)
diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm
index 66e0b15e99fd7..7d5cc7eabe8f2 100644
--- a/code/game/objects/items/paint.dm
+++ b/code/game/objects/items/paint.dm
@@ -118,7 +118,10 @@
if(paintleft <= 0)
return NONE
paintleft--
- interacting_with.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY)
+ var/color_type = SATURATION_MULTIPLY
+ if (LAZYACCESS(modifiers, RIGHT_CLICK))
+ color_type = SATURATION_OVERRIDE
+ interacting_with.add_atom_colour(color_transition_filter(paint_color, color_type), WASHABLE_COLOUR_PRIORITY)
if(paintleft <= 0)
icon_state = "paint_empty"
return ITEM_INTERACT_SUCCESS
diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm
index 2d700cf3ff0c0..3bab737c9fbd7 100644
--- a/code/game/objects/items/pet_carrier.dm
+++ b/code/game/objects/items/pet_carrier.dm
@@ -130,7 +130,7 @@
if(!do_after(user, rand(300, 400), target = user) || open || !locked || !(user in occupants))
return
loc.visible_message(span_warning("[user] flips the lock switch on [src] by reaching through!"), null, null, null, user)
- to_chat(user, span_boldannounce("Bingo! The lock pops open!"))
+ to_chat(user, span_bolddanger("Bingo! The lock pops open!"))
locked = FALSE
playsound(src, 'sound/machines/airlock/boltsup.ogg', 30, TRUE)
update_appearance()
diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm
index a008acedb6d1c..a7bd4da85aebf 100644
--- a/code/game/objects/items/puzzle_pieces.dm
+++ b/code/game/objects/items/puzzle_pieces.dm
@@ -454,9 +454,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/password, 32)
"green",
"blue",
"yellow",
- "orange",
- "brown",
+ COLOR_ORANGE, // orange is also not valid
+ COLOR_BROWN, // brown is NOT a valid byond color
"gray",
+ "purple",
)
for(var/digit in 0 to 9)
digit_to_color["[digit]"] = pick_n_take(possible_colors)
diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm
index 961e0fff88afd..60f84e14651b9 100644
--- a/code/game/objects/items/rcd/RCD.dm
+++ b/code/game/objects/items/rcd/RCD.dm
@@ -199,6 +199,17 @@
return TRUE
+/obj/item/construction/rcd/build_delay(mob/user, delay, atom/target)
+ //unaffected by ui changes
+ if(mode == RCD_DECONSTRUCT)
+ if(delay <= 0)
+ return TRUE
+
+ return do_after(user, delay, target)
+
+ //checks for ui changes
+ return ..()
+
/**
* actual proc to create the structure
*
@@ -249,6 +260,8 @@
* * rcd_results- list of params which contains the cost & build mode to create the structure
*/
/obj/item/construction/rcd/proc/_rcd_create_effect(atom/target, mob/user, delay, list/rcd_results)
+ PRIVATE_PROC(TRUE)
+
var/obj/effect/constructing_effect/rcd_effect = new(get_turf(target), delay, rcd_results["[RCD_DESIGN_MODE]"], upgrade)
//resource & structure placement sanity checks before & after delay along with beam effects
diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm
index 07db9978e3e09..933f8c1c64876 100644
--- a/code/game/objects/items/rcd/RPD.dm
+++ b/code/game/objects/items/rcd/RPD.dm
@@ -9,164 +9,15 @@
#define DESTROY_MODE (1<<2)
#define REPROGRAM_MODE (1<<3)
-#define PIPE_LAYER(num) (1<<(num-1))
+///Maximum number of pipe layers the RPD can support
+#define MAX_PIPE_LAYERS 5
+
+///Converts the pipe layer into a bitflag so we can append multiple layers into 1 bitfield
+#define PIPE_LAYER(num) (1 << (num - 1))
///Sound to make when we use the item to build/destroy something
#define RPD_USE_SOUND 'sound/items/deconstruct.ogg'
-GLOBAL_LIST_INIT(atmos_pipe_recipes, list(
- "Pipes" = list(
- new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/smart, TRUE),
- new /datum/pipe_info/pipe("Layer Adapter", /obj/machinery/atmospherics/pipe/layer_manifold, TRUE),
- new /datum/pipe_info/pipe("Color Adapter", /obj/machinery/atmospherics/pipe/color_adapter, TRUE),
- new /datum/pipe_info/pipe("Bridge Pipe", /obj/machinery/atmospherics/pipe/bridge_pipe, TRUE),
- new /datum/pipe_info/pipe("Multi-Deck Adapter", /obj/machinery/atmospherics/pipe/multiz, FALSE),
- ),
- "Binary" = list(
- new /datum/pipe_info/pipe("Manual Valve", /obj/machinery/atmospherics/components/binary/valve, TRUE),
- new /datum/pipe_info/pipe("Digital Valve", /obj/machinery/atmospherics/components/binary/valve/digital, TRUE),
- new /datum/pipe_info/pipe("Gas Pump", /obj/machinery/atmospherics/components/binary/pump, TRUE),
- new /datum/pipe_info/pipe("Volume Pump", /obj/machinery/atmospherics/components/binary/volume_pump, TRUE),
- new /datum/pipe_info/pipe("Passive Gate", /obj/machinery/atmospherics/components/binary/passive_gate, TRUE),
- new /datum/pipe_info/pipe("Pressure Valve", /obj/machinery/atmospherics/components/binary/pressure_valve, TRUE),
- new /datum/pipe_info/pipe("Temperature Gate", /obj/machinery/atmospherics/components/binary/temperature_gate, TRUE),
- new /datum/pipe_info/pipe("Temperature Pump", /obj/machinery/atmospherics/components/binary/temperature_pump, TRUE),
- ),
- "Devices" = list(
- new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/components/trinary/filter, TRUE),
- new /datum/pipe_info/pipe("Gas Mixer", /obj/machinery/atmospherics/components/trinary/mixer, TRUE),
- new /datum/pipe_info/pipe("Connector", /obj/machinery/atmospherics/components/unary/portables_connector, TRUE),
- new /datum/pipe_info/pipe("Injector", /obj/machinery/atmospherics/components/unary/outlet_injector, TRUE),
- new /datum/pipe_info/pipe("Scrubber", /obj/machinery/atmospherics/components/unary/vent_scrubber, TRUE),
- new /datum/pipe_info/pipe("Unary Vent", /obj/machinery/atmospherics/components/unary/vent_pump, TRUE),
- new /datum/pipe_info/pipe("Passive Vent", /obj/machinery/atmospherics/components/unary/passive_vent, TRUE),
- new /datum/pipe_info/meter("Meter"),
- ),
- "Heat Exchange" = list(
- new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/heat_exchanging/simple, FALSE),
- new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold, FALSE),
- new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, FALSE),
- new /datum/pipe_info/pipe("Junction", /obj/machinery/atmospherics/pipe/heat_exchanging/junction, FALSE),
- new /datum/pipe_info/pipe("Heat Exchanger", /obj/machinery/atmospherics/components/unary/heat_exchanger, FALSE),
- )
-))
-
-GLOBAL_LIST_INIT(disposal_pipe_recipes, list(
- "Disposal Pipes" = list(
- new /datum/pipe_info/disposal("Pipe", /obj/structure/disposalpipe/segment, PIPE_BENDABLE),
- new /datum/pipe_info/disposal("Junction", /obj/structure/disposalpipe/junction, PIPE_TRIN_M),
- new /datum/pipe_info/disposal("Y-Junction", /obj/structure/disposalpipe/junction/yjunction),
- new /datum/pipe_info/disposal("Sort Junction", /obj/structure/disposalpipe/sorting/mail, PIPE_TRIN_M),
- new /datum/pipe_info/disposal("Rotator", /obj/structure/disposalpipe/rotator, PIPE_ONEDIR_FLIPPABLE),
- new /datum/pipe_info/disposal("Trunk", /obj/structure/disposalpipe/trunk),
- new /datum/pipe_info/disposal("Down Turn", /obj/structure/disposalpipe/trunk/multiz/down),
- new /datum/pipe_info/disposal("Up Turn", /obj/structure/disposalpipe/trunk/multiz),
- new /datum/pipe_info/disposal("Bin", /obj/machinery/disposal/bin, PIPE_ONEDIR),
- new /datum/pipe_info/disposal("Outlet", /obj/structure/disposaloutlet),
- new /datum/pipe_info/disposal("Chute", /obj/machinery/disposal/delivery_chute),
- )
-))
-
-GLOBAL_LIST_INIT(transit_tube_recipes, list(
- "Transit Tubes" = list(
- new /datum/pipe_info/transit("Straight Tube", /obj/structure/c_transit_tube, PIPE_STRAIGHT),
- new /datum/pipe_info/transit("Straight Tube with Crossing", /obj/structure/c_transit_tube/crossing, PIPE_STRAIGHT),
- new /datum/pipe_info/transit("Curved Tube", /obj/structure/c_transit_tube/curved, PIPE_UNARY_FLIPPABLE),
- new /datum/pipe_info/transit("Diagonal Tube", /obj/structure/c_transit_tube/diagonal, PIPE_STRAIGHT),
- new /datum/pipe_info/transit("Diagonal Tube with Crossing", /obj/structure/c_transit_tube/diagonal/crossing, PIPE_STRAIGHT),
- new /datum/pipe_info/transit("Junction", /obj/structure/c_transit_tube/junction, PIPE_UNARY_FLIPPABLE),
- ),
- "Station Equipment" = list(
- new /datum/pipe_info/transit("Through Tube Station", /obj/structure/c_transit_tube/station, PIPE_STRAIGHT),
- new /datum/pipe_info/transit("Terminus Tube Station", /obj/structure/c_transit_tube/station/reverse, PIPE_UNARY_FLIPPABLE),
- new /datum/pipe_info/transit("Through Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser, PIPE_STRAIGHT),
- new /datum/pipe_info/transit("Terminus Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser/reverse, PIPE_UNARY_FLIPPABLE),
- new /datum/pipe_info/transit("Transit Tube Pod", /obj/structure/c_transit_tube_pod, PIPE_ONEDIR),
- )
-))
-
-/datum/pipe_info
- var/name
- var/icon_state
- var/id = -1
- var/dirtype = PIPE_BENDABLE
- var/all_layers
-
-/datum/pipe_info/proc/get_preview(selected_dir, selected = FALSE)
- var/list/dirs
- switch(dirtype)
- if(PIPE_STRAIGHT, PIPE_BENDABLE)
- dirs = list("[NORTH]" = "Vertical", "[EAST]" = "Horizontal")
- if(dirtype == PIPE_BENDABLE)
- dirs += list("[NORTHWEST]" = "West to North", "[NORTHEAST]" = "North to East",
- "[SOUTHWEST]" = "South to West", "[SOUTHEAST]" = "East to South")
- if(PIPE_TRINARY)
- dirs = list("[NORTH]" = "West South East", "[SOUTH]" = "East North West",
- "[EAST]" = "North West South", "[WEST]" = "South East North")
- if(PIPE_TRIN_M)
- dirs = list("[NORTH]" = "North East South", "[SOUTHWEST]" = "North West South",
- "[NORTHEAST]" = "South East North", "[SOUTH]" = "South West North",
- "[WEST]" = "West North East", "[SOUTHEAST]" = "West South East",
- "[NORTHWEST]" = "East North West", "[EAST]" = "East South West",)
- if(PIPE_UNARY)
- dirs = list("[NORTH]" = "North", "[SOUTH]" = "South", "[WEST]" = "West", "[EAST]" = "East")
- if(PIPE_ONEDIR)
- dirs = list("[SOUTH]" = name)
- if(PIPE_UNARY_FLIPPABLE)
- dirs = list("[NORTH]" = "North", "[EAST]" = "East", "[SOUTH]" = "South", "[WEST]" = "West",
- "[NORTHEAST]" = "North Flipped", "[SOUTHEAST]" = "East Flipped", "[SOUTHWEST]" = "South Flipped", "[NORTHWEST]" = "West Flipped")
- if(PIPE_ONEDIR_FLIPPABLE)
- dirs = list("[SOUTH]" = name, "[SOUTHEAST]" = "[name] Flipped")
-
- var/list/rows = list()
- for(var/dir in dirs)
- var/numdir = text2num(dir)
- var/flipped = ((dirtype == PIPE_TRIN_M) || (dirtype == PIPE_UNARY_FLIPPABLE) || (dirtype == PIPE_ONEDIR_FLIPPABLE)) && (ISDIAGONALDIR(numdir))
- var/is_variant_selected = selected && (!selected_dir ? FALSE : (dirtype == PIPE_ONEDIR ? TRUE : (numdir == selected_dir)))
- rows += list(list(
- "selected" = is_variant_selected,
- "dir" = dir2text(numdir),
- "dir_name" = dirs[dir],
- "icon_state" = icon_state,
- "flipped" = flipped,
- ))
-
- return rows
-
-/datum/pipe_info/pipe/New(label, obj/machinery/atmospherics/path, use_five_layers)
- name = label
- id = path
- all_layers = use_five_layers
- icon_state = initial(path.pipe_state)
- var/obj/item/pipe/c = initial(path.construction_type)
- dirtype = initial(c.RPD_type)
-
-/datum/pipe_info/meter
- icon_state = "meter"
- dirtype = PIPE_ONEDIR
- all_layers = TRUE
-
-/datum/pipe_info/meter/New(label)
- name = label
-
-/datum/pipe_info/disposal/New(label, obj/path, dt=PIPE_UNARY)
- name = label
- id = path
-
- icon_state = initial(path.icon_state)
- if(ispath(path, /obj/structure/disposalpipe))
- icon_state = "con[icon_state]"
-
- dirtype = dt
-
-/datum/pipe_info/transit/New(label, obj/path, dt=PIPE_UNARY)
- name = label
- id = path
- dirtype = dt
- icon_state = initial(path.icon_state)
- if(dt == PIPE_UNARY_FLIPPABLE)
- icon_state = "[icon_state]_preview"
-
/obj/item/pipe_dispenser
name = "rapid pipe dispenser"
desc = "A device used to rapidly pipe things."
@@ -210,8 +61,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
var/pipe_layers = PIPE_LAYER(3)
///Are we laying multiple layers per click
var/multi_layer = FALSE
- ///Layer for disposal ducts
- var/ducting_layer = DUCT_LAYER_DEFAULT
///Stores the current device to spawn
var/datum/pipe_info/recipe
///Stores the first atmos device
@@ -245,8 +94,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
register_item_context()
/obj/item/pipe_dispenser/Destroy()
- qdel(spark_system)
- spark_system = null
+ QDEL_NULL(spark_system)
return ..()
/obj/item/pipe_dispenser/examine(mob/user)
@@ -254,6 +102,15 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
. += span_notice("You can scroll your mouse wheel to change the piping layer.")
. += span_notice("You can right click a pipe to set the RPD to its color and layer.")
+/obj/item/pipe_dispenser/add_item_context(obj/item/source, list/context, atom/target, mob/living/user)
+ . = NONE
+
+ if(istype(target, /obj/machinery/atmospherics))
+ var/obj/machinery/atmospherics/atmos_target = target
+ if(atmos_target.pipe_color && atmos_target.piping_layer)
+ context[SCREENTIP_CONTEXT_RMB] = "Copy piping color and layer"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/item/pipe_dispenser/equipped(mob/user, slot, initial)
. = ..()
if(slot & ITEM_SLOT_HANDS)
@@ -265,13 +122,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
UnregisterSignal(user, COMSIG_MOUSE_SCROLL_ON)
return ..()
-/obj/item/pipe_dispenser/proc/get_active_pipe_layers()
- var/list/layer_nums = list()
- for(var/pipe_layer_number in 1 to 5)
- if(PIPE_LAYER(pipe_layer_number) & pipe_layers)
- layer_nums += pipe_layer_number
- return layer_nums
-
/obj/item/pipe_dispenser/cyborg_unequip(mob/user)
UnregisterSignal(user, COMSIG_MOUSE_SCROLL_ON)
return ..()
@@ -279,30 +129,23 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
/obj/item/pipe_dispenser/attack_self(mob/user)
ui_interact(user)
-/obj/item/pipe_dispenser/pre_attack_secondary(obj/machinery/atmospherics/target, mob/user, params)
- if(!istype(target, /obj/machinery/atmospherics))
- return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
- if(target.pipe_color && target.piping_layer)
- paint_color = GLOB.pipe_color_name[target.pipe_color]
- pipe_layers = PIPE_LAYER(target.piping_layer)
- balloon_alert(user, "color/layer copied")
- return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
-
-/obj/item/pipe_dispenser/add_item_context(obj/item/source, list/context, atom/target, mob/living/user)
- . = ..()
- if(istype(target, /obj/machinery/atmospherics))
- var/obj/machinery/atmospherics/atmos_target = target
- if(atmos_target.pipe_color && atmos_target.piping_layer)
- context[SCREENTIP_CONTEXT_RMB] = "Copy piping color and layer"
- return CONTEXTUAL_SCREENTIP_SET
-
-
/obj/item/pipe_dispenser/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] points the end of the RPD down [user.p_their()] throat and presses a button! It looks like [user.p_theyre()] trying to commit suicide..."))
playsound(get_turf(user), SFX_TOOL_SWITCH, 20, TRUE)
playsound(get_turf(user), RPD_USE_SOUND, 50, TRUE)
return BRUTELOSS
+///Converts pipe_layers bitflag into its corresponding list of actual pipe layers
+/obj/item/pipe_dispenser/proc/get_active_pipe_layers()
+ PRIVATE_PROC(TRUE)
+ RETURN_TYPE(/list)
+
+ var/list/layer_nums = list()
+ for(var/pipe_layer_number in 1 to MAX_PIPE_LAYERS)
+ if(PIPE_LAYER(pipe_layer_number) & pipe_layers)
+ layer_nums += pipe_layer_number
+ return layer_nums
+
/obj/item/pipe_dispenser/ui_assets(mob/user)
return list(
get_asset_datum(/datum/asset/spritesheet/pipes),
@@ -315,15 +158,16 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
ui.open()
/obj/item/pipe_dispenser/ui_static_data(mob/user)
- var/list/data = list("paint_colors" = GLOB.pipe_paint_colors)
- return data
+ return list(
+ "paint_colors" = GLOB.pipe_paint_colors,
+ "max_pipe_layers" = MAX_PIPE_LAYERS,
+ )
/obj/item/pipe_dispenser/ui_data(mob/user)
var/list/data = list(
"category" = category,
"multi_layer" = multi_layer,
"pipe_layers" = pipe_layers,
- "ducting_layer" = ducting_layer,
"categories" = list(),
"selected_recipe" = recipe.name,
"selected_color" = paint_color,
@@ -370,10 +214,11 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
playsound(src, SFX_TOOL_SWITCH, 20, TRUE)
- var/playeffect = TRUE
switch(action)
if("color")
paint_color = params["paint_color"]
+ return TRUE
+
if("category")
category = text2num(params["category"])
switch(category)
@@ -384,66 +229,87 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
if(TRANSIT_CATEGORY)
recipe = first_transit
p_dir = NORTH
- playeffect = FALSE
+ return TRUE
+
if("pipe_layers")
var/selected_layers = text2num(params["pipe_layers"])
+
+ //is valid
var/valid_layer = FALSE
- for(var/pipe_layer_number in 1 to 5)
+ for(var/pipe_layer_number in 1 to MAX_PIPE_LAYERS)
if(!(PIPE_LAYER(pipe_layer_number) & selected_layers))
continue
valid_layer = TRUE
+ break
if(!valid_layer)
- return
+ return FALSE
+
+ //append or set the layer
if(multi_layer)
if(pipe_layers != selected_layers)
pipe_layers ^= selected_layers
else
pipe_layers = selected_layers
- playeffect = FALSE
+
+ return TRUE
+
if("toggle_multi_layer")
if(multi_layer)
pipe_layers = PIPE_LAYER(max(get_active_pipe_layers()))
multi_layer = !multi_layer
- if("ducting_layer")
- ducting_layer = text2num(params["ducting_layer"])
- playeffect = FALSE
+
if("pipe_type")
var/static/list/recipes
if(!recipes)
recipes = GLOB.disposal_pipe_recipes + GLOB.atmos_pipe_recipes + GLOB.transit_tube_recipes
recipe = recipes[params["category"]][text2num(params["pipe_type"])]
p_dir = NORTH
+
if("setdir")
p_dir = text2dir(params["dir"])
p_flipped = text2num(params["flipped"])
- playeffect = FALSE
+ return TRUE
+
if("mode")
var/selected_mode = text2num(params["mode"])
mode ^= selected_mode
+
if("init_dir_setting")
var/target_dir = p_init_dir ^ text2dir(params["dir_flag"])
// Refuse to create a smart pipe that can only connect in one direction (it would act weirdly and lack an icon)
if (ISNOTSTUB(target_dir))
p_init_dir = target_dir
else
- to_chat(usr, span_warning("\The [src]'s screen flashes a warning: Can't configure a pipe to only connect in one direction."))
- playeffect = FALSE
+ to_chat(ui.user, span_warning("\The [src]'s screen flashes a warning: Can't configure a pipe to only connect in one direction."))
+ return FALSE
+
if("init_reset")
p_init_dir = ALL_CARDINALS
- if(playeffect)
- spark_system.start()
- playsound(get_turf(src), 'sound/effects/pop.ogg', 50, FALSE)
+
+ spark_system.start()
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 50, FALSE)
return TRUE
-/obj/item/pipe_dispenser/pre_attack(atom/atom_to_attack, mob/user, params)
- if(!ISADVANCEDTOOLUSER(user) || istype(atom_to_attack, /turf/open/space/transit))
- return ..()
+/obj/item/pipe_dispenser/interact_with_atom(atom/attack_target, mob/living/user, list/modifiers)
+ . = NONE
- if(istype(atom_to_attack, /obj/item/rpd_upgrade))
- install_upgrade(atom_to_attack, user)
- return TRUE
+ if(!ISADVANCEDTOOLUSER(user) || HAS_TRAIT(attack_target, TRAIT_COMBAT_MODE_SKIP_INTERACTION) || istype(attack_target, /turf/open/space/transit))
+ return
- var/atom/attack_target = atom_to_attack
+ if(istype(attack_target, /obj/item/rpd_upgrade))
+ var/obj/item/rpd_upgrade/rpd_disk = attack_target
+
+ // Check if the upgrade's already present
+ if(rpd_disk.upgrade_flags & upgrade_flags)
+ balloon_alert(user, "already installed!")
+ return ITEM_INTERACT_BLOCKING
+
+ // Adds the upgrade from the disk and then deletes the disk
+ upgrade_flags |= rpd_disk.upgrade_flags
+ playsound(loc, 'sound/machines/click.ogg', 50, vary = TRUE)
+ balloon_alert(user, "upgrade installed")
+ qdel(rpd_disk)
+ return ITEM_INTERACT_SUCCESS
//So that changing the menu settings doesn't affect the pipes already being built.
var/queued_pipe_type = recipe.id
@@ -454,20 +320,29 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
if((mode & DESTROY_MODE) && (upgrade_flags & RPD_UPGRADE_UNWRENCH) && istype(attack_target, /obj/machinery/atmospherics) && !(DOING_INTERACTION_WITH_TARGET(user, attack_target)))
attack_target = attack_target.wrench_act(user, src)
if(!isatom(attack_target)) //can return null, FALSE if do_after() fails see /obj/machinery/atmospherics/wrench_act()
- return TRUE
+ return ITEM_INTERACT_FAILURE
if(istype(attack_target, /obj/machinery/atmospherics) && (mode & BUILD_MODE))
attack_target = get_turf(attack_target)
- var/can_make_pipe = check_can_make_pipe(attack_target)
-
- . = TRUE
-
- if((mode & DESTROY_MODE) && istype(attack_target, /obj/item/pipe) || istype(attack_target, /obj/structure/disposalconstruct) || istype(attack_target, /obj/structure/c_transit_tube) || istype(attack_target, /obj/structure/c_transit_tube_pod) || istype(attack_target, /obj/item/pipe_meter) || istype(attack_target, /obj/structure/disposalpipe/broken))
- playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE)
- playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE)
+ var/can_destroy = FALSE
+ if((mode & DESTROY_MODE) && istype(attack_target, /obj/item/pipe))
+ can_destroy = TRUE
+ if(!can_destroy)
+ var/static/list/destroyables = list(
+ /obj/structure/disposalconstruct,
+ /obj/structure/c_transit_tube,
+ /obj/structure/c_transit_tube_pod,
+ /obj/item/pipe_meter,
+ /obj/structure/disposalpipe/broken
+ )
+ can_destroy = is_type_in_list(attack_target, destroyables)
+ if(can_destroy)
+ var/turf/ground = get_turf(src)
+ playsound(ground, SFX_TOOL_SWITCH, 20, TRUE)
+ playsound(ground, RPD_USE_SOUND, 50, TRUE)
qdel(attack_target)
- return
+ return ITEM_INTERACT_SUCCESS
if(mode & REPROGRAM_MODE)
// If this is a placed smart pipe, try to reprogram it
@@ -475,16 +350,16 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
if(istype(target_smart_pipe))
if(target_smart_pipe.dir == ALL_CARDINALS)
balloon_alert(user, "has no unconnected directions!")
- return
+ return ITEM_INTERACT_FAILURE
var/old_init_dir = target_smart_pipe.get_init_directions()
if(old_init_dir == p_init_dir)
balloon_alert(user, "already configured!")
- return
+ return ITEM_INTERACT_FAILURE
// Check for differences in unconnected directions
var/target_differences = (p_init_dir ^ old_init_dir) & ~target_smart_pipe.connections
if(!target_differences)
balloon_alert(user, "already configured for its directions!")
- return
+ return ITEM_INTERACT_FAILURE
playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE)
@@ -494,7 +369,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
// Double check to make sure that nothing has changed. If anything we were about to change was connected during do_after, abort
if(target_differences & target_smart_pipe.connections)
balloon_alert(user, "can't configure for its direction!")
- return
+ return ITEM_INTERACT_FAILURE
// Grab the current initializable directions, which may differ from old_init_dir if someone else was working on the same pipe at the same time
var/current_init_dir = target_smart_pipe.get_init_directions()
// Access p_init_dir directly. The RPD can change target layer and initializable directions (though not pipe type or dir) while working to dispense and connect a component,
@@ -503,7 +378,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
// Don't make a smart pipe with only one connection
if(ISSTUB(new_init_dir))
balloon_alert(user, "no one directional pipes allowed!")
- return
+ return ITEM_INTERACT_FAILURE
target_smart_pipe.set_init_directions(new_init_dir)
// We're now reconfigured.
// We can never disconnect from existing connections, but we can connect to previously unconnected directions, and should immediately do so
@@ -529,108 +404,146 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
// Finally, update our internal state - update_pipe_icon also updates dir and connections
target_smart_pipe.update_pipe_icon()
user.visible_message(span_notice("[user] reprograms \the [target_smart_pipe]."), span_notice("You reprogram \the [target_smart_pipe]."))
- return
+ return ITEM_INTERACT_SUCCESS
+
// If this is an unplaced smart pipe, try to reprogram it
var/obj/item/pipe/quaternary/target_unsecured_pipe = attack_target
if(istype(target_unsecured_pipe) && ispath(target_unsecured_pipe.pipe_type, /obj/machinery/atmospherics/pipe/smart))
// An unplaced pipe never has any existing connections, so just directly assign the new configuration
target_unsecured_pipe.p_init_dir = p_init_dir
target_unsecured_pipe.update()
+ return ITEM_INTERACT_SUCCESS
if(mode & BUILD_MODE)
switch(category) //if we've gotten this var, the target is valid
if(ATMOS_CATEGORY) //Making pipes
- if(!do_pipe_build(attack_target, user, params))
- return ..()
+ return do_pipe_build(attack_target, user) ? ITEM_INTERACT_SUCCESS : ITEM_INTERACT_FAILURE
if(DISPOSALS_CATEGORY) //Making disposals pipes
- if(!can_make_pipe)
- return ..()
+ if(!check_can_make_pipe(attack_target))
+ return ITEM_INTERACT_FAILURE
attack_target = get_turf(attack_target)
if(isclosedturf(attack_target))
balloon_alert(user, "target is blocked!")
- return
+ return ITEM_INTERACT_FAILURE
playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE)
- if(do_after(user, disposal_build_speed, target = attack_target))
- var/obj/structure/disposalconstruct/new_disposals_segment = new (attack_target, queued_pipe_type, queued_pipe_dir, queued_pipe_flipped)
- if(!new_disposals_segment.can_place())
- balloon_alert(user, "not enough room!")
- qdel(new_disposals_segment)
- return
+ if(!do_after(user, disposal_build_speed, target = attack_target))
+ return ITEM_INTERACT_FAILURE
- playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE)
+ var/obj/structure/disposalconstruct/new_disposals_segment = new (attack_target, queued_pipe_type, queued_pipe_dir, queued_pipe_flipped)
- new_disposals_segment.add_fingerprint(usr)
- new_disposals_segment.update_appearance()
- if(mode & WRENCH_MODE)
- new_disposals_segment.wrench_act(user, src)
- return
+ if(!new_disposals_segment.can_place())
+ balloon_alert(user, "not enough room!")
+ qdel(new_disposals_segment)
+ return ITEM_INTERACT_FAILURE
+
+ playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE)
+
+ new_disposals_segment.add_fingerprint(user)
+ new_disposals_segment.update_appearance()
+ if(mode & WRENCH_MODE)
+ new_disposals_segment.wrench_act(user, src)
+ return ITEM_INTERACT_SUCCESS
if(TRANSIT_CATEGORY) //Making transit tubes
- if(!can_make_pipe)
- return ..()
+ if(!check_can_make_pipe(attack_target))
+ return ITEM_INTERACT_FAILURE
attack_target = get_turf(attack_target)
if(isclosedturf(attack_target))
balloon_alert(user, "something in the way!")
- return
+ return ITEM_INTERACT_FAILURE
var/turf/target_turf = get_turf(attack_target)
if(target_turf.is_blocked_turf(exclude_mobs = TRUE))
balloon_alert(user, "something in the way!")
- return
+ return ITEM_INTERACT_FAILURE
playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE)
- if(do_after(user, transit_build_speed, target = attack_target))
- playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE)
- if(queued_pipe_type == /obj/structure/c_transit_tube_pod)
- var/obj/structure/c_transit_tube_pod/pod = new /obj/structure/c_transit_tube_pod(attack_target)
- pod.add_fingerprint(usr)
- if(mode & WRENCH_MODE)
- pod.wrench_act(user, src)
-
- else
- var/obj/structure/c_transit_tube/tube = new queued_pipe_type(attack_target)
- tube.setDir(queued_pipe_dir)
-
- if(queued_pipe_flipped)
- tube.setDir(turn(queued_pipe_dir, 45 + ROTATION_FLIP))
- tube.post_rotation(user, ROTATION_FLIP)
-
- tube.add_fingerprint(usr)
- if(mode & WRENCH_MODE)
- tube.wrench_act(user, src)
- return
- else
- return ..()
+ if(!do_after(user, transit_build_speed, target = attack_target))
+ return ITEM_INTERACT_FAILURE
+
+ playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE)
+ if(queued_pipe_type == /obj/structure/c_transit_tube_pod)
+ var/obj/structure/c_transit_tube_pod/pod = new /obj/structure/c_transit_tube_pod(attack_target)
+ pod.add_fingerprint(user)
+ if(mode & WRENCH_MODE)
+ pod.wrench_act(user, src)
+
+ else
+ var/obj/structure/c_transit_tube/tube = new queued_pipe_type(attack_target)
+ tube.setDir(queued_pipe_dir)
+ if(queued_pipe_flipped)
+ tube.setDir(turn(queued_pipe_dir, 45 + ROTATION_FLIP))
+ tube.post_rotation(user, ROTATION_FLIP)
+
+ tube.add_fingerprint(user)
+ if(mode & WRENCH_MODE)
+ tube.wrench_act(user, src)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/pipe_dispenser/interact_with_atom_secondary(obj/machinery/atmospherics/target, mob/living/user, list/modifiers)
+ . = NONE
+
+ if(!istype(target))
+ return
+
+ if(target.pipe_color && target.piping_layer)
+ paint_color = GLOB.pipe_color_name[target.pipe_color]
+ pipe_layers = PIPE_LAYER(target.piping_layer)
+ balloon_alert(user, "color/layer copied")
+ return ITEM_INTERACT_SUCCESS
+
+/**
+ * Can we make a pipe on the target
+ * Arguments
+ *
+ * * atom/target_of_attack - the target we are trying to build a pipe on
+ */
/obj/item/pipe_dispenser/proc/check_can_make_pipe(atom/target_of_attack)
+ PRIVATE_PROC(TRUE)
+ SHOULD_BE_PURE(TRUE)
+
+ if(isturf(target_of_attack))
+ return TRUE
+
//make sure what we're clicking is valid for the current category
- var/static/list/make_pipe_whitelist = typecacheof(list(/obj/structure/lattice, /obj/structure/girder, /obj/item/pipe, /obj/structure/window, /obj/structure/grille))
- var/can_we_make_pipe = (isturf(target_of_attack) || is_type_in_typecache(target_of_attack, make_pipe_whitelist))
- return can_we_make_pipe
+ var/static/list/make_pipe_whitelist = typecacheof(
+ list(
+ /obj/structure/lattice,
+ /obj/structure/girder,
+ /obj/item/pipe,
+ /obj/structure/window,
+ /obj/structure/grille
+ )
+ )
+ return is_type_in_typecache(target_of_attack, make_pipe_whitelist)
+
+/**
+ * Build pipe on the target
+ * Arguments
+ *
+ * * atom/atom_to_target - the target we are trying to build the pipe on
+ * * mob/user - mob performing the action
+ */
+/obj/item/pipe_dispenser/proc/do_pipe_build(atom/atom_to_target, mob/user)
+ PRIVATE_PROC(TRUE)
+
+ if(!check_can_make_pipe(atom_to_target))
+ return FALSE
-/obj/item/pipe_dispenser/proc/do_pipe_build(atom/atom_to_target, mob/user, params)
//So that changing the menu settings doesn't affect the pipes already being built.
var/queued_pipe_type = recipe.id
var/queued_pipe_dir = p_dir
var/queued_pipe_flipped = p_flipped
- var/can_make_pipe = check_can_make_pipe(atom_to_target)
var/list/pipe_layer_numbers = get_active_pipe_layers()
- var/continued_build = FALSE
- for(var/pipe_layer_num in 1 to length(pipe_layer_numbers))
- var/layer_to_build = pipe_layer_numbers[pipe_layer_num]
- if(layer_to_build != pipe_layer_numbers[1])
- continued_build = TRUE
- if(!layer_to_build)
- return FALSE
- if(!can_make_pipe)
- return FALSE
+ for(var/layer_to_build in pipe_layer_numbers)
playsound(get_turf(src), SFX_TOOL_SWITCH, 20, vary = TRUE)
- if(!continued_build && !do_after(user, atmos_build_speed, target = atom_to_target))
+ if(!do_after(user, atmos_build_speed, target = atom_to_target))
return FALSE
- if(!recipe.all_layers && (layer_to_build == 1 || layer_to_build == 5))
+ if(!recipe.all_layers && (layer_to_build == 1 || layer_to_build == MAX_PIPE_LAYERS))
balloon_alert(user, "can't build on layer [layer_to_build]!")
if(multi_layer)
continue
@@ -657,7 +570,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
new_flippable_pipe.flipped = queued_pipe_flipped
pipe_type.update()
- pipe_type.add_fingerprint(usr)
+ pipe_type.add_fingerprint(user)
pipe_type.set_piping_layer(layer_to_build)
if(ispath(queued_pipe_type, /obj/machinery/atmospherics) && !ispath(queued_pipe_type, /obj/machinery/atmospherics/pipe/color_adapter))
pipe_type.add_atom_colour(GLOB.pipe_paint_colors[paint_color], FIXED_COLOUR_PRIORITY)
@@ -665,24 +578,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
pipe_type.wrench_act(user, src)
return TRUE
-/obj/item/pipe_dispenser/attackby(obj/item/item, mob/user, params)
- if(istype(item, /obj/item/rpd_upgrade))
- install_upgrade(item, user)
- return TRUE
- return ..()
-
-/// Installs an upgrade into the RPD after checking if it is already installed
-/obj/item/pipe_dispenser/proc/install_upgrade(obj/item/rpd_upgrade/rpd_disk, mob/user)
- // Check if the upgrade's already present
- if(rpd_disk.upgrade_flags & upgrade_flags)
- balloon_alert(user, "already installed!")
- return
- // Adds the upgrade from the disk and then deletes the disk
- upgrade_flags |= rpd_disk.upgrade_flags
- playsound(loc, 'sound/machines/click.ogg', 50, vary = TRUE)
- balloon_alert(user, "upgrade installed")
- qdel(rpd_disk)
-
///Changes the piping layer when the mousewheel is scrolled up or down.
/obj/item/pipe_dispenser/proc/mouse_wheeled(mob/source_mob, atom/A, delta_x, delta_y, params)
SIGNAL_HANDLER
@@ -695,7 +590,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
return
if(delta_y < 0)
- pipe_layers = min(PIPE_LAYER(5), pipe_layers << 1)
+ pipe_layers = min(PIPE_LAYER(MAX_PIPE_LAYERS), pipe_layers << 1)
else if(delta_y > 0)
pipe_layers = max(PIPE_LAYER(1), pipe_layers >> 1)
else //mice with side-scrolling wheels are apparently a thing and fuck this up
@@ -730,3 +625,4 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
#undef PIPE_LAYER
#undef RPD_USE_SOUND
+#undef MAX_PIPE_LAYERS
diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm
index ecf43fdfab776..963274f26f268 100644
--- a/code/game/objects/items/religion.dm
+++ b/code/game/objects/items/religion.dm
@@ -70,11 +70,11 @@
need_mob_update += inspired_human.adjustFireLoss(-15, updating_health = FALSE)
if(need_mob_update)
inspired_human.updatehealth()
- inspired_human.AdjustStun(-40)
- inspired_human.AdjustKnockdown(-40)
- inspired_human.AdjustImmobilized(-40)
- inspired_human.AdjustParalyzed(-40)
- inspired_human.AdjustUnconscious(-40)
+ inspired_human.AdjustStun(-4 SECONDS)
+ inspired_human.AdjustKnockdown(-4 SECONDS)
+ inspired_human.AdjustImmobilized(-4 SECONDS)
+ inspired_human.AdjustParalyzed(-4 SECONDS)
+ inspired_human.AdjustUnconscious(-4 SECONDS)
playsound(inspired_human, 'sound/effects/magic/staff_healing.ogg', 25, FALSE)
/obj/item/banner/proc/special_inspiration(mob/living/carbon/human/H) //Any banner-specific inspiration effects go here
diff --git a/code/game/objects/items/robot/items/food.dm b/code/game/objects/items/robot/items/food.dm
index 3dd15b508cc97..6eba8e8fa760b 100644
--- a/code/game/objects/items/robot/items/food.dm
+++ b/code/game/objects/items/robot/items/food.dm
@@ -199,7 +199,7 @@
desc = "Oh noes! A fast-moving gumball!"
icon_state = "gumball"
damage = 0
- speed = 0.5
+ speed = 2
embed_type = null
/obj/projectile/bullet/gumball/Initialize(mapload)
@@ -232,7 +232,7 @@
desc = "Oh noes! A fast-moving lollipop!"
icon_state = "lollipop_1"
damage = 0
- speed = 0.5
+ speed = 2
embed_type = null
var/head_color
diff --git a/code/game/objects/items/robot/items/generic.dm b/code/game/objects/items/robot/items/generic.dm
index 385baa0381ae9..894135c7ef468 100644
--- a/code/game/objects/items/robot/items/generic.dm
+++ b/code/game/objects/items/robot/items/generic.dm
@@ -54,6 +54,7 @@
span_userdanger("[user] prods you with [src]!"),
)
+ SEND_SIGNAL(attacked_mob, COMSIG_LIVING_MINOR_SHOCK) // DOPPLER EDIT ADDITION
playsound(loc, 'sound/items/weapons/egloves.ogg', 50, TRUE, -1)
cooldown_check = world.time + cooldown
log_combat(user, attacked_mob, "stunned", src, "(Combat mode: [user.combat_mode ? "On" : "Off"])")
diff --git a/code/game/objects/items/robot/items/tools.dm b/code/game/objects/items/robot/items/tools.dm
index 708563cb751d5..dfea34fba9bcd 100644
--- a/code/game/objects/items/robot/items/tools.dm
+++ b/code/game/objects/items/robot/items/tools.dm
@@ -31,19 +31,13 @@
var/mob/living/silicon/robot/host = null
/// The field
var/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/dampening_field
- var/projectile_damage_coefficient = 0.5
/// Energy cost per tracked projectile damage amount per second
var/projectile_damage_tick_ecost_coefficient = 10
- /**
- * Speed coefficient
- * Higher the coefficient slower the projectile.
- */
- var/projectile_speed_coefficient = 1.5
/// Energy cost per tracked projectile per second
var/projectile_tick_speed_ecost = 75
- /// Projectile sent out by the dampener
- var/list/obj/projectile/tracked
- var/image/projectile_effect
+ /// Projectiles dampened by our dampener
+ var/list/tracked_bullet_cost = list()
+ /// the radius of our field
var/field_radius = 3
var/active = FALSE
/// activation cooldown
@@ -55,8 +49,6 @@
energy_recharge = 5000
/obj/item/borg/projectile_dampen/Initialize(mapload)
- projectile_effect = image('icons/effects/fields.dmi', "projectile_dampen_effect")
- tracked = list()
START_PROCESSING(SSfastprocess, src)
host = loc
RegisterSignal(host, COMSIG_LIVING_DEATH, PROC_REF(on_death))
@@ -94,7 +86,7 @@
if(istype(dampening_field))
QDEL_NULL(dampening_field)
var/mob/living/silicon/robot/owner = get_host()
- dampening_field = new(owner, field_radius, TRUE, src)
+ dampening_field = new(owner, field_radius, TRUE, src, /datum/dampener_projectile_effects/peacekeeper)
RegisterSignal(dampening_field, COMSIG_DAMPENER_CAPTURE, PROC_REF(dampen_projectile))
RegisterSignal(dampening_field, COMSIG_DAMPENER_RELEASE, PROC_REF(restore_projectile))
owner?.model.allow_riding = FALSE
@@ -103,8 +95,7 @@
/obj/item/borg/projectile_dampen/proc/deactivate_field()
QDEL_NULL(dampening_field)
visible_message(span_warning("\The [src] shuts off!"))
- for(var/projectile in tracked)
- restore_projectile(projectile = projectile)
+ tracked_bullet_cost.Cut()
active = FALSE
var/mob/living/silicon/robot/owner = get_host()
@@ -137,11 +128,9 @@
/obj/item/borg/projectile_dampen/proc/process_usage(seconds_per_tick)
var/usage = 0
- for(var/obj/projectile/inner_projectile as anything in tracked)
- if(!inner_projectile.is_hostile_projectile())
- continue
+ for(var/projectile as anything in tracked_bullet_cost)
usage += projectile_tick_speed_ecost * seconds_per_tick
- usage += tracked[inner_projectile] * projectile_damage_tick_ecost_coefficient * seconds_per_tick
+ usage += tracked_bullet_cost[projectile] * projectile_damage_tick_ecost_coefficient * seconds_per_tick
energy = clamp(energy - usage, 0, maxenergy)
if(energy <= 0)
deactivate_field()
@@ -161,18 +150,12 @@
/obj/item/borg/projectile_dampen/proc/dampen_projectile(datum/source, obj/projectile/projectile)
SIGNAL_HANDLER
- tracked[projectile] = projectile.damage
- projectile.damage *= projectile_damage_coefficient
- projectile.speed *= projectile_speed_coefficient
- projectile.add_overlay(projectile_effect)
+ if(projectile.is_hostile_projectile())
+ tracked_bullet_cost[REF(projectile)] = projectile.damage
/obj/item/borg/projectile_dampen/proc/restore_projectile(datum/source, obj/projectile/projectile)
SIGNAL_HANDLER
-
- tracked -= projectile
- projectile.damage *= (1 / projectile_damage_coefficient)
- projectile.speed *= (1 / projectile_speed_coefficient)
- projectile.cut_overlay(projectile_effect)
+ tracked_bullet_cost -= REF(projectile)
//bare minimum omni-toolset for modularity
/obj/item/borg/cyborg_omnitool
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 3e5cc1eb8d560..bbebd91e7cb0c 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -12,7 +12,7 @@
var/require_model = FALSE
var/list/model_type = null
/// Bitflags listing model compatibility. Used in the exosuit fabricator for creating sub-categories.
- var/list/model_flags = NONE
+ var/model_flags = NONE
/// List of items to add with the module, if any
var/list/items_to_add
@@ -647,24 +647,8 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
model_flags = BORG_MODEL_ENGINEERING
-
items_to_add = list(/obj/item/inducer/cyborg)
-/obj/item/inducer/cyborg
- name = "Internal inducer"
- icon = 'icons/obj/tools.dmi'
- icon_state = "inducer-engi"
- powerdevice = null
-
-/obj/item/inducer/cyborg/get_cell()
- var/obj/item/robot_model/possible_model = loc
- var/mob/living/silicon/robot/silicon_friend = istype(possible_model) ? possible_model.robot : possible_model
- if(istype(silicon_friend))
- . = silicon_friend.cell
-
-/obj/item/inducer/cyborg/screwdriver_act(mob/living/user, obj/item/tool)
- return NONE
-
/obj/item/borg/upgrade/pinpointer
name = "medical cyborg crew pinpointer"
desc = "A crew pinpointer module for the medical cyborg. Permits remote access to the crew monitor."
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index ff08886e7d3ed..0930de71c0e0c 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -82,6 +82,6 @@
desc = "A shooting target that looks like a useless clown."
max_integrity = 2000
-/obj/item/target/clown/bullet_act(obj/projectile/P)
+/obj/item/target/clown/bullet_act(obj/projectile/proj)
. = ..()
playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE)
diff --git a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
index bb6e90187ef38..f8c15a3ba869c 100644
--- a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
+++ b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
@@ -433,7 +433,7 @@
return owner.body_position == LYING_DOWN
/datum/status_effect/golem/bananium/on_remove()
- owner.remove_traits(owner, list(TRAIT_WADDLING, TRAIT_NO_SLIP_WATER), TRAIT_STATUS_EFFECT(id))
+ owner.remove_traits(list(TRAIT_WADDLING, TRAIT_NO_SLIP_WATER), TRAIT_STATUS_EFFECT(id))
QDEL_NULL(slipperiness)
return ..()
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index cb3bb78f65683..6eda30d328dea 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -32,16 +32,35 @@
var/sanitization
/// How much we add to flesh_healing for burn wounds on application
var/flesh_regeneration
- /// Time it takes to assess injuries when looping healing
- var/assessing_injury_delay = 1 SECONDS
/obj/item/stack/medical/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
return NONE
- if(!begin_heal_loop(interacting_with, user))
+ if(!begin_heal_loop(interacting_with, user, auto_change_zone = TRUE))
return NONE // [ITEM_INTERACT_BLOCKING] would be redundant as we are nobludgeon
return ITEM_INTERACT_SUCCESS
+/obj/item/stack/medical/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
+ if(!isliving(interacting_with))
+ return NONE
+ if(!begin_heal_loop(interacting_with, user, auto_change_zone = FALSE))
+ return NONE // see above
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/stack/medical/Initialize(mapload, new_amount, merge, list/mat_override, mat_amt)
+ . = ..()
+ register_item_context()
+
+/obj/item/stack/medical/add_item_context(obj/item/source, list/context, atom/target, mob/living/user)
+ if(!isliving(target))
+ return NONE
+ if(iscarbon(target))
+ context[SCREENTIP_CONTEXT_LMB] = "Auto Heal"
+ context[SCREENTIP_CONTEXT_RMB] = "Manual Heal"
+ else
+ context[SCREENTIP_CONTEXT_LMB] = "Heal"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/item/stack/medical/apply_fantasy_bonuses(bonus)
. = ..()
if(heal_brute)
@@ -65,134 +84,251 @@
/// Used to begin the recursive healing loop.
/// Returns TRUE if we entered the loop, FALSE if we didn't
-/obj/item/stack/medical/proc/begin_heal_loop(mob/living/patient, mob/user)
- if(!can_heal(patient, user))
+/obj/item/stack/medical/proc/begin_heal_loop(mob/living/patient, mob/living/user, auto_change_zone = TRUE)
+ if(DOING_INTERACTION_WITH_TARGET(user, patient))
return FALSE
-
- INVOKE_ASYNC(src, PROC_REF(try_heal), patient, user)
+ var/heal_zone = check_zone(user.zone_selected)
+ if(!try_heal_checks(patient, user, heal_zone))
+ return FALSE
+ SSblackbox.record_feedback("nested tally", "medical_item_used", 1, list(type, auto_change_zone ? "auto" : "manual"))
+ patient.balloon_alert(user, "treating [parse_zone(heal_zone)]...")
+ INVOKE_ASYNC(src, PROC_REF(try_heal), patient, user, heal_zone, FALSE, iscarbon(patient) && auto_change_zone) // auto change is useless for non-carbons
return TRUE
-/// Checks if the passed patient can be healed by the passed user
-/obj/item/stack/medical/proc/can_heal(mob/living/patient, mob/user)
- return patient.try_inject(user, injection_flags = INJECT_TRY_SHOW_ERROR_MESSAGE)
-
-/// In which we print the message that we're starting to heal someone, then we try healing them. Does the do_after whether or not it can actually succeed on a targeted mob
-/obj/item/stack/medical/proc/try_heal(mob/living/patient, mob/user, silent = FALSE, looping = FALSE)
- if(!try_heal_checks(patient, user, heal_brute, heal_burn, looping))
- return
- var/new_self_delay = self_delay
- var/new_other_delay = other_delay
- if(iscarbon(patient))
- new_self_delay = looping ? clamp((self_delay - assessing_injury_delay), 0, self_delay) : self_delay
- new_other_delay = looping ? clamp((other_delay - assessing_injury_delay), 0, other_delay) : other_delay
+/**
+ * What actually handles printing the message that we're starting to heal someone, and trying to heal them
+ *
+ * This proc is recursively called until we run out of charges OR until the patient is fully healed
+ * OR until the target zone is fully healed (if auto_change_zone is FALSE)
+ *
+ * * patient - The mob we're trying to heal
+ * * user - The mob that's trying to heal the patient
+ * * healed_zone - The zone we're trying to heal on the patient
+ * Disregarded if auto_change_zone is TRUE
+ * * silent - If we should not print the message that we're starting to heal the patient
+ * Used so looping the proc doesn't spam messages
+ * * auto_change_zone - Handles the behavior when we finish healing a zone
+ * If auto_change_zone is set to TRUE, it picks the next most damaged zone to heal
+ * If auto_change_zone is set to FALSE, it'll give the user a chance to pick a new zone to heal
+ */
+/obj/item/stack/medical/proc/try_heal(mob/living/patient, mob/living/user, healed_zone, silent = FALSE, auto_change_zone = TRUE)
if(patient == user)
if(!silent)
+ user.balloon_alert(user, "treating [parse_zone(healed_zone)]...")
user.visible_message(
span_notice("[user] starts to apply [src] on [user.p_them()]self..."),
span_notice("You begin applying [src] on yourself..."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
)
if(!do_after(
user,
- new_self_delay,
+ self_delay * (auto_change_zone ? 1 : 0.9),
patient,
- extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user),
+ extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user, healed_zone),
))
return
+ if(!auto_change_zone)
+ healed_zone = check_zone(user.zone_selected)
+ if(!try_heal_checks(patient, user, healed_zone))
+ return
else if(other_delay)
if(!silent)
+ patient.balloon_alert(user, "treating [parse_zone(healed_zone)]...")
user.visible_message(
span_notice("[user] starts to apply [src] on [patient]."),
span_notice("You begin applying [src] on [patient]..."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
)
if(!do_after(
user,
- new_other_delay,
+ other_delay * (auto_change_zone ? 1 : 0.9),
patient,
- extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user),
+ extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user, healed_zone),
))
return
+ if(!auto_change_zone)
+ healed_zone = check_zone(user.zone_selected)
+ if(!try_heal_checks(patient, user, healed_zone))
+ return
- if(!heal(patient, user))
- return
- log_combat(user, patient, "healed", name)
+ else
+ if(!silent)
+ user.visible_message(
+ span_notice("[user] applies [src] on [patient]."),
+ span_notice("You apply [src] on [patient]."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
+ )
+
+ if(iscarbon(patient))
+ if(!heal_carbon(patient, user, healed_zone))
+ return
+ else if(isanimal_or_basicmob(patient))
+ if(!heal_simplemob(patient, user))
+ return
+ else
+ CRASH("Stack medical item healing a non-carbon, non-animal mob [patient] ([patient.type])")
+
+ log_combat(user, patient, "healed", src)
if(!use(1) || !repeating || amount <= 0)
+ var/atom/alert_loc = QDELETED(src) ? user : src
+ alert_loc.balloon_alert(user, repeating ? "all used up!" : "treated [parse_zone(healed_zone)]")
+ return
+
+ // first, just try looping
+ // 1. we can keep healing the current target
+ // 2. the user's changed their target (and thus we should heal that limb instead)
+ var/preferred_target = check_zone(user.zone_selected)
+ if(try_heal_checks(patient, user, preferred_target, silent = TRUE))
+ if(preferred_target != healed_zone)
+ patient.balloon_alert(user, "treating [parse_zone(preferred_target)]...")
+ try_heal(patient, user, preferred_target, TRUE, auto_change_zone)
+ return
+
+ // second, handle what happens otherwise
+ if(!iscarbon(patient))
+ // behavior 0: non-carbons have no limbs so we can assume they are fully healed
+ patient.balloon_alert(user, "fully treated")
+ else if(auto_change_zone)
+ // behavior 1: automatically pick another zone to heal
+ try_heal_auto_change_zone(patient, user, preferred_target, healed_zone)
+ else
+ // behavior 2: assess injury, giving the user time to manually pick another zone
+ try_heal_manual_target(patient, user)
+
+/obj/item/stack/medical/proc/try_heal_auto_change_zone(mob/living/carbon/patient, mob/living/user, preferred_target, last_zone)
+ PRIVATE_PROC(TRUE)
+
+ var/list/other_affected_limbs = list()
+ for(var/obj/item/bodypart/limb as anything in patient.bodyparts)
+ if(!try_heal_checks(patient, user, limb.body_zone, silent = TRUE))
+ continue
+ other_affected_limbs += limb.body_zone
+
+ if(!length(other_affected_limbs))
+ patient.balloon_alert(user, "fully treated")
+ return
+
+ var/next_picked = (preferred_target in other_affected_limbs) ? preferred_target : other_affected_limbs[1]
+ if(next_picked != last_zone)
+ user.balloon_alert(user, "treating [parse_zone(next_picked)]...")
+ try_heal(patient, user, next_picked, silent = TRUE, auto_change_zone = TRUE)
+
+/obj/item/stack/medical/proc/try_heal_manual_target(mob/living/carbon/patient, mob/living/user)
+ PRIVATE_PROC(TRUE)
+
+ patient.balloon_alert(user, "assessing injury...")
+ if(!do_after(user, 1 SECONDS, patient))
return
- if(!can_heal(patient, user))
+ var/new_zone = check_zone(user.zone_selected)
+ if(!try_heal_checks(patient, user, new_zone))
return
- try_heal(patient, user, silent = TRUE, looping = TRUE)
+ patient.balloon_alert(user, "treating [parse_zone(new_zone)]...")
+ try_heal(patient, user, new_zone, silent = TRUE, auto_change_zone = FALSE)
-/// Apply the actual effects of the healing if it's a simple animal, goes to [/obj/item/stack/medical/proc/heal_carbon] if it's a carbon, returns TRUE if it works, FALSE if it doesn't
-/obj/item/stack/medical/proc/heal(mob/living/patient, mob/user)
+/// Checks if the passed patient can be healed by the passed user
+/obj/item/stack/medical/proc/can_heal(mob/living/patient, mob/living/user, healed_zone, silent = FALSE)
+ return patient.try_inject(user, healed_zone, injection_flags = silent ? NONE : INJECT_TRY_SHOW_ERROR_MESSAGE)
+
+/// Checks a bunch of stuff to see if we can heal the patient, including can_heal
+/// Gives a feedback if we can't ultimatly heal the patient (unless silent is TRUE)
+/obj/item/stack/medical/proc/try_heal_checks(mob/living/patient, mob/living/user, healed_zone, silent = FALSE)
+ if(!can_heal(patient, user, healed_zone, silent))
+ // has its own feedback
+ return FALSE
if(patient.stat == DEAD)
- patient.balloon_alert(user, "they're dead!")
+ if(!silent)
+ patient.balloon_alert(user, "[patient.p_theyre()] dead!")
return FALSE
- if(iscarbon(patient))
- return heal_carbon(patient, user, heal_brute, heal_burn)
- else if(isanimal_or_basicmob(patient))
- if(!try_heal_checks(patient, user, heal_brute, heal_burn))
- return FALSE
- if(patient.heal_bodypart_damage((heal_brute * patient.maxHealth/100)))
- user.visible_message(span_infoplain(span_green("[user] applies [src] on [patient].")), span_infoplain(span_green("You apply [src] on [patient].")))
- return TRUE
- patient.balloon_alert(user, "can't heal [patient]!")
- return FALSE
-/obj/item/stack/medical/proc/try_heal_checks(mob/living/patient, mob/user, brute, burn, looping = FALSE)
if(iscarbon(patient))
- if(looping)
- balloon_alert(user, "assessing injuries...")
- if(!do_after(user, assessing_injury_delay, patient))
- return FALSE
var/mob/living/carbon/carbon_patient = patient
- var/obj/item/bodypart/affecting = carbon_patient.get_bodypart(check_zone(user.zone_selected))
+ var/obj/item/bodypart/affecting = carbon_patient.get_bodypart(healed_zone)
if(!affecting) //Missing limb?
- carbon_patient.balloon_alert(user, "no [parse_zone(user.zone_selected)]!")
+ if(!silent)
+ carbon_patient.balloon_alert(user, "no [parse_zone(healed_zone)]!")
return FALSE
if(!IS_ORGANIC_LIMB(affecting)) //Limb must be organic to be healed - RR
- carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not organic!")
+ if(!silent)
+ carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not organic!")
return FALSE
- if(!(affecting.brute_dam && brute) && !(affecting.burn_dam && burn))
- if(!affecting.brute_dam && !affecting.burn_dam)
- if(patient != user || !looping)
+
+ var/datum/wound/burn/flesh/any_burn_wound = locate() in affecting.wounds
+ var/can_heal_burn_wounds = (flesh_regeneration || sanitization) && any_burn_wound?.can_be_ointmented_or_meshed()
+ var/can_suture_bleeding = stop_bleeding && affecting.get_modified_bleed_rate() > 0
+ var/brute_to_heal = heal_brute && affecting.brute_dam > 0
+ var/burn_to_heal = heal_burn && affecting.burn_dam > 0
+
+ if(!brute_to_heal && !burn_to_heal && !can_heal_burn_wounds && !can_suture_bleeding)
+ if(!silent)
+ if(!brute_to_heal && stop_bleeding) // no brute, no bleeding
+ carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not bleeding or bruised!")
+ else if(!burn_to_heal && (flesh_regeneration || sanitization) && any_burn_wound) // no burns, existing burn wounds are treated
+ carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] has been fully treated!")
+ else if(!affecting.brute_dam && !affecting.burn_dam) // not hurt at all
carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not hurt!")
- else
- carbon_patient.balloon_alert(user, "can't heal [affecting.plaintext_zone] with [name]!")
+ else // probably hurt in some way but we are not the right item for this
+ carbon_patient.balloon_alert(user, "can't heal [affecting.plaintext_zone] with [name]!")
return FALSE
return TRUE
+
if(isanimal_or_basicmob(patient))
- if(patient.stat == DEAD)
- patient.balloon_alert(user, "they're dead!")
- return FALSE
if(!heal_brute) // only brute can heal
- patient.balloon_alert(user, "can't heal with [name]!")
+ if(!silent)
+ patient.balloon_alert(user, "can't heal with [name]!")
return FALSE
if(!(patient.mob_biotypes & MOB_ORGANIC))
- patient.balloon_alert(user, "no organic tissue!")
+ if(!silent)
+ patient.balloon_alert(user, "no organic tissue!")
return FALSE
if(patient.health == patient.maxHealth)
- patient.balloon_alert(user, "not hurt!")
+ if(!silent)
+ patient.balloon_alert(user, "not hurt!")
return FALSE
return TRUE
+ return FALSE
-/// The healing effects on a carbon patient. Since we have extra details for dealing with bodyparts, we get our own fancy proc. Still returns TRUE on success and FALSE on fail
-/obj/item/stack/medical/proc/heal_carbon(mob/living/carbon/patient, mob/user, brute, burn)
- var/obj/item/bodypart/affecting = patient.get_bodypart(check_zone(user.zone_selected))
- if(!try_heal_checks(patient, user, brute, burn))
- return FALSE
+/// The healing effects on a carbon patient.
+/// Since we have extra details for dealing with bodyparts, we get our own fancy proc.
+/// Still returns TRUE on success and FALSE on fail
+/obj/item/stack/medical/proc/heal_carbon(mob/living/carbon/patient, mob/living/user, healed_zone)
+ var/obj/item/bodypart/affecting = patient.get_bodypart(healed_zone)
user.visible_message(
- span_infoplain(span_green("[user] applies [src] on [patient]'s [affecting.plaintext_zone].")),
- span_infoplain(span_green("You apply [src] on [patient]'s [affecting.plaintext_zone]."))
+ span_green("[user] applies [src] on [patient]'s [affecting.plaintext_zone]."),
+ span_green("You apply [src] on [patient]'s [affecting.plaintext_zone]."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
)
var/previous_damage = affecting.get_damage()
- if(affecting.heal_damage(brute, burn))
+ if(affecting.heal_damage(heal_brute, heal_burn))
patient.update_damage_overlays()
+ if(stop_bleeding)
+ for(var/datum/wound/wound as anything in affecting.wounds)
+ if(wound.blood_flow)
+ wound.adjust_blood_flow(-1 * stop_bleeding * (user == patient ? 0.7 : 1))
+ break // one at a time
+ affecting.adjustBleedStacks(-1 * stop_bleeding, 0)
+ if(flesh_regeneration || sanitization)
+ for(var/datum/wound/burn/flesh/wound as anything in affecting.wounds)
+ if(wound.can_be_ointmented_or_meshed())
+ wound.flesh_healing += flesh_regeneration
+ wound.sanitization += sanitization
+ break // one at a time
post_heal_effects(max(previous_damage - affecting.get_damage(), 0), patient, user)
return TRUE
-///Override this proc for special post heal effects.
-/obj/item/stack/medical/proc/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user)
+/// Healing a simple mob, just an adjustbruteloss call
+/obj/item/stack/medical/proc/heal_simplemob(mob/living/patient, mob/living/user)
+ patient.adjustBruteLoss(-1 * (heal_brute * patient.maxHealth / 100))
+ user.visible_message(
+ span_green("[user] applies [src] on [patient]."),
+ span_green("You apply [src] on [patient]."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
+ )
+ return TRUE
+
+///Override this proc for special post heal effects. Only called for carbon patients.
+/obj/item/stack/medical/proc/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/living/user)
return
/obj/item/stack/medical/bruise_pack
@@ -239,47 +375,79 @@
SEND_SIGNAL(gauzed_bodypart, COMSIG_BODYPART_UNGAUZED, src)
gauzed_bodypart = null
-// gauze is only relevant for wounds, which are handled in the wounds themselves
-/obj/item/stack/medical/gauze/try_heal(mob/living/patient, mob/user, silent, looping)
-
- var/treatment_delay = (user == patient ? self_delay : other_delay)
+/obj/item/stack/medical/gauze/add_item_context(obj/item/source, list/context, atom/target, mob/living/user)
+ if(iscarbon(target))
+ context[SCREENTIP_CONTEXT_LMB] = "Apply Gauze"
+ return CONTEXTUAL_SCREENTIP_SET
+ return NONE
- var/obj/item/bodypart/limb = patient.get_bodypart(check_zone(user.zone_selected))
- if(!limb)
- patient.balloon_alert(user, "missing limb!")
- return
+/obj/item/stack/medical/gauze/try_heal_checks(mob/living/patient, mob/living/user, healed_zone, silent = FALSE)
+ var/obj/item/bodypart/limb = patient.get_bodypart(healed_zone)
+ if(isnull(limb))
+ if(!silent)
+ patient.balloon_alert(user, "no [parse_zone(healed_zone)]!")
+ return FALSE
if(!LAZYLEN(limb.wounds))
- patient.balloon_alert(user, "no wounds!") // good problem to have imo
- return
-
- var/gauzeable_wound = FALSE
- var/datum/wound/woundies
- for(var/i in limb.wounds)
- woundies = i
+ if(!silent)
+ patient.balloon_alert(user, "no wounds!") // good problem to have imo
+ return FALSE
+ if(limb.current_gauze && (limb.current_gauze.absorption_capacity * 1.2 > absorption_capacity)) // ignore if our new wrap is < 20% better than the current one, so someone doesn't bandage it 5 times in a row
+ if(!silent)
+ patient.balloon_alert(user, pick("already bandaged!", "bandage is clean!")) // good enough
+ return FALSE
+ for(var/datum/wound/woundies as anything in limb.wounds)
if(woundies.wound_flags & ACCEPTS_GAUZE)
- gauzeable_wound = TRUE
- break
- if(!gauzeable_wound)
- patient.balloon_alert(user, "can't heal those!")
- return
+ return TRUE
+ if(!silent)
+ patient.balloon_alert(user, "can't gauze!")
+ return FALSE
- if(limb.current_gauze && (limb.current_gauze.absorption_capacity * 1.2 > absorption_capacity)) // ignore if our new wrap is < 20% better than the current one, so someone doesn't bandage it 5 times in a row
- patient.balloon_alert(user, pick("already bandaged!", "bandage is clean!")) // good enough
- return
+// gauze is only relevant for wounds, which are handled in the wounds themselves
+/obj/item/stack/medical/gauze/try_heal(mob/living/patient, mob/living/user, silent, healed_zone, auto_change_zone)
+ var/obj/item/bodypart/limb = patient.get_bodypart(healed_zone)
+ var/treatment_delay = (user == patient ? self_delay : other_delay)
+ var/any_scanned = FALSE
+ for(var/datum/wound/woundies as anything in limb.wounds)
+ if(HAS_TRAIT(woundies, TRAIT_WOUND_SCANNED))
+ any_scanned = TRUE
+ break
- if(HAS_TRAIT(woundies, TRAIT_WOUND_SCANNED))
+ if(any_scanned)
treatment_delay *= 0.5
if(user == patient)
- to_chat(user, span_notice("You keep in mind the indications from the holo-image about your injury, and expertly begin wrapping your wounds with [src]."))
+ if(!silent)
+ user.visible_message(
+ span_warning("[user] begins expertly wrapping the wounds on [p_their()]'s [limb.plaintext_zone] with [src]..."),
+ span_warning("You begin quickly wrapping the wounds on your [limb.plaintext_zone] with [src], keeping the holo-image indications in mind..."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
+ )
else
- user.visible_message(span_warning("[user] begins expertly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), span_warning("You begin quickly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src], keeping the holo-image indications in mind..."))
+ if(!silent)
+ user.visible_message(
+ span_warning("[user] begins expertly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."),
+ span_warning("You begin quickly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src], keeping the holo-image indications in mind..."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
+ )
else
- user.visible_message(span_warning("[user] begins wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), span_warning("You begin wrapping the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone] with [src]..."))
+ if(!silent)
+ user.visible_message(
+ span_warning("[user] begins wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."),
+ span_warning("You begin wrapping the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone] with [src]..."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
+ )
+
+ patient.balloon_alert(user, "wrapping [parse_zone(healed_zone)]...")
if(!do_after(user, treatment_delay, target = patient))
return
- user.visible_message(span_infoplain(span_green("[user] applies [src] to [patient]'s [limb.plaintext_zone].")), span_infoplain(span_green("You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone].")))
+ if(!silent)
+ patient.balloon_alert(user, "wrapped [parse_zone(healed_zone)]")
+ user.visible_message(
+ span_green("[user] applies [src] to [patient]'s [limb.plaintext_zone]."),
+ span_green("You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone]."),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
+ )
limb.apply_gauze(src)
/obj/item/stack/medical/gauze/twelve
@@ -413,10 +581,11 @@
return ..()
icon_state = "regen_mesh_closed"
-/obj/item/stack/medical/mesh/try_heal(mob/living/patient, mob/user, silent = FALSE, looping)
+/obj/item/stack/medical/mesh/try_heal_checks(mob/living/patient, mob/living/user, silent = FALSE)
if(!is_open)
- balloon_alert(user, "open it first!")
- return
+ if(!silent)
+ balloon_alert(user, "open it first!")
+ return FALSE
return ..()
/obj/item/stack/medical/mesh/click_alt(mob/living/user)
@@ -475,6 +644,10 @@
grind_results = list(/datum/reagent/consumable/aloejuice = 1)
merge_type = /obj/item/stack/medical/aloe
+/obj/item/stack/medical/aloe/Initialize(mapload, new_amount, merge, list/mat_override, mat_amt)
+ . = ..()
+ AddComponent(/datum/component/bakeable, /obj/item/food/badrecipe, rand(10 SECONDS, 15 SECONDS), FALSE)
+
/obj/item/stack/medical/aloe/fresh
amount = 2
@@ -512,16 +685,14 @@
return BRUTELOSS
patient.emote("scream")
- for(var/i in patient.bodyparts)
- var/obj/item/bodypart/bone = i // fine to just, use these raw, its a meme anyway
+ for(var/obj/item/bodypart/bone as anything in patient.bodyparts)
+ // fine to just, use these raw, its a meme anyway
var/datum/wound/blunt/bone/severe/oof_ouch = new
oof_ouch.apply_wound(bone, wound_source = "bone gel")
var/datum/wound/blunt/bone/critical/oof_OUCH = new
oof_OUCH.apply_wound(bone, wound_source = "bone gel")
-
- for(var/i in patient.bodyparts)
- var/obj/item/bodypart/bone = i
- bone.receive_damage(brute=60)
+ for(var/zone in GLOB.all_body_zones)
+ patient.apply_damage(60, BRUTE, zone)
use(1)
return BRUTELOSS
@@ -531,7 +702,11 @@
/obj/item/stack/medical/poultice
name = "mourning poultices"
singular_name = "mourning poultice"
- desc = "A type of primitive herbal poultice.\nWhile traditionally used to prepare corpses for the mourning feast, it can also treat scrapes and burns on the living, however, it is liable to cause shortness of breath when employed in this manner.\nIt is imbued with ancient wisdom."
+ desc = "A type of primitive herbal poultice.\n\
+ While traditionally used to prepare corpses for the mourning feast, \
+ it can also treat scrapes and burns on the living, however, \
+ it is liable to cause shortness of breath when employed in this manner.\n\
+ It is imbued with ancient wisdom."
icon_state = "poultice"
amount = 15
max_amount = 15
@@ -545,14 +720,9 @@
hitsound = 'sound/misc/moist_impact.ogg'
merge_type = /obj/item/stack/medical/poultice
-/obj/item/stack/medical/poultice/heal(mob/living/patient, mob/user)
- if(iscarbon(patient))
- playsound(src, 'sound/misc/soggy.ogg', 30, TRUE)
- return heal_carbon(patient, user, heal_brute, heal_burn)
- return ..()
-
-/obj/item/stack/medical/poultice/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user)
+/obj/item/stack/medical/poultice/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/living/user)
. = ..()
+ playsound(src, 'sound/misc/soggy.ogg', 30, TRUE)
healed_mob.adjustOxyLoss(amount_healed)
/obj/item/stack/medical/bandage
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index 0d4393efea6a4..ef3ddb77c0e44 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -41,6 +41,8 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
merge_type = /obj/item/stack/sheet/mineral/sandstone
walltype = /turf/closed/wall/mineral/sandstone
material_type = /datum/material/sandstone
+ drop_sound = SFX_STONE_DROP
+ pickup_sound = SFX_STONE_PICKUP
/obj/item/stack/sheet/mineral/sandstone/get_main_recipes()
. = ..()
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index fd1529eb3301c..999fbd5608d2b 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -591,7 +591,7 @@
return FALSE
if(is_cyborg) // No merging cyborg stacks into other stacks
return FALSE
- if(ismob(loc) && !inhand) // no merging with items that are on the mob
+ if(ismob(loc) && !inhand && !HAS_TRAIT(loc, TRAIT_MOB_MERGE_STACKS)) // no merging with items that are on the mob
return FALSE
if(istype(loc, /obj/machinery)) // no merging items in machines that aren't both in componentparts
var/obj/machinery/machine = loc
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index d3d3e51490363..20ee0e69df6d7 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -336,6 +336,9 @@
/obj/item/stack/tile/carpet/fifty
amount = 50
+/obj/item/stack/tile/iron/fifty
+ amount = 50
+
/obj/item/stack/tile/carpet/black/fifty
amount = 50
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 3964ccf6f80ba..f7784b9d3b8a8 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -46,35 +46,9 @@
. = ..()
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
atom_storage.max_total_storage = 21
- atom_storage.set_holdable(list(
- /obj/item/airlock_painter,
- /obj/item/analyzer,
- /obj/item/assembly/signaler,
+ atom_storage.set_holdable(GLOB.tool_items + list(
/obj/item/clothing/gloves,
- /obj/item/construction/rcd,
- /obj/item/construction/rld,
- /obj/item/construction/rtd,
- /obj/item/crowbar,
- /obj/item/extinguisher/mini,
- /obj/item/flashlight,
- /obj/item/forcefield_projector,
- /obj/item/geiger_counter,
- /obj/item/holosign_creator/atmos,
- /obj/item/holosign_creator/engineering,
- /obj/item/inducer,
- /obj/item/lightreplacer,
- /obj/item/multitool,
- /obj/item/pipe_dispenser,
- /obj/item/pipe_painter,
- /obj/item/plunger,
/obj/item/radio,
- /obj/item/screwdriver,
- /obj/item/stack/cable_coil,
- /obj/item/t_scanner,
- /obj/item/weldingtool,
- /obj/item/wirecutters,
- /obj/item/wrench,
- /obj/item/spess_knife,
/obj/item/melee/sickly_blade/lock,
/obj/item/reagent_containers/cup/soda_cans,
))
@@ -749,7 +723,7 @@
atom_storage.set_holdable(list(
/obj/item/ammo_casing/strilka310,
/obj/item/ammo_casing/shotgun,
- /obj/item/ammo_casing/a357,
+ /obj/item/ammo_casing/c357,
/obj/item/ammo_casing/junk,
))
diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm
index a8ced4fdad48e..6ff9643702cb3 100644
--- a/code/game/objects/items/storage/boxes/job_boxes.dm
+++ b/code/game/objects/items/storage/boxes/job_boxes.dm
@@ -17,7 +17,7 @@
/obj/item/storage/box/survival/Initialize(mapload)
. = ..()
- if(crafted || !HAS_TRAIT(SSstation, STATION_TRAIT_PREMIUM_INTERNALS))
+ if(crafted) //DOPPLER EDIT CHANGE - ORIGINAL: if(crafted || !HAS_TRAIT(SSstation, STATION_TRAIT_PREMIUM_INTERNALS))
return
atom_storage.max_slots += 2
atom_storage.max_total_storage += 4
@@ -46,6 +46,11 @@
if(length(SSmapping.levels_by_trait(ZTRAIT_STATION)) > 1)
new /obj/item/climbing_hook/emergency(src)
+ //DOPPLER EDIT ADDITION
+ new /obj/item/oxygen_candle(src)
+ new /obj/item/grenade/chem_grenade/budget_smart_metal(src)
+ //DOPPLER EDIT END
+
/obj/item/storage/box/survival/radio/PopulateContents()
..() // we want the survival stuff too.
new /obj/item/radio/off(src)
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 5f08747e60c92..0374b7a3744e7 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -23,6 +23,15 @@
var/latches = "single_latch"
var/has_latches = TRUE
wound_bonus = 5
+ /// How many interactions are we currently performing
+ var/current_interactions = 0
+ /// Items we should not interact with when left clicking
+ var/static/list/lmb_exception_typecache = typecacheof(list(
+ /obj/structure/table,
+ /obj/structure/rack,
+ /obj/structure/closet,
+ /obj/machinery/disposal,
+ ))
/obj/item/storage/toolbox/Initialize(mapload)
. = ..()
@@ -32,11 +41,79 @@
latches = "double_latch"
if(prob(1))
latches = "triple_latch"
+ if(prob(0.1))
+ latches = "quad_latch" // like winning the lottery, but worse
update_appearance()
atom_storage.open_sound = 'sound/items/handling/toolbox/toolbox_open.ogg'
atom_storage.rustle_sound = 'sound/items/handling/toolbox/toolbox_rustle.ogg'
AddElement(/datum/element/falling_hazard, damage = force, wound_bonus = wound_bonus, hardhat_safety = TRUE, crushes = FALSE, impact_sound = hitsound)
+/obj/item/storage/toolbox/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
+ if (user.combat_mode || !user.has_hand_for_held_index(user.get_inactive_hand_index()))
+ return NONE
+
+ if (is_type_in_typecache(interacting_with, lmb_exception_typecache) && !LAZYACCESS(modifiers, RIGHT_CLICK))
+ return NONE
+
+ if (current_interactions)
+ var/obj/item/other_tool = user.get_inactive_held_item()
+ if (!istype(other_tool)) // what even
+ return NONE
+ INVOKE_ASYNC(src, PROC_REF(use_tool_on), interacting_with, user, modifiers, other_tool)
+ return ITEM_INTERACT_SUCCESS
+
+ if (user.get_inactive_held_item())
+ user.balloon_alert(user, "hands busy!")
+ return ITEM_INTERACT_BLOCKING
+
+ var/list/item_radial = list()
+ for (var/obj/item/tool in atom_storage.real_location)
+ if(is_type_in_list(tool, GLOB.tool_items))
+ item_radial[tool] = tool.appearance
+
+ if (!length(item_radial))
+ return NONE
+
+ playsound(user, 'sound/items/handling/toolbox/toolbox_open.ogg', 50)
+ var/obj/item/picked_item = show_radial_menu(user, interacting_with, item_radial, require_near = TRUE)
+ if (!picked_item)
+ return ITEM_INTERACT_BLOCKING
+
+ playsound(user, 'sound/items/handling/toolbox/toolbox_rustle.ogg', 50)
+ if (!user.put_in_inactive_hand(picked_item))
+ return ITEM_INTERACT_BLOCKING
+
+ atom_storage.animate_parent()
+ if (istype(picked_item, /obj/item/weldingtool))
+ var/obj/item/weldingtool/welder = picked_item
+ if (!welder.welding)
+ welder.attack_self(user)
+
+ if (istype(picked_item, /obj/item/spess_knife))
+ picked_item.attack_self(user)
+
+ INVOKE_ASYNC(src, PROC_REF(use_tool_on), interacting_with, user, modifiers, picked_item)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/storage/toolbox/proc/use_tool_on(atom/interacting_with, mob/living/user, list/modifiers, obj/item/picked_tool)
+ current_interactions += 1
+ picked_tool.melee_attack_chain(user, interacting_with, list2params(modifiers))
+ current_interactions -= 1
+
+ if (QDELETED(picked_tool) || picked_tool.loc != user || !user.CanReach(picked_tool))
+ current_interactions = 0
+ return
+
+ if (current_interactions)
+ return
+
+ if (istype(picked_tool, /obj/item/weldingtool))
+ var/obj/item/weldingtool/welder = picked_tool
+ if (welder.welding)
+ welder.attack_self(user)
+
+ atom_storage.attempt_insert(picked_tool, user)
+
/obj/item/storage/toolbox/update_overlays()
. = ..()
if(has_latches)
@@ -107,6 +184,12 @@
/obj/item/storage/toolbox/mechanical/old/heirloom/PopulateContents()
return
+// version of below that isn't a traitor item
+/obj/item/storage/toolbox/mechanical/old/cleaner
+ name = "old blue toolbox"
+ icon_state = "oldtoolboxclean"
+ icon_state = "toolbox_blue_old"
+
/obj/item/storage/toolbox/mechanical/old/clean // the assistant traitor toolbox, damage scales with TC inside
name = "toolbox"
desc = "An old, blue toolbox, it looks robust."
@@ -225,6 +308,51 @@
new /obj/item/stack/pipe_cleaner_coil/white(src)
new /obj/item/stack/pipe_cleaner_coil/brown(src)
+/obj/item/storage/toolbox/medical
+ name = "medical toolbox"
+ desc = "A toolbox painted soft white and light blue. This is getting ridiculous."
+ icon_state = "medical"
+ inhand_icon_state = "toolbox_medical"
+ attack_verb_continuous = list("treats", "surgeries", "tends", "tends wounds on")
+ attack_verb_simple = list("treat", "surgery", "tend", "tend wounds on")
+ w_class = WEIGHT_CLASS_BULKY
+ material_flags = NONE
+ force = 5 // its for healing
+ wound_bonus = 25 // wounds are medical right?
+ /// Tray we steal the og contents from.
+ var/obj/item/surgery_tray/tray_type = /obj/item/surgery_tray
+
+/obj/item/storage/toolbox/medical/Initialize(mapload)
+ . = ..()
+ // what do any of these numbers fucking mean
+ atom_storage.max_total_storage = 20
+ atom_storage.max_slots = 11
+
+/obj/item/storage/toolbox/medical/PopulateContents()
+ var/atom/fake_tray = new tray_type(get_turf(src)) // not in src lest it fill storage that we need for its tools later
+ for(var/atom/movable/thingy in fake_tray)
+ thingy.forceMove(src)
+ qdel(fake_tray)
+
+/obj/item/storage/toolbox/medical/full
+ tray_type = /obj/item/surgery_tray/full
+
+/obj/item/storage/toolbox/medical/coroner
+ name = "coroner toolbox"
+ desc = "A toolbox painted soft white and dark grey. This is getting beyond ridiculous."
+ icon_state = "coroner"
+ inhand_icon_state = "toolbox_coroner"
+ attack_verb_continuous = list("dissects", "autopsies", "corones")
+ attack_verb_simple = list("dissect", "autopsy", "corone")
+ w_class = WEIGHT_CLASS_BULKY
+ material_flags = NONE
+ force = 17 // it's not for healing
+ tray_type = /obj/item/surgery_tray/full/morgue
+
+/obj/item/storage/toolbox/medical/coroner/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/bane, mob_biotypes = MOB_UNDEAD, damage_multiplier = 1) //Just in case one of the tennants get uppity
+
/obj/item/storage/toolbox/ammobox
name = "ammo canister"
desc = "A metal canister designed to hold ammunition"
@@ -273,9 +401,9 @@
new /obj/item/gun_maintenance_supplies(src)
new /obj/item/gun_maintenance_supplies(src)
-//floorbot assembly
+//repairbot assembly
/obj/item/storage/toolbox/tool_act(mob/living/user, obj/item/tool, list/modifiers)
- if(!istype(tool, /obj/item/stack/tile/iron))
+ if(!istype(tool, /obj/item/assembly/prox_sensor))
return ..()
var/static/list/allowed_toolbox = list(
/obj/item/storage/toolbox/artistic,
@@ -290,26 +418,22 @@
if(contents.len >= 1)
balloon_alert(user, "not empty!")
return ITEM_INTERACT_BLOCKING
- if(tool.use(10))
- var/obj/item/bot_assembly/floorbot/B = new
- B.toolbox = type
- switch(B.toolbox)
- if(/obj/item/storage/toolbox)
- B.toolbox_color = "r"
- if(/obj/item/storage/toolbox/emergency)
- B.toolbox_color = "r"
- if(/obj/item/storage/toolbox/electrical)
- B.toolbox_color = "y"
- if(/obj/item/storage/toolbox/artistic)
- B.toolbox_color = "g"
- if(/obj/item/storage/toolbox/syndicate)
- B.toolbox_color = "s"
- user.put_in_hands(B)
- B.update_appearance()
- B.balloon_alert(user, "tiles added")
- qdel(src)
- return ITEM_INTERACT_BLOCKING
- balloon_alert(user, "needs 10 tiles!")
+ var/static/list/toolbox_colors = list(
+ /obj/item/storage/toolbox = "#445eb3",
+ /obj/item/storage/toolbox/emergency = "#445eb3",
+ /obj/item/storage/toolbox/electrical = "#b77931",
+ /obj/item/storage/toolbox/artistic = "#378752",
+ /obj/item/storage/toolbox/syndicate = "#3d3d3d",
+ )
+ var/obj/item/bot_assembly/repairbot/repair = new
+ repair.toolbox = type
+ var/new_color = toolbox_colors[type] || "#445eb3"
+ repair.set_color(new_color)
+ user.put_in_hands(repair)
+ repair.update_appearance()
+ repair.balloon_alert(user, "sensor added!")
+ qdel(tool)
+ qdel(src)
return ITEM_INTERACT_SUCCESS
/obj/item/storage/toolbox/haunted
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index 9e5ae3ba74b1c..d945a3fd711db 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -461,7 +461,7 @@
/obj/item/storage/box/syndie_kit/chemical/Initialize(mapload)
. = ..()
- atom_storage.max_slots = 14
+ atom_storage.max_slots = 15
/obj/item/storage/box/syndie_kit/chemical/PopulateContents()
new /obj/item/reagent_containers/cup/bottle/polonium(src)
@@ -469,6 +469,7 @@
new /obj/item/reagent_containers/cup/bottle/fentanyl(src)
new /obj/item/reagent_containers/cup/bottle/formaldehyde(src)
new /obj/item/reagent_containers/cup/bottle/spewium(src)
+ new /obj/item/reagent_containers/cup/bottle/syndol(src)
new /obj/item/reagent_containers/cup/bottle/cyanide(src)
new /obj/item/reagent_containers/cup/bottle/histamine(src)
new /obj/item/reagent_containers/cup/bottle/initropidril(src)
@@ -570,6 +571,11 @@
new /obj/item/book/granter/action/spell/mime/mimery_blockade(src)
new /obj/item/book/granter/action/spell/mime/mimery_guns(src)
+/obj/item/storage/box/syndie_kit/moltobeso/PopulateContents()
+ new /obj/item/reagent_containers/cup/bottle/moltobeso(src)
+ new /obj/item/reagent_containers/syringe(src)
+ new /obj/item/reagent_containers/dropper(src)
+
/obj/item/storage/box/syndie_kit/combat_baking/PopulateContents()
new /obj/item/food/baguette/combat(src)
for(var/i in 1 to 2)
diff --git a/code/game/objects/items/surgery_tray.dm b/code/game/objects/items/surgery_tray.dm
index 4e84bd3ac3559..9485be4c3585e 100644
--- a/code/game/objects/items/surgery_tray.dm
+++ b/code/game/objects/items/surgery_tray.dm
@@ -1,3 +1,4 @@
+
/**
* Surgery Trays
* A storage object that displays tools in its contents based on tier, better tools are more visible.
@@ -16,11 +17,17 @@
/// If true we're currently portable
var/is_portable = TRUE
+ /// List of contents to populate with in populatecontents()
+ var/list/starting_items = list()
+
/// Fills the tray with items it should contain on creation
/obj/item/surgery_tray/proc/populate_contents()
+ for(var/obj in starting_items)
+ new obj(src)
+ update_appearance(UPDATE_ICON)
return
-/obj/item/surgery_tray/Initialize(mapload)
+/obj/item/surgery_tray/Initialize(mapload, effect_spawner = FALSE)
. = ..()
AddElement(/datum/element/drag_pickup)
create_storage(storage_type = /datum/storage/surgery_tray)
@@ -159,57 +166,100 @@
is_portable = FALSE
/obj/item/surgery_tray/full
+ starting_items = list(
+ /obj/item/blood_filter,
+ /obj/item/bonesetter,
+ /obj/item/cautery,
+ /obj/item/circular_saw,
+ /obj/item/clothing/mask/surgical,
+ /obj/item/hemostat,
+ /obj/item/razor/surgery,
+ /obj/item/retractor,
+ /obj/item/scalpel,
+ /obj/item/stack/medical/bone_gel,
+ /obj/item/stack/sticky_tape/surgical,
+ /obj/item/surgical_drapes,
+ /obj/item/surgicaldrill,
+ )
/obj/item/surgery_tray/full/deployed
is_portable = FALSE
-/obj/item/surgery_tray/full/populate_contents()
- new /obj/item/blood_filter(src)
- new /obj/item/bonesetter(src)
- new /obj/item/cautery(src)
- new /obj/item/circular_saw(src)
- new /obj/item/clothing/mask/surgical(src)
- new /obj/item/hemostat(src)
- new /obj/item/razor/surgery(src)
- new /obj/item/retractor(src)
- new /obj/item/scalpel(src)
- new /obj/item/stack/medical/bone_gel(src)
- new /obj/item/stack/sticky_tape/surgical(src)
- new /obj/item/surgical_drapes(src)
- new /obj/item/surgicaldrill(src)
- update_appearance(UPDATE_OVERLAYS)
-
/obj/item/surgery_tray/full/morgue
name = "autopsy tray"
desc = "A Deforest brand surgery tray, made for use in morgues. It is a folding model, \
meaning the wheels on the bottom can be extended outwards, making it a cart."
+ starting_items = list(
+ /obj/item/blood_filter,
+ /obj/item/bonesetter,
+ /obj/item/cautery/cruel,
+ /obj/item/circular_saw,
+ /obj/item/clothing/mask/surgical,
+ /obj/item/hemostat/cruel,
+ /obj/item/razor/surgery,
+ /obj/item/retractor/cruel,
+ /obj/item/scalpel/cruel,
+ /obj/item/stack/medical/bone_gel,
+ /obj/item/stack/sticky_tape/surgical,
+ /obj/item/surgical_drapes,
+ /obj/item/surgicaldrill,
+ )
-/obj/item/surgery_tray/full/morgue/populate_contents()
- new /obj/item/blood_filter(src)
- new /obj/item/bonesetter(src)
- new /obj/item/cautery/cruel(src)
- new /obj/item/circular_saw(src)
- new /obj/item/clothing/mask/surgical(src)
- new /obj/item/hemostat/cruel(src)
- new /obj/item/razor/surgery(src)
- new /obj/item/retractor/cruel(src)
- new /obj/item/scalpel/cruel(src)
- new /obj/item/stack/medical/bone_gel(src)
- new /obj/item/stack/sticky_tape/surgical(src)
- new /obj/item/surgical_drapes(src)
- new /obj/item/surgicaldrill(src)
+/obj/item/surgery_tray/full/morgue/deployed
+ is_portable = FALSE
/// Surgery tray with advanced tools for debug
/obj/item/surgery_tray/full/advanced
+ starting_items = list(
+ /obj/item/scalpel/advanced,
+ /obj/item/retractor/advanced,
+ /obj/item/cautery/advanced,
+ /obj/item/surgical_drapes,
+ /obj/item/reagent_containers/medigel/sterilizine,
+ /obj/item/bonesetter,
+ /obj/item/blood_filter,
+ /obj/item/stack/medical/bone_gel,
+ /obj/item/stack/sticky_tape/surgical,
+ /obj/item/clothing/mask/surgical,
+ )
+
+/obj/effect/spawner/surgery_tray
+ name = "surgery tray spawner"
+ icon = 'icons/obj/medical/medicart.dmi'
+ icon_state = "tray"
+ /// Tray to usually spawn in.
+ var/tray_to_spawn = /obj/item/surgery_tray
+ /// Toolbox to sometimes replace the above tray with.
+ var/rare_toolbox_replacement = /obj/item/storage/toolbox/medical
+ /// Chance for replacement
+ var/toolbox_chance = 1
+
+/obj/effect/spawner/surgery_tray/Initialize(mapload)
+ . = ..()
+ if(prob(toolbox_chance))
+ new rare_toolbox_replacement(loc)
+ return
+ new tray_to_spawn(loc, TRUE)
+
+/obj/effect/spawner/surgery_tray/full
+ name = "full surgery tray spawner"
+ icon_state = "tray"
+ tray_to_spawn = /obj/item/surgery_tray/full
+ rare_toolbox_replacement = /obj/item/storage/toolbox/medical/full
+
+/obj/effect/spawner/surgery_tray/full/deployed
+ name = "full deployed tray spawner"
+ icon_state = "medicart"
+ tray_to_spawn = /obj/item/surgery_tray/full
+
+/obj/effect/spawner/surgery_tray/full/morgue
+ name = "full autopsy tray spawner"
+ icon_state = "tray"
+ tray_to_spawn = /obj/item/surgery_tray/full/morgue
+ rare_toolbox_replacement = /obj/item/storage/toolbox/medical/coroner
+ toolbox_chance = 3 // tray is rarer, so toolbox is more common
-/obj/item/surgery_tray/full/advanced/populate_contents()
- new /obj/item/scalpel/advanced(src)
- new /obj/item/retractor/advanced(src)
- new /obj/item/cautery/advanced(src)
- new /obj/item/surgical_drapes(src)
- new /obj/item/reagent_containers/medigel/sterilizine(src)
- new /obj/item/bonesetter(src)
- new /obj/item/blood_filter(src)
- new /obj/item/stack/medical/bone_gel(src)
- new /obj/item/stack/sticky_tape/surgical(src)
- new /obj/item/clothing/mask/surgical(src)
+/obj/effect/spawner/surgery_tray/full/morgue/deployed
+ name = "full deployed autopsy tray spawner"
+ icon_state = "medicart"
+ tray_to_spawn = /obj/item/surgery_tray/full/morgue/deployed
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index 6976c936b665f..674e50caade0a 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -53,6 +53,7 @@
COMSIG_JETPACK_DEACTIVATED, \
JETPACK_ACTIVATION_FAILED, \
thrust_callback, \
+ thrust_callback, \
/datum/effect_system/trail_follow/ion, \
)
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index 1c23937d2b589..eba0bc82054d2 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -290,6 +290,9 @@
/obj/item/extinguisher/mini/nozzle/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(AttemptRefill(interacting_with, user))
return NONE
+ return ..()
+
+/obj/item/extinguisher/mini/nozzle/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(nozzle_mode == EXTINGUISHER)
return ..()
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index b98ace86cf006..38ca59038f04a 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -50,7 +50,7 @@
usesound = 'sound/items/weapons/sonic_jackhammer.ogg'
custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT)
icon_state = "crowbar"
- belt_icon_state = "crowbar_alien"
+ inside_belt_icon_state = "crowbar_alien"
toolspeed = 0.1
/obj/item/crowbar/large
@@ -80,7 +80,7 @@
lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
inhand_icon_state = "clawhammer"
- belt_icon_state = "clawhammer"
+ inside_belt_icon_state = "clawhammer"
throwforce = 10
throw_range = 5
throw_speed = 3
@@ -88,7 +88,7 @@
custom_materials = list(/datum/material/wood=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/iron=SMALL_MATERIAL_AMOUNT*0.7)
wound_bonus = 35
-/obj/item/crowbar/large/heavy //from space ruin
+/obj/item/crowbar/large/twenty_force //from space ruin
name = "heavy crowbar"
desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big. It feels oddly heavy.."
force = 20
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index 8cf9005d19137..cb6411e7e8c09 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -5,7 +5,7 @@
icon_state = "screwdriver_map"
inhand_icon_state = "screwdriver"
worn_icon_state = "screwdriver"
- belt_icon_state = "screwdriver"
+ inside_belt_icon_state = "screwdriver"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
flags_1 = IS_PLAYER_COLORABLE_1
@@ -81,7 +81,7 @@
name = "hand drill"
desc = "A simple powered hand drill."
icon_state = "drill"
- belt_icon_state = null
+ inside_belt_icon_state = null
inhand_icon_state = "drill"
worn_icon_state = "drill"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
diff --git a/code/game/objects/items/tools/spess_knife.dm b/code/game/objects/items/tools/spess_knife.dm
index 4019aa41c701d..3550f4df5aeda 100644
--- a/code/game/objects/items/tools/spess_knife.dm
+++ b/code/game/objects/items/tools/spess_knife.dm
@@ -6,7 +6,7 @@
icon = 'icons/obj/tools.dmi'
icon_state = "spess_knife"
worn_icon_state = "spess_knife"
- belt_icon_state = "spess_knife"
+ inside_belt_icon_state = "spess_knife"
inhand_icon_state = "spess_knife"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 41bcc25eba652..e48a19743c137 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -234,7 +234,7 @@
// /Switches the welder on
/obj/item/weldingtool/proc/switched_on(mob/user)
if(!status)
- to_chat(user, span_warning("[src] can't be turned on while unsecured!"))
+ balloon_alert(user, "unsecured!")
return
set_welding(!welding)
if(welding)
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index 41b4556ebace5..564403acf0ec3 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -42,7 +42,7 @@
name = "alien wrench"
desc = "A polarized wrench. It causes anything placed between the jaws to turn."
icon = 'icons/obj/antags/abductor.dmi'
- belt_icon_state = "wrench_alien"
+ inside_belt_icon_state = "wrench_alien"
custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT)
usesound = 'sound/effects/empulse.ogg'
toolspeed = 0.1
@@ -96,7 +96,7 @@
desc = "It's like a normal wrench but edgier. Can be found on the battlefield."
icon_state = "wrench_combat"
inhand_icon_state = "wrench_combat"
- belt_icon_state = "wrench_combat"
+ inside_belt_icon_state = "wrench_combat"
attack_verb_continuous = list("devastates", "brutalizes", "commits a war crime against", "obliterates", "humiliates")
attack_verb_simple = list("devastate", "brutalize", "commit a war crime against", "obliterate", "humiliate")
tool_behaviour = null
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index fa3aadbae95cf..a731772b0902c 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -64,7 +64,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/balloon_mallet/examine(mob/user)
. = ..()
if(HAS_TRAIT(user,TRAIT_BALLOON_SUTRA))
- . = "A sacred weapon of the higher castes from the clown planet, used to strike fear into the hearts of their foes. Wield it with care."
+ . += "A sacred weapon of the higher castes from the clown planet, used to strike fear into the hearts of their foes. Wield it with care."
/obj/item/balloon_mallet/attack(mob/living/target, mob/living/user)
playsound(loc, 'sound/mobs/non-humanoids/clown/hehe.ogg', 20)
@@ -297,19 +297,19 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
new_name = "triple-notched claymore"
add_atom_colour(rgb(255, 215, 215), ADMIN_COLOUR_PRIORITY)
if(4)
- to_chat(user, span_notice("You've lost count of how many you've killed."))
+ to_chat(user, span_notice("You've lost count of how many you've killed."))
new_name = "many-notched claymore"
add_atom_colour(rgb(255, 195, 195), ADMIN_COLOUR_PRIORITY)
if(5)
- to_chat(user, span_boldannounce("Five voices now echo in your mind, cheering the slaughter."))
+ to_chat(user, span_bolddanger("Five voices now echo in your mind, cheering the slaughter."))
new_name = "battle-tested claymore"
add_atom_colour(rgb(255, 175, 175), ADMIN_COLOUR_PRIORITY)
if(6)
- to_chat(user, span_boldannounce("Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe."))
+ to_chat(user, span_bolddanger("Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe."))
new_name = "battle-scarred claymore"
add_atom_colour(rgb(255, 155, 155), ADMIN_COLOUR_PRIORITY)
if(7)
- to_chat(user, span_boldannounce("Kill. Butcher. Conquer. "))
+ to_chat(user, span_bolddanger("Kill. Butcher. Conquer. "))
new_name = "vicious claymore"
add_atom_colour(rgb(255, 135, 135), ADMIN_COLOUR_PRIORITY)
if(8)
@@ -432,6 +432,44 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
pain_mult = 0
jostle_pain_mult = 0
+/obj/item/carpenter_hammer
+ name = "carpenter hammer"
+ icon = 'icons/obj/weapons/hammer.dmi'
+ icon_state = "carpenter_hammer"
+ inhand_icon_state = "carpenter_hammer"
+ worn_icon_state = "clawhammer" //plaecholder
+ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
+ desc = "Uncanny looking hammer."
+ force = 20
+ throwforce = 20
+ throw_range = 4
+ w_class = WEIGHT_CLASS_NORMAL
+ wound_bonus = 20
+ demolition_mod = 1.25
+ slot_flags = ITEM_SLOT_BELT
+
+/obj/item/carpenter_hammer/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/item_killsound, \
+ allowed_mobs = list(/mob/living/carbon/human), \
+ killsound = 'sound/items/weapons/hammer_death_scream.ogg', \
+ replace_default_death_sound = TRUE, \
+ )
+
+/obj/item/carpenter_hammer/examine(mob/user)
+ . = ..()
+ . += ""
+ . += "Real World Tip:"
+ . += pick(
+ "Every building, from hospitals to homes, has a room that serves as the heart of the building \
+ and carries blood and nutrients to its extremities. Try to find the heart of your home!",
+ "All the food you've tried is rotten. You've never eaten fresh food.",
+ "Viruses do not exist. Illness is simply your body punishing you for what you have done wrong.",
+ "Space stations must have at least 50 mammalian teeth embedded in the north walls for structural safety reasons.",
+ "Queen dragonfly sleeps and smiles.",
+ )
+
/obj/item/switchblade
name = "switchblade"
icon = 'icons/obj/weapons/sword.dmi'
diff --git a/code/game/objects/items_reskin.dm b/code/game/objects/items_reskin.dm
index f8bffa7bf5f63..b73df0a487b72 100644
--- a/code/game/objects/items_reskin.dm
+++ b/code/game/objects/items_reskin.dm
@@ -64,6 +64,8 @@
return
current_skin = pick
icon_state = unique_reskin[pick]
+ if (unique_reskin_changes_inhand)
+ inhand_icon_state = icon_state
to_chat(user, "[src] is now skinned as '[pick].'")
SEND_SIGNAL(src, COMSIG_OBJ_RESKIN, user, pick)
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index 77f670bf9fc92..45bc7f9110636 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -1,7 +1,11 @@
-/obj/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
+/obj/hitby(atom/movable/hit_by, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
..()
- take_damage(AM.throwforce, BRUTE, MELEE, 1, get_dir(src, AM))
+ var/damage_taken = hit_by.throwforce
+ if(isitem(hit_by))
+ var/obj/item/as_item = hit_by
+ damage_taken *= as_item.demolition_mod
+ take_damage(damage_taken, BRUTE, MELEE, 1, get_dir(src, hit_by))
/obj/ex_act(severity, target)
if(resistance_flags & INDESTRUCTIBLE)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 7c8173fae3653..91991bec3a774 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -206,10 +206,10 @@ GLOBAL_LIST_EMPTY(objects_by_id_tag)
SHOULD_CALL_PARENT(FALSE)
CRASH("Unimplemented.")
-/obj/handle_ricochet(obj/projectile/P)
+/obj/handle_ricochet(obj/projectile/proj)
. = ..()
if(. && receive_ricochet_damage_coeff)
- take_damage(P.damage * receive_ricochet_damage_coeff, P.damage_type, P.armor_flag, 0, REVERSE_DIR(P.dir), P.armour_penetration) // pass along receive_ricochet_damage_coeff damage to the structure for the ricochet
+ take_damage(proj.damage * receive_ricochet_damage_coeff, proj.damage_type, proj.armor_flag, 0, REVERSE_DIR(proj.dir), proj.armour_penetration) // pass along receive_ricochet_damage_coeff damage to the structure for the ricochet
/// Handles exposing an object to reagents.
/obj/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE)
@@ -218,9 +218,9 @@ GLOBAL_LIST_EMPTY(objects_by_id_tag)
return
SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_OBJ, src, reagents, methods, volume_modifier, show_message)
- for(var/reagent in reagents)
- var/datum/reagent/R = reagent
- . |= R.expose_obj(src, reagents[R])
+ for(var/datum/reagent/reagent as anything in reagents)
+ var/reac_volume = reagents[reagent]
+ . |= reagent.expose_obj(src, reac_volume, methods, show_message)
/// Attempt to freeze this obj if possible. returns TRUE if it succeeded, FALSE otherwise.
/obj/proc/freeze()
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 50d06bafef0fd..38aadbb266229 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -271,11 +271,16 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool, 0)
return
if(!item_chair || has_buckled_mobs())
return
+ if(flags_1 & HOLOGRAM_1)
+ to_chat(user, span_notice("You try to pick up \the [src], but it fades away!"))
+ qdel(src)
+ return
+
user.visible_message(span_notice("[user] grabs \the [src.name]."), span_notice("You grab \the [src.name]."))
- var/obj/item/C = new item_chair(loc)
- C.set_custom_materials(custom_materials)
- TransferComponents(C)
- user.put_in_hands(C)
+ var/obj/item/chair_item = new item_chair(loc)
+ chair_item.set_custom_materials(custom_materials)
+ TransferComponents(chair_item)
+ user.put_in_hands(chair_item)
qdel(src)
/obj/structure/chair/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE)
@@ -344,6 +349,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
if(isgroundlessturf(T))
to_chat(user, span_warning("You need ground to plant this on!"))
return
+ if(flags_1 & HOLOGRAM_1)
+ to_chat(user, span_notice("You try to place down \the [src], but it fades away!"))
+ qdel(src)
+ return
+
for(var/obj/A in T)
if(istype(A, /obj/structure/chair))
to_chat(user, span_warning("There is already a chair here!"))
@@ -353,10 +363,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
return
user.visible_message(span_notice("[user] rights \the [src.name]."), span_notice("You right \the [name]."))
- var/obj/structure/chair/C = new origin_type(get_turf(loc))
- C.set_custom_materials(custom_materials)
- TransferComponents(C)
- C.setDir(user.dir)
+ var/obj/structure/chair/chair = new origin_type(get_turf(loc))
+ chair.set_custom_materials(custom_materials)
+ TransferComponents(chair)
+ chair.setDir(user.dir)
qdel(src)
/obj/item/chair/proc/smash(mob/living/user)
diff --git a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
index f0fa9e27d7869..fa49fe0a106d5 100644
--- a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
+++ b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
@@ -22,7 +22,7 @@
///Accepted "ammo" type
var/obj/item/ammo_type = /obj/item/ammo_casing/strilka310
///Projectile from said gun. Doesnt automatically inherit said ammo's projectile in case you wanted to make a gun that shoots floor tiles or something.
- var/obj/item/projectile_type = /obj/projectile/bullet/strilka310
+ var/obj/projectile/projectile_type = /obj/projectile/bullet/strilka310
///If the gun has anything in it.
var/loaded_gun = TRUE
///If the gun is currently loaded with its maximum capacity.
diff --git a/code/game/objects/structures/construction_console/construction_actions.dm b/code/game/objects/structures/construction_console/construction_actions.dm
index b3a4e309ffa96..cce7d2ee51628 100644
--- a/code/game/objects/structures/construction_console/construction_actions.dm
+++ b/code/game/objects/structures/construction_console/construction_actions.dm
@@ -5,7 +5,7 @@
/datum/action/innate/construction
button_icon = 'icons/mob/actions/actions_construction.dmi'
///Console's eye mob
- var/mob/eye/ai_eye/remote/base_construction/remote_eye
+ var/mob/eye/camera/remote/base_construction/remote_eye
///Console itself
var/obj/machinery/computer/camera_advanced/base_construction/base_console
///Is this used to build only on the station z level?
diff --git a/code/game/objects/structures/construction_console/construction_console.dm b/code/game/objects/structures/construction_console/construction_console.dm
index 97b83acccae06..69275d0e95133 100644
--- a/code/game/objects/structures/construction_console/construction_console.dm
+++ b/code/game/objects/structures/construction_console/construction_console.dm
@@ -1,7 +1,7 @@
/**
* Camera console used to control a base building drone
*
- * Using this console will put the user in control of a [base building drone][/mob/eye/ai_eye/remote/base_construction].
+ * Using this console will put the user in control of a [base building drone][/mob/eye/camera/remote/base_construction].
* The drone will appear somewhere within the allowed_area var, or if no area is specified, at the location of the console.area
* Upon interacting, the user will be granted a set of base building actions that will generally be carried out at the drone's location.
* To create a new base builder system, this class should be the only thing that needs to be subtyped.
@@ -61,8 +61,7 @@
var/turf/spawn_spot = find_spawn_spot()
if (!spawn_spot)
return FALSE
- eyeobj = new /mob/eye/ai_eye/remote/base_construction(spawn_spot, src)
- eyeobj.origin = src
+ eyeobj = new /mob/eye/camera/remote/base_construction(spawn_spot, src)
return TRUE
/obj/machinery/computer/camera_advanced/base_construction/attackby(obj/item/W, mob/user, params)
@@ -95,7 +94,7 @@
* The mob is constrained to a given area defined by the base construction console.
*
*/
-/mob/eye/ai_eye/remote/base_construction
+/mob/eye/camera/remote/base_construction
name = "construction holo-drone"
//Allows any curious crew to watch the base after it leaves. (This is safe as the base cannot be modified once it leaves)
move_on_shuttle = TRUE
@@ -105,20 +104,20 @@
///Reference to the camera console controlling this drone
var/obj/machinery/computer/camera_advanced/base_construction/linked_console
-/mob/eye/ai_eye/remote/base_construction/Initialize(mapload, obj/machinery/computer/camera_advanced/console_link)
+/mob/eye/camera/remote/base_construction/Initialize(mapload, obj/machinery/computer/camera_advanced/console_link)
linked_console = console_link
if(!linked_console)
stack_trace("A base consturuction drone was created with no linked console")
return INITIALIZE_HINT_QDEL
return ..()
-/mob/eye/ai_eye/remote/base_construction/setLoc(turf/destination, force_update = FALSE)
+/mob/eye/camera/remote/base_construction/setLoc(turf/destination, force_update = FALSE)
var/area/curr_area = get_area(destination)
//Only move if we're in the allowed area. If no allowed area is defined, then we're free to move wherever.
if(!linked_console.allowed_area || istype(curr_area, linked_console.allowed_area))
return ..()
-/mob/eye/ai_eye/remote/base_construction/relaymove(mob/living/user, direction)
+/mob/eye/camera/remote/base_construction/relaymove(mob/living/user, direction)
//This camera eye is visible, and as such needs to keep its dir updated
dir = direction
return ..()
diff --git a/code/game/objects/structures/containers.dm b/code/game/objects/structures/containers.dm
index bf56f7850f82d..965d74ae94d09 100644
--- a/code/game/objects/structures/containers.dm
+++ b/code/game/objects/structures/containers.dm
@@ -2,7 +2,7 @@
name = "shipping container"
desc = "A standard-measure shipping container for bulk transport of goods. This one is blank, offering no clue as to its contents."
icon = 'icons/obj/fluff/containers.dmi'
- icon_state = "container_blank"
+ icon_state = "blank"
max_integrity = 1000
bound_width = 96
bound_height = 32
@@ -16,19 +16,40 @@
AddComponent(/datum/component/seethrough, SEE_THROUGH_MAP_SHIPPING_CONTAINER)
+/obj/structure/shipping_container/amsco
+ name = "\improper AMSCO shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Amundsen-Scott, and so is probably carrying prospecting gear."
+ icon_state = "amsco"
+
+/obj/structure/shipping_container/blue
+ icon_state = "blue"
+
/obj/structure/shipping_container/conarex
name = "\improper Conarex Aeronautics shipping container"
desc = "A standard-measure shipping container for bulk transport of goods. This one is from Conarex Aeronautics, and is probably carrying spacecraft parts (or a bribery scandal) as a result."
icon_state = "conarex"
+/obj/structure/shipping_container/defaced
+ name = "defaced shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one's covered in tasteful graffiti."
+ icon_state = "defaced"
+
/obj/structure/shipping_container/deforest
- name = "\improper DeForest Medical Corp. shipping container"
- desc = "A standard-measure shipping container for bulk transport of goods. This one is from DeForest, and so is probably carrying medical supplies."
+ name = "\improper Nanotrasen-DeForest shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Nanotrasen-DeForest, and so is probably carrying medical supplies."
icon_state = "deforest"
+/obj/structure/shipping_container/great_northern
+ name = "\improper Great Northern shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Great Northern, and is probably carrying farming equipment."
+ icon_state = "great_northern"
+
+/obj/structure/shipping_container/green
+ icon_state = "green"
+
/obj/structure/shipping_container/kahraman
name = "\improper Kahraman Heavy Industry shipping container"
- desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kahraman, and is reinforced for carrying ore."
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kahraman, and is reinforced for carrying mining equipment."
icon_state = "kahraman"
/obj/structure/shipping_container/kahraman/alt
@@ -36,13 +57,11 @@
/obj/structure/shipping_container/kosmologistika
name = "\improper Kosmologistika shipping container"
- desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kosmologistika, the logistics company owned and operated by the SSC."
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kosmologistika, the state logistics company owned and operated by the SSC."
icon_state = "kosmologistika"
-/obj/structure/shipping_container/interdyne
- name = "\improper Interdyne shipping container"
- desc = "A standard-measure shipping container for bulk transport of goods. This one is from Interdyne, a private pharmaceutical company. Probably carrying medical or research supplies, probably."
- icon_state = "interdyne"
+/obj/structure/shipping_container/magenta
+ icon_state = "magenta"
/obj/structure/shipping_container/nakamura
name = "\improper Nakamura Engineering shipping container"
@@ -54,27 +73,86 @@
desc = "A standard-measure shipping container for bulk transport of goods. This one prominently features Nanotrasen's logo, and so presumably could be carrying anything."
icon_state = "nanotrasen"
+/obj/structure/shipping_container/ntfid
+ name = "\improper Nanotrasen Futures and Innovation shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from NTFID: Nanotrasen's research and development subdivision."
+ icon_state = "ntfid"
+
+/obj/structure/shipping_container/ntfid/defaced
+ desc = "A standard-measure shipping container for bulk transport of goods. Someone clearly has a bone to pick with NTFID."
+ icon_state = "ntfid_defaced"
+
/obj/structure/shipping_container/nthi
name = "\improper Nanotrasen Heavy Industries shipping container"
- desc = "A standard-measure shipping container for bulk transport of goods. This one is from NTHI: Nanotrasen's mining and refining subdivision."
+ desc = "A standard-measure shipping container for bulk transport of common metals and minerals. This one is from NTHI: Nanotrasen's mining and refining subdivision."
icon_state = "nthi"
+/obj/structure/shipping_container/nthi/minor
+ desc = "A standard-measure shipping container for bulk transport of rare metals and minerals. This one is from NTHI: Nanotrasen's mining and refining subdivision."
+ icon_state = "nthi_minor"
+
+/obj/structure/shipping_container/nthi/precious
+ desc = "A standard-measure shipping container for bulk transport of precious metals and minerals. This one is from NTHI: Nanotrasen's mining and refining subdivision."
+ icon_state = "nthi_precious"
+
+/obj/structure/shipping_container/orange
+ icon_state = "orange"
+
+/obj/structure/shipping_container/purple
+ icon_state = "purple"
+
+/obj/structure/shipping_container/red
+ icon_state = "red"
+
+/obj/structure/shipping_container/sunda
+ name = "\improper Sunda Galaksi shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Sunda Galaksi, and could be carrying just about anything."
+ icon_state = "sunda"
+
/obj/structure/shipping_container/vitezstvi
name = "\improper Vítězství Arms shipping container"
desc = "A standard-measure shipping container for bulk transport of goods. This one is from Vítězství Arms, proudly proclaiming that Vítězství weapons mean victory."
icon_state = "vitezstvi"
+/obj/structure/shipping_container/vitezstvi/flags
+ icon_state = "vitezstvi_flags"
+
+/obj/structure/shipping_container/yellow
+ icon_state = "yellow"
+
//Syndies
+/obj/structure/shipping_container/biosustain
+ name = "\improper Biosustain shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Biosustain, and so it's probably carrying seeds or farming equipment."
+ icon_state = "biosustain"
+
/obj/structure/shipping_container/cybersun
name = "\improper Cybersun Industries shipping container"
desc = "A standard-measure shipping container for bulk transport of goods. This one prominently features Cybersun's logo, and so presumably could be carrying almost anything."
icon_state = "cybersun"
+/obj/structure/shipping_container/cybersun/defaced
+ desc = "A standard-measure shipping container for bulk transport of goods. This one originally featured Cybersun's logo, before it was painted over by an enterprising artist."
+ icon_state = "cybersun_defaced"
+
/obj/structure/shipping_container/donk_co
name = "\improper Donk Co. shipping container"
- desc = "A standard-measure shipping container for bulk transport of goods. This one is from Donk Co. and so could be carrying just about anything- although it's probably Donk Pockets."
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Donk Co. and so could be carrying just about anything- although it's probably just Donk Pockets."
icon_state = "donk_co"
+/obj/structure/shipping_container/exagon
+ name = "\improper Exagon-Ichikawa shipping container"
+ desc = "A standard-measure shipping container for bulk transport of common metals and minerals. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision."
+ icon_state = "exagon"
+
+/obj/structure/shipping_container/exagon/minor
+ desc = "A standard-measure shipping container for bulk transport of rare metals and minerals. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision."
+ icon_state = "exagon_minor"
+
+/obj/structure/shipping_container/exagon/precious
+ desc = "A standard-measure shipping container for bulk transport of precious metals and minerals. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision."
+ icon_state = "exagon_precious"
+
/obj/structure/shipping_container/gorlex
name = "\improper Gorlex Securities shipping container"
desc = "A standard-measure shipping container for bulk transport of goods. This one is from Gorlex Securities, and is probably carrying their primary export: war crimes."
@@ -82,3 +160,68 @@
/obj/structure/shipping_container/gorlex/red
icon_state = "gorlex_red"
+
+/obj/structure/shipping_container/interdyne
+ name = "\improper Interdyne shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Interdyne, a private pharmaceutical company. Probably carrying medical or research supplies, probably."
+ icon_state = "interdyne"
+
+/obj/structure/shipping_container/oms
+ name = "\improper OMS shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This one is from Cybersun's medical subdivision OMS (Osaka Medical Systems), and is probably carrying medical cybernetics or somesuch."
+ icon_state = "oms"
+
+/obj/structure/shipping_container/tiger_coop
+ name = "suspicious shipping container"
+ desc = "A standard-measure shipping container for bulk transport of goods. This previously blank container has been spray-painted with the insignia of the Tiger Cooperative, meaning whatever's inside is probably dangerous."
+ icon_state = "tiger_coop"
+
+/obj/structure/shipping_container/tiger_coop/text
+ icon_state = "tiger_coop_text"
+
+// REEFER CONTAINERS (REFRIGERATED)
+/obj/structure/shipping_container/reefer
+ name = "reefer shipping container"
+ desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is blank, offering no clue as to its contents."
+ icon_state = "blank_reefer"
+
+/obj/structure/shipping_container/reefer/deforest
+ name = "\improper Nanotrasen-DeForest reefer shipping container"
+ desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is from Nanotrasen-DeForest, and is probably carrying temperature sensitive biological material."
+ icon_state = "deforest_reefer"
+
+/obj/structure/shipping_container/reefer/biosustain
+ name = "\improper Biosustain reefer shipping container"
+ desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is from Biosustain, and so it's probably carrying GMOs or agrichemicals."
+ icon_state = "biosustain_reefer"
+
+/obj/structure/shipping_container/reefer/interdyne
+ name = "\improper Interdyne reefer shipping container"
+ desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is from Interdyne, a private pharmaceutical company, and is probably carrying organs or blood, maybe both."
+ icon_state = "interdyne_reefer"
+
+// GAS TANK
+/obj/structure/shipping_container/gas
+ name = "bulk gas tank"
+ desc = "A standard-measure gas tank for bulk transport of gases. This one is rather irresponsibly blank, offering no clue as to its contents."
+ icon_state = "blank_gas"
+
+/obj/structure/shipping_container/gas/apda
+ name = "\improper APdA S.p.A. bulk helium tank"
+ desc = "A standard-measure gas tank for bulk transport of gases. This one is from Associato Petrochimico dell'Adriatico, containing their second most important export: helium-3 for fuel use."
+ icon_state = "apda_gas_helium"
+
+/obj/structure/shipping_container/gas/apda/hydrogen
+ name = "\improper APdA S.p.A. bulk hydrogen tank"
+ desc = "A standard-measure gas tank for bulk transport of gases. This one is from Associato Petrochimico dell'Adriatico, containing their most important export: hydrogen for fuel use."
+ icon_state = "apda_gas_hydrogen"
+
+/obj/structure/shipping_container/gas/nthi
+ name = "\improper NTHI bulk plasma tank"
+ desc = "A standard-measure gas tank for bulk transport of gases. This one is from NTHI, Nanotrasen's mining and refining subdivision, and contains high-grade gaseous plasma from the Spinward Sector."
+ icon_state = "nthi_gas_plasma"
+
+/obj/structure/shipping_container/gas/exagon
+ name = "\improper Exagon-Ichikawa bulk plasma tank"
+ desc = "A standard-measure gas tank for bulk transport of gases. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision, and contains gaseous plasma most likely sourced from Mars."
+ icon_state = "exagon_gas_plasma"
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 6046d356892b8..207b85122dd21 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -236,7 +236,8 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets)
. += door_overlay
door_overlay.overlays += emissive_blocker(door_overlay.icon, door_overlay.icon_state, src, alpha = door_overlay.alpha) // If we don't do this the door doesn't block emissives and it looks weird.
else if(has_closed_overlay)
- . += "[icon_door || overlay_state]_door"
+ var/mutable_appearance/door_overlay = mutable_appearance(icon, "[icon_door || overlay_state]_door", alpha = src.alpha)
+ . += door_overlay
if(opened)
return
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index f7a0ccd66dfdd..bb25ba5158bd8 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -299,6 +299,21 @@
new /obj/item/bodypart/leg/right/robot/surplus(src)
new /obj/item/bodypart/leg/right/robot/surplus(src)
+/obj/structure/closet/crate/freezer/organ
+ name = "organ freezer"
+ desc = "A freezer containing a set of organic organs."
+
+/obj/structure/closet/crate/freezer/organ/PopulateContents()
+ . = ..()
+ new /obj/item/organ/heart(src)
+ new /obj/item/organ/lungs(src)
+ new /obj/item/organ/eyes(src)
+ new /obj/item/organ/ears(src)
+ new /obj/item/organ/tongue(src)
+ new /obj/item/organ/liver(src)
+ new /obj/item/organ/stomach(src)
+ new /obj/item/organ/appendix(src)
+
/obj/structure/closet/crate/freezer/food
name = "food icebox"
icon_state = "food"
diff --git a/code/game/objects/structures/deployable_turret.dm b/code/game/objects/structures/deployable_turret.dm
index e9162294c8f42..a02481d8ef73d 100644
--- a/code/game/objects/structures/deployable_turret.dm
+++ b/code/game/objects/structures/deployable_turret.dm
@@ -195,7 +195,7 @@
target = target_turf
var/obj/projectile/projectile_to_fire = new projectile_type(targets_from)
playsound(src, firesound, 75, TRUE)
- projectile_to_fire.preparePixelProjectile(target, targets_from)
+ projectile_to_fire.aim_projectile(target, targets_from)
projectile_to_fire.firer = user
projectile_to_fire.fired_from = src
projectile_to_fire.fire()
diff --git a/code/game/objects/structures/fireplace.dm b/code/game/objects/structures/fireplace.dm
index 4e568a56f48b2..f1505cd1b50a0 100644
--- a/code/game/objects/structures/fireplace.dm
+++ b/code/game/objects/structures/fireplace.dm
@@ -30,6 +30,7 @@
/obj/structure/fireplace/Destroy()
STOP_PROCESSING(SSobj, src)
QDEL_NULL(burning_loop)
+ remove_shared_particles(/particles/smoke/burning)
. = ..()
/obj/structure/fireplace/setDir(newdir)
@@ -166,17 +167,17 @@
fuel_added = 0
update_appearance()
adjust_light()
- particles = new /particles/smoke/burning()
+ var/obj/effect/abstract/shared_particle_holder/smoke_particles = add_shared_particles(/particles/smoke/burning)
switch(dir)
if(SOUTH)
- particles.position = list(0, 29, 0)
+ smoke_particles.particles.position = list(0, 29, 0)
if(EAST)
- particles.position = list(-20, 9, 0)
+ smoke_particles.particles.position = list(-20, 9, 0)
if(WEST)
- particles.position = list(20, 9, 0)
+ smoke_particles.particles.position = list(20, 9, 0)
if(NORTH) // there is no icon state for SOUTH
- QDEL_NULL(particles)
+ remove_shared_particles(/particles/smoke/burning)
/obj/structure/fireplace/proc/put_out()
STOP_PROCESSING(SSobj, src)
@@ -185,7 +186,7 @@
update_appearance()
adjust_light()
desc = initial(desc)
- QDEL_NULL(particles)
+ remove_shared_particles(/particles/smoke/burning)
#undef LOG_BURN_TIMER
#undef PAPER_BURN_TIMER
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 4aaba04bc1835..c5a94edfdfdae 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -53,7 +53,8 @@
/obj/structure/grille/examine(mob/user)
. = ..()
-
+ if(resistance_flags & INDESTRUCTIBLE)
+ return
if(anchored)
. += span_notice("It's secured in place with screws . The rods look like they could be cut through.")
else
diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm
index 838113cab8c38..19e35d30a5e6c 100644
--- a/code/game/objects/structures/hivebot.dm
+++ b/code/game/objects/structures/hivebot.dm
@@ -13,7 +13,7 @@
var/datum/effect_system/fluid_spread/smoke/smoke = new
smoke.set_up(2, holder = src, location = loc)
smoke.start()
- visible_message(span_boldannounce("[src] warps in!"))
+ visible_message(span_bolddanger("[src] warps in!"))
playsound(src.loc, 'sound/effects/empulse.ogg', 25, TRUE)
addtimer(CALLBACK(src, PROC_REF(warpbots)), rand(1 SECONDS, 1 MINUTES))
@@ -30,7 +30,7 @@
if("rapid")
new /mob/living/basic/hivebot/rapid(get_turf(src))
sleep(10 SECONDS)
- visible_message(span_boldannounce("[src] warps out!"))
+ visible_message(span_bolddanger("[src] warps out!"))
playsound(src.loc, 'sound/effects/empulse.ogg', 25, TRUE)
qdel(src)
return
diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm
index f9d490a29b2e9..b53f11c711a61 100644
--- a/code/game/objects/structures/icemoon/cave_entrance.dm
+++ b/code/game/objects/structures/icemoon/cave_entrance.dm
@@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(ore_probability, list(
*/
/obj/structure/spawner/ice_moon/proc/destroy_effect()
playsound(loc,'sound/effects/explosion/explosionfar.ogg', 200, TRUE)
- visible_message(span_boldannounce("[src] collapses, sealing everything inside! \nOres fall out of the cave as it is destroyed!"))
+ visible_message(span_bolddanger("[src] collapses, sealing everything inside! \nOres fall out of the cave as it is destroyed!"))
/**
* Drops items after the spawner is destroyed
@@ -123,7 +123,7 @@ GLOBAL_LIST_INIT(ore_probability, list(
/obj/effect/collapsing_demonic_portal/Initialize(mapload)
. = ..()
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE)
- visible_message(span_boldannounce("[src] begins to collapse, cutting it off from this world!"))
+ visible_message(span_bolddanger("[src] begins to collapse, cutting it off from this world!"))
animate(src, transform = matrix().Scale(0, 1), alpha = 50, time = 5 SECONDS)
addtimer(CALLBACK(src, PROC_REF(collapse)), 5 SECONDS)
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index a0cf53487cf34..0a52c3cd9f638 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -34,6 +34,13 @@
. = ..()
. += deconstruction_hints(user)
+/obj/structure/lattice/Destroy(force) // so items on the lattice fall when the lattice is destroyed
+ var/turf/turfloc = loc
+ . = ..()
+ if(isturf(turfloc))
+ for(var/thing_that_falls as anything in turfloc) // as anything because turfloc can only contain movables
+ turfloc.zFall((thing_that_falls))
+
/obj/structure/lattice/proc/deconstruction_hints(mob/user)
return span_notice("The rods look like they could be cut . There's space for more rods or a tile .")
diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm
index b169868a85fb7..0461180721e2b 100644
--- a/code/game/objects/structures/lavaland/necropolis_tendril.dm
+++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm
@@ -88,7 +88,7 @@ GLOBAL_LIST_INIT(tendrils, list())
/obj/effect/collapse/Initialize(mapload)
. = ..()
emitted_light = new(loc)
- visible_message(span_boldannounce("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!"))
+ visible_message(span_bolddanger("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!"))
balloon_alert_to_viewers("interact to grab loot before collapse!", vision_distance = 7)
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE)
addtimer(CALLBACK(src, PROC_REF(collapse)), 5 SECONDS)
@@ -132,7 +132,7 @@ GLOBAL_LIST_INIT(tendrils, list())
for(var/mob/M in range(7,src))
shake_camera(M, 15, 1)
playsound(get_turf(src),'sound/effects/explosion/explosionfar.ogg', 200, TRUE)
- visible_message(span_boldannounce("The tendril falls inward, the ground around it widening into a yawning chasm!"))
+ visible_message(span_bolddanger("The tendril falls inward, the ground around it widening into a yawning chasm!"))
for(var/turf/T in RANGE_TURFS(2,src))
if(HAS_TRAIT(T, TRAIT_NO_TERRAFORM))
continue
diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm
index a6933d534689b..d53935bda2974 100644
--- a/code/game/objects/structures/lavaland/ore_vent.dm
+++ b/code/game/objects/structures/lavaland/ore_vent.dm
@@ -207,10 +207,10 @@
/**
* This confirms that the user wants to start the wave defense event, and that they can start it.
*/
-/obj/structure/ore_vent/proc/pre_wave_defense(mob/user, spawn_drone = TRUE)
+/obj/structure/ore_vent/proc/pre_wave_defense(mob/user, spawn_drone = TRUE, mech_scan = FALSE)
if(tgui_alert(user, excavation_warning, "Begin defending ore vent?", list("Yes", "No")) != "Yes")
return FALSE
- if(!can_interact(user))
+ if(!can_interact(user) && !mech_scan)
return FALSE
if(!COOLDOWN_FINISHED(src, wave_cooldown) || node)
return FALSE
@@ -224,7 +224,7 @@
addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.25)
addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.5)
addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.75)
- particles = new /particles/smoke/ash()
+ add_shared_particles(/particles/smoke/ash)
for(var/i in 1 to 5) // Clears the surroundings of the ore vent before starting wave defense.
for(var/turf/closed/mineral/rock in oview(i))
if(istype(rock, /turf/open/misc/asteroid) && prob(35)) // so it's too common
@@ -272,7 +272,7 @@
SEND_SIGNAL(src, COMSIG_VENT_WAVE_CONCLUDED)
COOLDOWN_RESET(src, wave_cooldown)
- particles = null
+ remove_shared_particles(/particles/smoke/ash)
if(force)
initiate_wave_win()
@@ -337,24 +337,16 @@
* Gives a readout of the ores available in the vent that gets added to the description,
* then asks the user if they want to start wave defense if it's already been discovered.
* @params user The user who tapped the vent.
- * @params scan_only If TRUE, the vent will only scan, and not prompt to start wave defense. Used by the mech mineral scanner.
+ * @params mech_scan If TRUE, will bypass interaction checks to allow mechs to be able to begin the wave defense.
*/
-/obj/structure/ore_vent/proc/scan_and_confirm(mob/living/user, scan_only = FALSE)
+/obj/structure/ore_vent/proc/scan_and_confirm(mob/living/user, mech_scan = FALSE)
if(tapped)
balloon_alert_to_viewers("vent tapped!")
return
if(!COOLDOWN_FINISHED(src, wave_cooldown) || node) //We're already defending the vent, so don't scan it again.
- if(!scan_only)
- balloon_alert_to_viewers("protect the node drone!")
+ balloon_alert_to_viewers("protect the node drone!")
return
if(!discovered)
- if(scan_only)
- discovered = TRUE
- generate_description(user)
- balloon_alert_to_viewers("vent scanned!")
- AddComponent(/datum/component/gps, name)
- return
-
if(DOING_INTERACTION_WITH_TARGET(user, src))
balloon_alert(user, "already scanning!")
return
@@ -374,10 +366,8 @@
user_id_card.registered_account.mining_points += (MINER_POINT_MULTIPLIER)
user_id_card.registered_account.bank_card_talk("You've been awarded [MINER_POINT_MULTIPLIER] mining points for discovery of an ore vent.")
return
- if(scan_only)
- return
- if(!pre_wave_defense(user, spawn_drone_on_tap))
+ if(!pre_wave_defense(user, spawn_drone_on_tap, mech_scan))
return
start_wave_defense()
diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm
index d3eb552c46b8b..bf96397507afa 100644
--- a/code/game/objects/structures/maintenance.dm
+++ b/code/game/objects/structures/maintenance.dm
@@ -80,12 +80,11 @@ at the cost of risking a vicious bite.**/
return
if(critter_infested && prob(50) && iscarbon(user))
var/mob/living/carbon/bite_victim = user
- var/obj/item/bodypart/affecting = bite_victim.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm")
- to_chat(user, span_danger("You feel a sharp pain as an unseen creature sinks its [pick("fangs", "beak", "proboscis")] into your arm!"))
- if(affecting?.receive_damage(30))
- bite_victim.update_damage_overlays()
- playsound(src,'sound/items/weapons/bite.ogg', 70, TRUE)
- return
+ var/obj/item/bodypart/affecting = bite_victim.get_active_hand()
+ to_chat(user, span_danger("You feel a sharp pain as an unseen creature sinks its [pick("fangs", "beak", "proboscis")] into your [affecting.plaintext_zone]!"))
+ bite_victim.apply_damage(30, BRUTE, affecting)
+ playsound(src,'sound/items/weapons/bite.ogg', 70, TRUE)
+ return
to_chat(user, span_warning("You find nothing of value..."))
/obj/structure/moisture_trap/attackby(obj/item/I, mob/user, params)
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 5fd3b2b435a4a..b785c48ceb37f 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -248,13 +248,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror/broken, 28)
to_chat(user, span_warning("A chill runs down your spine as [src] shatters..."))
user.AddComponent(/datum/component/omen, incidents_left = 7)
-/obj/structure/mirror/bullet_act(obj/projectile/P)
- if(broken || !isliving(P.firer) || !P.damage)
+/obj/structure/mirror/bullet_act(obj/projectile/proj)
+ if(broken || !isliving(proj.firer) || !proj.damage)
return ..()
. = ..()
if(broken) // breaking a mirror truly gets you bad luck!
- var/mob/living/unlucky_dude = P.firer
+ var/mob/living/unlucky_dude = proj.firer
to_chat(unlucky_dude, span_warning("A chill runs down your spine as [src] shatters..."))
unlucky_dude.AddComponent(/datum/component/omen, incidents_left = 7)
diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm
index 0a0c9ca0a1017..3a1844aa2225e 100644
--- a/code/game/objects/structures/mystery_box.dm
+++ b/code/game/objects/structures/mystery_box.dm
@@ -272,10 +272,10 @@ GLOBAL_LIST_INIT(mystery_fishing, list(
/obj/structure/mystery_box/wands/generate_valid_types()
valid_types = GLOB.mystery_magic
-///One of a kind, rarely found by fishing in the ocean.
+///A fishing and pirate-themed mystery box, rarely found by fishing in the ocean, then another cannot be caught for the next 30 minutes.
/obj/structure/mystery_box/fishing
name = "treasure chest"
- desc = "A pirate-y chest that seems equally magial and mysterious, capable of granting the user different pieces of gear."
+ desc = "A piratey coffer equally magical and mysterious, capable of granting different pieces of gear to whoever opens it."
icon_state = "treasure"
uses_left = 18
max_integrity = 100
diff --git a/code/game/objects/structures/ore_containers.dm b/code/game/objects/structures/ore_containers.dm
index 6bc6f680116f4..75c7a03cfcfa9 100644
--- a/code/game/objects/structures/ore_containers.dm
+++ b/code/game/objects/structures/ore_containers.dm
@@ -23,25 +23,16 @@
ui.open()
/obj/structure/ore_container/ui_data(mob/user)
- var/list/data = list()
- data["ores"] = list()
+ var/list/ores = list()
for(var/obj/item/stack/ore/ore_item in contents)
- data["ores"] += list(list(
+ ores += list(list(
"id" = REF(ore_item),
"name" = ore_item.name,
"amount" = ore_item.amount,
+ "icon" = ore_item::icon,
+ "icon_state" = ore_item::icon_state,
))
- return data
-
-/obj/structure/ore_container/ui_static_data(mob/user)
- var/list/data = list()
- data["ore_images"] = list()
- for(var/obj/item/stack/ore_item as anything in subtypesof(/obj/item/stack/ore))
- data["ore_images"] += list(list(
- "name" = initial(ore_item.name),
- "icon" = icon2base64(getFlatIcon(image(icon = initial(ore_item.icon), icon_state = initial(ore_item.icon_state)), no_anim=TRUE))
- ))
- return data
+ return list("ores" = ores)
/obj/structure/ore_container/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
diff --git a/code/game/objects/structures/plaques/static_plaques.dm b/code/game/objects/structures/plaques/static_plaques.dm
index 4b53ae0437301..31bec93ffc5f8 100644
--- a/code/game/objects/structures/plaques/static_plaques.dm
+++ b/code/game/objects/structures/plaques/static_plaques.dm
@@ -115,6 +115,14 @@
//Current stations
+// Birdshot: added Apr 29, 2023 (#74371)
+/obj/structure/plaque/static_plaque/golden/commission/birdshot
+ desc = "Spinward Sector Station SS-13\n'Birdshot' Class Outpost\nCommissioned 29/04/2563\n'Shooting for the Stars'"
+
+// Deltastation: added Dec 17, 2016 (#22066)
+/obj/structure/plaque/static_plaque/golden/commission/delta
+ desc = "Spinward Sector Station SS-13\n'Delta' Class Outpost\nCommissioned 17/12/2556\n'Efficiency Through Redundancy'"
+
// Icebox Station: added May 13, 2020 (#51090)
/obj/structure/plaque/static_plaque/golden/commission/icebox
desc = "Spinward Sector Station SS-13\n'Box' Class Outpost (Revision 2.2: 'Icebox')\nCommissioned 13/05/2560\n'Cold Reliable'"
@@ -123,25 +131,17 @@
/obj/structure/plaque/static_plaque/golden/commission/meta
desc = "Spinward Sector Station SS-13\n'Meta' Class Outpost\nCommissioned 11/03/2553\n'Theseus' Station'"
-// Deltastation: added Dec 17, 2016 (#22066)
-/obj/structure/plaque/static_plaque/golden/commission/delta
- desc = "Spinward Sector Station SS-13\n'Delta' Class Outpost\nCommissioned 17/12/2556\n'Efficiency Through Redundancy'"
+// Nebulastation: added Nov 6, 2024 (#84826)
+/obj/structure/plaque/static_plaque/golden/commission/nebula
+ desc = "Spinward Sector Station SS-13\n'Nebula' Class Outpost\nCommissioned 06/11/2564\n'The New Future'"
// Tramstation: added Mar 11, 2021 (#56509)
/obj/structure/plaque/static_plaque/golden/commission/tram
desc = "Spinward Sector Station SS-13\n'Tram' Class Outpost\nCommissioned 11/03/2561\n'Making Moves'"
-// Wawastation: added add date here
+// Wawastation: added Jun 4, 2024 (#82298)
/obj/structure/plaque/static_plaque/golden/commission/wawa
- desc = "Spinward Sector Station SS-13\n'Wawa' Class Outpost\nCommissioned 11/03/add here\n'Forever Vertical'"
-
-// North Star: added Apr 13, 2023 (#74371)
-/obj/structure/plaque/static_plaque/golden/commission/northstar
- desc = "Spinward Sector Ship SS-13\n'North Star' Class Vessel\nCommissioned 13/04/2563\n'New Opportunities'"
-
-// Birdshot: added Apr 29, 2023 (#74371)
-/obj/structure/plaque/static_plaque/golden/commission/birdshot
- desc = "Spinward Sector Station SS-13\n'Birdshot' Class Outpost\nCommissioned 29/04/2563\n'Shooting for the Stars'"
+ desc = "Spinward Sector Station SS-13\n'Wawa' Class Outpost\nCommissioned 04/06/2564\n'Forever Vertical'"
//Removed stations
@@ -189,6 +189,10 @@
/obj/structure/plaque/static_plaque/golden/commission/mini
desc = "Spinward Sector Station SS-08\n'Mini' Class Outpost\nCommissioned 29/01/2554\nDecommissioned 27/12/2556\n'The Littlest Station'"
+// North Star: added Apr 13, 2023 (#74371), removed Nov 25, 2024 (#87937)- 1 year, 7 months, 12 days
+/obj/structure/plaque/static_plaque/golden/commission/northstar
+ desc = "Spinward Sector Ship SS-13\n'North Star' Class Vessel\nCommissioned 13/04/2563\nDecommissioned 25/11/2564\n'New Opportunities'"
+
// Omegastation: added Dec 27, 2016 (#22453), removed Sep 20, 2018 (#40352)- 1 year, 8 months, 24 days
/obj/structure/plaque/static_plaque/golden/commission/omega
desc = "Spinward Sector Station SS-09\n'Omega' Class Outpost\nCommissioned 27/12/2556\nDecommissioned 20/09/2558\n'Tiny Take Two'"
diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm
index 532ecebde0e5e..d470008bb9cad 100644
--- a/code/game/objects/structures/reflector.dm
+++ b/code/game/objects/structures/reflector.dm
@@ -75,8 +75,8 @@
/obj/structure/reflector/proc/auto_reflect(obj/projectile/proj, pdir, turf/ploc, pangle)
proj.ignore_source_check = TRUE
- proj.range = proj.decayedRange
- proj.decayedRange = max(proj.decayedRange--, 0)
+ proj.range = proj.maximum_range
+ proj.maximum_range = max(proj.maximum_range--, 0)
return BULLET_ACT_FORCE_PIERCE
/obj/structure/reflector/tool_act(mob/living/user, obj/item/tool, list/modifiers)
@@ -196,7 +196,7 @@
if(abs(incidence) > 90 && abs(incidence) < 270)
return FALSE
var/new_angle = SIMPLIFY_DEGREES(rotation_angle + incidence)
- proj.set_angle_centered(new_angle)
+ proj.set_angle_centered(loc, new_angle)
return ..()
//DOUBLE
@@ -220,7 +220,8 @@
/obj/structure/reflector/double/auto_reflect(obj/projectile/proj, pdir, turf/ploc, pangle)
var/incidence = GET_ANGLE_OF_INCIDENCE(rotation_angle, (proj.angle + 180))
var/new_angle = SIMPLIFY_DEGREES(rotation_angle + incidence)
- proj.set_angle_centered(new_angle)
+ proj.forceMove(loc)
+ proj.set_angle_centered(loc, new_angle)
return ..()
//BOX
@@ -241,8 +242,8 @@
admin = TRUE
anchored = TRUE
-/obj/structure/reflector/box/auto_reflect(obj/projectile/P)
- P.set_angle_centered(rotation_angle)
+/obj/structure/reflector/box/auto_reflect(obj/projectile/proj)
+ proj.set_angle_centered(loc, rotation_angle)
return ..()
/obj/structure/reflector/ex_act()
diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm
index 65a23c9a88b53..9f7660b05e6ed 100644
--- a/code/game/objects/structures/shower.dm
+++ b/code/game/objects/structures/shower.dm
@@ -233,7 +233,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16))
if(mist && !(actually_on && current_temperature != SHOWER_FREEZING))
qdel(mist)
-
/obj/machinery/shower/proc/on_entered(datum/source, atom/movable/enterer)
SIGNAL_HANDLER
@@ -253,17 +252,37 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16))
take_his_status_effect.remove_status_effect(/datum/status_effect/washing_regen)
/obj/machinery/shower/proc/wash_atom(atom/target)
- target.wash(CLEAN_RAD | CLEAN_WASH)
+ var/purity_volume = reagents.total_volume*0.70 // need 70% of total reagents
+ var/datum/reagent/blood/bloody_shower = reagents.has_reagent(/datum/reagent/blood, amount=purity_volume)
+ var/datum/reagent/water/clean_shower = reagents.has_reagent(/datum/reagent/water, amount=purity_volume)
+
+ // radiation my beloved
+ var/rad_purity_volume = reagents.total_volume*0.20 // need 20% of total reagents
+ var/radium_volume = reagents.get_reagent_amount(/datum/reagent/uranium/radium)
+ var/uranium_volume = reagents.get_reagent_amount(/datum/reagent/uranium)
+ var/polonium_volume = reagents.get_reagent_amount(/datum/reagent/toxin/polonium) * 3 // highly radioactive
+ var/total_radiation_volume = (radium_volume + uranium_volume + polonium_volume)
+ var/radioactive_shower = total_radiation_volume >= rad_purity_volume
+
+ // we only care about blood and h20 for mood/status effect
+ var/datum/reagent/shower_reagent = bloody_shower || clean_shower || null
+
+ var/wash_flags = NONE
+ if(clean_shower)
+ wash_flags |= CLEAN_WASH
+ if(!radioactive_shower)
+ // note it is possible to have a clean_shower that is radioactive (+70% water mixed with +20% radiation)
+ wash_flags |= CLEAN_RAD
+ target.wash(wash_flags)
+
reagents.expose(target, (TOUCH), SHOWER_EXPOSURE_MULTIPLIER * SHOWER_SPRAY_VOLUME / max(reagents.total_volume, SHOWER_SPRAY_VOLUME))
if(!isliving(target))
return
var/mob/living/living_target = target
check_heat(living_target)
- living_target.apply_status_effect(/datum/status_effect/washing_regen)
- if(!HAS_TRAIT(target, TRAIT_WATER_HATER) || HAS_TRAIT(target, TRAIT_WATER_ADAPTATION))
- living_target.add_mood_event("shower", /datum/mood_event/nice_shower)
- else
- living_target.add_mood_event("shower", /datum/mood_event/shower_hater)
+
+ living_target.apply_status_effect(/datum/status_effect/washing_regen, shower_reagent)
+ living_target.add_mood_event("shower", /datum/mood_event/shower, shower_reagent)
/**
* Toggle whether shower is actually on and outputting water.
diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm
index db4981aeac77a..6a0bc3123d1f5 100644
--- a/code/game/objects/structures/spawner.dm
+++ b/code/game/objects/structures/spawner.dm
@@ -299,5 +299,5 @@
proteon.add_filter("sentient_proteon", 3, list("type" = "outline", "color" = COLOR_CULT_RED, "size" = 2, "alpha" = 40))
/obj/structure/spawner/sentient/proteon_spawner/handle_deconstruct(disassembled)
- playsound('sound/effects/hallucinations/veryfar_noise.ogg', 125)
+ playsound(src, 'sound/effects/hallucinations/veryfar_noise.ogg', 75)
visible_message(span_cult_bold("[src] completely falls apart, the screams of the damned reaching a feverous pitch before slowly fading away into nothing."))
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index c57ce3bcecfbf..448c3eb5425a7 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -197,7 +197,7 @@
var/extra_wound = 0
if(HAS_TRAIT(user, TRAIT_HULK))
extra_wound = 20
- banged_limb?.receive_damage(30, wound_bonus = extra_wound)
+ pushed_mob.apply_damage(30, BRUTE, banged_limb, wound_bonus = extra_wound)
pushed_mob.apply_damage(60, STAMINA)
take_damage(50)
if(user.mind?.martial_art?.smashes_tables && user.mind?.martial_art.can_use(user))
diff --git a/code/game/objects/structures/water_structures/sink.dm b/code/game/objects/structures/water_structures/sink.dm
index 1cd3f7d7aaa53..3a6dfbb2a2c14 100644
--- a/code/game/objects/structures/water_structures/sink.dm
+++ b/code/game/objects/structures/water_structures/sink.dm
@@ -73,10 +73,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14))
if(busy)
to_chat(user, span_warning("Someone's already washing here!"))
return
+
var/selected_area = user.parse_zone_with_bodypart(user.zone_selected)
- var/washing_face = 0
+ var/washing_face = FALSE
if(selected_area in list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES))
- washing_face = 1
+ washing_face = TRUE
+
+ playsound(src, 'sound/machines/sink-faucet.ogg', 50)
user.visible_message(span_notice("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]..."), \
span_notice("You start washing your [washing_face ? "face" : "hands"]..."))
busy = TRUE
@@ -206,6 +209,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14))
if(!user.combat_mode || (O.item_flags & NOBLUDGEON))
to_chat(user, span_notice("You start washing [O]..."))
+ playsound(src, 'sound/machines/sink-faucet.ogg', 50)
busy = TRUE
if(!do_after(user, 4 SECONDS, target = src))
busy = FALSE
diff --git a/code/game/objects/structures/water_structures/toilet.dm b/code/game/objects/structures/water_structures/toilet.dm
index 986d7eae4ea05..435af610996ae 100644
--- a/code/game/objects/structures/water_structures/toilet.dm
+++ b/code/game/objects/structures/water_structures/toilet.dm
@@ -31,7 +31,7 @@
cover_open = round(rand(0, 1))
update_appearance(UPDATE_ICON)
if(mapload && SSmapping.level_trait(z, ZTRAIT_STATION))
- AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/toilet)
+ AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/toilet])
AddElement(/datum/element/fish_safe_storage)
register_context()
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index b3a3ea310386a..9924713d93908 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -82,12 +82,11 @@
/obj/structure/window/mouse_drop_receive(atom/dropping, mob/user, params)
. = ..()
- if (added_leaning || (flags_1 & ON_BORDER_1))
+ if (flags_1 & ON_BORDER_1)
return
- /// For performance reasons and to cut down on init times we are "lazy-loading" the leaning component when someone drags their sprite onto us, and then calling dragging code again to trigger the component
- AddComponent(/datum/component/leanable, 11)
- added_leaning = TRUE
- dropping.base_mouse_drop_handler(src, null, null, params)
+
+ //Adds the component only once. We do it here & not in Initialize() because there are tons of windows & we don't want to add to their init times
+ LoadComponent(/datum/component/leanable, dropping)
/obj/structure/window/examine(mob/user)
. = ..()
@@ -513,6 +512,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/unanchored/spawner, 0)
return FALSE
/obj/structure/window/reinforced/attackby_secondary(obj/item/tool, mob/user, params)
+ if(resistance_flags & INDESTRUCTIBLE)
+ balloon_alert(user, "too resilient!")
+ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
switch(state)
if(RWINDOW_SECURE)
if(tool.tool_behaviour == TOOL_WELDER)
@@ -591,7 +593,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/unanchored/spawner, 0)
/obj/structure/window/reinforced/examine(mob/user)
. = ..()
-
+ if(resistance_flags & INDESTRUCTIBLE)
+ return
switch(state)
if(RWINDOW_SECURE)
. += span_notice("It's been screwed in with one way screws, you'd need to heat them to have any chance of backing them out.")
diff --git a/code/game/say.dm b/code/game/say.dm
index a1171515dac49..5ecc4e819119a 100644
--- a/code/game/say.dm
+++ b/code/game/say.dm
@@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(freqtospan, list(
if(istype(dialect) && dialect.display_icon(src))
languageicon = "[dialect.get_icon()] "
- messagepart = " [say_emphasis(messagepart)] "
+ messagepart = " [messagepart] "
return "[spanpart1][spanpart2][freqpart][languageicon][compose_track_href(speaker, namepart)][namepart][compose_job(speaker, message_language, raw_message, radio_freq)][endspanpart][messagepart]"
@@ -223,8 +223,14 @@ GLOBAL_LIST_INIT(freqtospan, list(
if(copytext_char(input, -2) == "!!")
spans |= SPAN_YELL
- var/spanned = attach_spans(input, spans)
- return "[say_mod], \"[spanned]\""
+ /* all inputs should be fully figured out past this point */
+
+ var/processed_input = say_emphasis(input) //This MUST be done first so that we don't get clipped by spans
+ processed_input = attach_spans(processed_input, spans)
+
+ var/processed_say_mod = say_emphasis(say_mod)
+
+ return "[processed_say_mod], \"[processed_input]\""
/// Transforms the speech emphasis mods from [/atom/movable/proc/say_emphasis] into the appropriate HTML tags. Includes escaping.
#define ENCODE_HTML_EMPHASIS(input, char, html, varname) \
@@ -235,8 +241,8 @@ GLOBAL_LIST_INIT(freqtospan, list(
/atom/movable/proc/say_emphasis(input)
ENCODE_HTML_EMPHASIS(input, "\\|", "i", italics)
ENCODE_HTML_EMPHASIS(input, "\\+", "b", bold)
- ENCODE_HTML_EMPHASIS(input, "_", "u", underline)
- var/static/regex/remove_escape_backlashes = regex("\\\\(_|\\+|\\|)", "g") // Removes backslashes used to escape text modification.
+ ENCODE_HTML_EMPHASIS(input, "\\_", "u", underline)
+ var/static/regex/remove_escape_backlashes = regex("\\\\(\\_|\\+|\\|)", "g") // Removes backslashes used to escape text modification.
input = remove_escape_backlashes.Replace_char(input, "$1")
return input
diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm
index 32c531e34dc74..810b83cbcbe79 100644
--- a/code/game/turfs/change_turf.dm
+++ b/code/game/turfs/change_turf.dm
@@ -192,6 +192,10 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list(
QUEUE_SMOOTH_NEIGHBORS(src)
QUEUE_SMOOTH(src)
+ // we need to update gravity for any mob on a tile that is being created or destroyed
+ for(var/mob/living/target in new_turf.contents)
+ target.refresh_gravity()
+
return new_turf
/turf/open/ChangeTurf(path, list/new_baseturfs, flags) //Resist the temptation to make this default to keeping air.
diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm
index 3a6546f6eaa85..967c13f337220 100644
--- a/code/game/turfs/closed/minerals.dm
+++ b/code/game/turfs/closed/minerals.dm
@@ -25,7 +25,7 @@
transform = MAP_SWITCH(TRANSLATE_MATRIX(-4, -4), matrix())
temperature = TCMB
- var/turf/open/floor/plating/turf_type = /turf/open/misc/asteroid/airless
+ var/turf/turf_type = /turf/open/misc/asteroid/airless
/// The path of the ore stack we spawn when we're mined.
var/obj/item/stack/ore/mineralType = null
/// If we spawn a boulder like on the gulag, we use this in lou of mineralType
diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm
index c656d0ee95a42..402d24c6c830d 100644
--- a/code/game/turfs/closed/walls.dm
+++ b/code/game/turfs/closed/walls.dm
@@ -51,13 +51,8 @@
underlays += underlay_appearance
/turf/closed/wall/mouse_drop_receive(atom/dropping, mob/user, params)
- . = ..()
- if (added_leaning)
- return
- /// For performance reasons and to cut down on init times we are "lazy-loading" the leaning component when someone drags their sprite onto us, and then calling dragging code again to trigger the component
- AddComponent(/datum/component/leanable, 11)
- added_leaning = TRUE
- dropping.base_mouse_drop_handler(src, null, null, params)
+ //Adds the component only once. We do it here & not in Initialize() because there are tons of walls & we don't want to add to their init times
+ LoadComponent(/datum/component/leanable, dropping)
/turf/closed/wall/atom_destruction(damage_flag)
. = ..()
@@ -173,7 +168,7 @@
**arg2 is the hulk
*/
/turf/closed/wall/proc/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 20)
- arm.receive_damage(brute = damage, blocked = 0, wound_bonus = CANT_WOUND)
+ hulkman.apply_damage(damage, BRUTE, arm, wound_bonus = CANT_WOUND)
var/datum/mutation/human/hulk/smasher = locate(/datum/mutation/human/hulk) in hulkman.dna.mutations
if(!smasher || !damage) //sanity check but also snow and wood walls deal no recoil damage, so no arm breaky
return
diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm
index c2b9963c5ed41..6ad32fe7a652c 100644
--- a/code/game/turfs/open/_open.dm
+++ b/code/game/turfs/open/_open.dm
@@ -344,7 +344,7 @@
movable_content.wash(CLEAN_WASH)
return TRUE
-/turf/open/handle_slip(mob/living/carbon/slipper, knockdown_amount, obj/slippable, lube, paralyze_amount, force_drop)
+/turf/open/handle_slip(mob/living/slipper, knockdown_amount, obj/slippable, lube, paralyze_amount, force_drop)
if(slipper.movement_type & MOVETYPES_NOT_TOUCHING_GROUND)
return FALSE
if(!has_gravity(src))
@@ -354,13 +354,15 @@
if(lube & SLIDE_ICE)
// Ice slides only go 1 tile, this is so you will slip across ice until you reach a non-slip tile
slide_distance = 1
- else if(HAS_TRAIT(slipper, TRAIT_CURSED))
+ else if(HAS_TRAIT(slipper, TRAIT_CURSED) && !(lube & WEAK_SLIDE))
// When cursed, all slips send you flying
lube |= SLIDE
slide_distance = rand(5, 9)
else if(HAS_TRAIT(slipper, TRAIT_NO_SLIP_SLIDE))
// Stops sliding
slide_distance = 0
+ else if(lube & WEAK_SLIDE)
+ slide_distance = rand(1, 2)
var/obj/buckled_obj
if(slipper.buckled)
@@ -380,9 +382,10 @@
SEND_SIGNAL(slipper, COMSIG_ON_CARBON_SLIP)
slipper.add_mood_event("slipped", /datum/mood_event/slipped)
- if(force_drop)
+ if(force_drop && iscarbon(slipper)) //carbon specific behavior that living doesn't have
+ var/mob/living/carbon/carbon = slipper
for(var/obj/item/item in slipper.held_items)
- slipper.accident(item)
+ carbon.accident(item)
var/olddir = slipper.dir
slipper.moving_diagonally = 0 //If this was part of diagonal move slipping will stop it.
@@ -390,12 +393,14 @@
// They need to be kept upright to maintain the combo effect (So don't knockdown)
slipper.Immobilize(1 SECONDS)
slipper.incapacitate(1 SECONDS)
+ else if(lube & WEAK_SLIDE)
+ slipper.adjust_staggered_up_to(STAGGERED_SLOWDOWN_LENGTH, 10 SECONDS)
+ slipper.stop_pulling()
else
slipper.Knockdown(knockdown_amount)
slipper.Paralyze(paralyze_amount)
- slipper.stop_pulling()
- if(buckled_obj)
+ if(!isnull(buckled_obj) && !ismob(buckled_obj))
buckled_obj.unbuckle_mob(slipper)
// This is added onto the end so they slip "out of their chair" (one tile)
lube |= SLIDE_ICE
@@ -403,7 +408,7 @@
if(slide_distance)
var/turf/target = get_ranged_target_turf(slipper, olddir, slide_distance)
- if(lube & SLIDE)
+ if(lube & (SLIDE|WEAK_SLIDE))
slipper.AddComponent(/datum/component/force_move, target, TRUE)
else if(lube & SLIDE_ICE)
slipper.AddComponent(/datum/component/force_move, target, FALSE)//spinning would be bad for ice, fucks up the next dir
diff --git a/code/game/turfs/open/ashplanet.dm b/code/game/turfs/open/ashplanet.dm
index 31369a2e5cec8..e6703c04eb559 100644
--- a/code/game/turfs/open/ashplanet.dm
+++ b/code/game/turfs/open/ashplanet.dm
@@ -69,3 +69,6 @@
/turf/open/misc/ashplanet/wateryrock/Initialize(mapload)
icon_state = "[icon_state][rand(1, 9)]"
. = ..()
+
+/turf/open/misc/ashplanet/wateryrock/lavaland_atmos
+ initial_gas_mix = LAVALAND_DEFAULT_ATMOS
diff --git a/code/game/turfs/open/lava.dm b/code/game/turfs/open/lava.dm
index fa0b0c4b12872..2ec0b8e9a9c42 100644
--- a/code/game/turfs/open/lava.dm
+++ b/code/game/turfs/open/lava.dm
@@ -22,6 +22,7 @@
barefootstep = FOOTSTEP_LAVA
clawfootstep = FOOTSTEP_LAVA
heavyfootstep = FOOTSTEP_LAVA
+ rust_resistance = RUST_RESISTANCE_ABSOLUTE
/// How much fire damage we deal to living mobs stepping on us
var/lava_damage = 20
/// How many firestacks we add to living mobs stepping on us
@@ -42,25 +43,50 @@
var/fish_source_type = /datum/fish_source/lavaland
/// The color we use for our immersion overlay
var/immerse_overlay_color = "#a15e1b"
- rust_resistance = RUST_RESISTANCE_ABSOLUTE
+ /// Whether the immerse element has been added yet or not
+ var/immerse_added = FALSE
/turf/open/lava/Initialize(mapload)
. = ..()
if(fish_source_type)
- AddElement(/datum/element/lazy_fishing_spot, fish_source_type)
+ add_lazy_fishing(fish_source_type)
// You can release chrabs and lavaloops and likes in lava, or be an absolute scumbag and drop other fish there too.
ADD_TRAIT(src, TRAIT_CATCH_AND_RELEASE, INNATE_TRAIT)
refresh_light()
if(!smoothing_flags)
update_appearance()
- AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color)
+ RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(on_atom_inited))
/turf/open/lava/Destroy()
+ UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON)
for(var/mob/living/leaving_mob in contents)
leaving_mob.RemoveElement(/datum/element/perma_fire_overlay)
REMOVE_TRAIT(leaving_mob, TRAIT_NO_EXTINGUISH, TURF_TRAIT)
return ..()
+///We lazily add the immerse element when something is spawned or crosses this turf and not before.
+/turf/open/lava/proc/on_atom_inited(datum/source, atom/movable/movable)
+ SIGNAL_HANDLER
+ if(burn_stuff(movable))
+ START_PROCESSING(SSobj, src)
+ if(immerse_added || is_type_in_typecache(movable, GLOB.immerse_ignored_movable))
+ return
+ AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color)
+ immerse_added = TRUE
+
+/**
+ * turf/Initialize() calls Entered on its contents too, however
+ * we need to wait for movables that still need to be initialized
+ * before we add the immerse element.
+ */
+/turf/open/lava/Entered(atom/movable/arrived)
+ . = ..()
+ if(!immerse_added && !is_type_in_typecache(arrived, GLOB.immerse_ignored_movable))
+ AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color)
+ immerse_added = TRUE
+ if(burn_stuff(arrived))
+ START_PROCESSING(SSobj, src)
+
/turf/open/lava/update_overlays()
. = ..()
. += emissive_appearance(mask_icon, mask_state, src)
@@ -124,6 +150,8 @@
update_appearance(~UPDATE_SMOOTHING)
/turf/open/lava/ex_act(severity, target)
+ if(fish_source)
+ GLOB.preset_fish_sources[fish_source].spawn_reward_from_explosion(src, severity)
return FALSE
/turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
@@ -139,14 +167,6 @@
/turf/open/lava/MakeDry(wet_setting = TURF_WET_WATER)
return
-/turf/open/lava/airless
- initial_gas_mix = AIRLESS_ATMOS
-
-/turf/open/lava/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
- . = ..()
- if(burn_stuff(arrived))
- START_PROCESSING(SSobj, src)
-
/turf/open/lava/Exited(atom/movable/gone, direction)
. = ..()
if(isliving(gone) && !islava(gone.loc))
@@ -208,10 +228,10 @@
to_chat(user, span_warning("The [ciggie.name] is already lit!"))
return TRUE
var/clumsy_modifier = HAS_TRAIT(user, TRAIT_CLUMSY) ? 2 : 1
- if(prob(25 * clumsy_modifier ))
+ if(prob(25 * clumsy_modifier) && isliving(user))
ciggie.light(span_warning("[user] expertly dips \the [ciggie.name] into [src], along with the rest of [user.p_their()] arm. What a dumbass."))
- var/obj/item/bodypart/affecting = user.get_active_hand()
- affecting?.receive_damage(burn = 90)
+ var/mob/living/burned_guy = user
+ burned_guy.apply_damage(90, BURN, user.get_active_hand())
else
ciggie.light(span_rose("[user] expertly dips \the [ciggie.name] into [src], lighting it with the scorching heat of the planet. Witnessing such a feat is almost enough to make you cry."))
return TRUE
@@ -322,6 +342,9 @@
/turf/open/lava/can_cross_safely(atom/movable/crossing)
return HAS_TRAIT(src, TRAIT_LAVA_STOPPED) || HAS_TRAIT(crossing, immunity_trait ) || HAS_TRAIT(crossing, TRAIT_MOVE_FLYING)
+/turf/open/lava/airless
+ initial_gas_mix = AIRLESS_ATMOS
+
/turf/open/lava/smooth
name = "lava"
baseturfs = /turf/open/lava/smooth
diff --git a/code/game/turfs/open/sand.dm b/code/game/turfs/open/sand.dm
index 254c595fcbdd6..af583de777910 100644
--- a/code/game/turfs/open/sand.dm
+++ b/code/game/turfs/open/sand.dm
@@ -12,9 +12,11 @@
/turf/open/misc/beach/Initialize(mapload)
. = ..()
- AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/sand)
+ add_lazy_fishing(/datum/fish_source/sand)
/turf/open/misc/beach/ex_act(severity, target)
+ if(fish_source)
+ GLOB.preset_fish_sources[fish_source].spawn_reward_from_explosion(src, severity)
return FALSE
/turf/open/misc/beach/sand
diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm
index af1d06056b012..2e2daee48bc15 100644
--- a/code/game/turfs/open/water.dm
+++ b/code/game/turfs/open/water.dm
@@ -27,14 +27,42 @@
/// Fishing element for this specific water tile
var/datum/fish_source/fishing_datum = /datum/fish_source/river
+ /// Whether the immerse element has been added yet or not
+ var/immerse_added = FALSE
+
/turf/open/water/Initialize(mapload)
. = ..()
- AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha)
+ RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(on_atom_inited))
AddElement(/datum/element/watery_tile)
if(!isnull(fishing_datum))
- AddElement(/datum/element/lazy_fishing_spot, fishing_datum)
+ add_lazy_fishing(fishing_datum)
ADD_TRAIT(src, TRAIT_CATCH_AND_RELEASE, INNATE_TRAIT)
+///We lazily add the immerse element when something is spawned or crosses this turf and not before.
+/turf/open/water/proc/on_atom_inited(datum/source, atom/movable/movable)
+ SIGNAL_HANDLER
+ UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON)
+ if(immerse_added || is_type_in_typecache(movable, GLOB.immerse_ignored_movable))
+ return
+ AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha)
+ immerse_added = TRUE
+
+/turf/open/water/Destroy()
+ UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON)
+ return ..()
+
+/**
+ * turf/Initialize() calls Entered on its contents too, however
+ * we need to wait for movables that still need to be initialized
+ * before we add the immerse element.
+ */
+/turf/open/water/Entered(atom/movable/arrived)
+ . = ..()
+ if(immerse_added || is_type_in_typecache(arrived, GLOB.immerse_ignored_movable))
+ return
+ AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha)
+ immerse_added = TRUE
+
/turf/open/water/jungle
/turf/open/water/no_planet_atmos
@@ -64,6 +92,7 @@
icon_state = "tizira_water"
base_icon_state = "tizira_water"
baseturfs = /turf/open/water/beach/tizira
+ fishing_datum = /datum/fish_source/tizira
/**
* A special subtype of water with steam particles and a status effect similar to showers, that's however only applied if
@@ -81,33 +110,27 @@
immerse_overlay_alpha = 190
fishing_datum = /datum/fish_source/hot_spring
/// Holder for the steam particles
- var/obj/effect/abstract/particle_holder/cached/steam_effect
+ var/obj/effect/abstract/particle_holder/cached/particle_effect
/turf/open/water/hot_spring/Initialize(mapload)
. = ..()
icon_state = "pool_[rand(1, 4)]"
- steam_effect = new(src, /particles/hotspring_steam, 4)
+ particle_effect = new(src, /particles/hotspring_steam, 4)
//render the steam over mobs and objects on the game plane
- steam_effect.vis_flags &= ~VIS_INHERIT_PLANE
+ particle_effect.vis_flags &= ~VIS_INHERIT_PLANE
//And be unaffected by ambient occlusions, which would render the steam grey
- steam_effect.plane = MUTATE_PLANE(MASSIVE_OBJ_PLANE, src)
+ particle_effect.plane = MUTATE_PLANE(MASSIVE_OBJ_PLANE, src)
add_filter("hot_spring_waves", 1, wave_filter(y = 1, size = 1, offset = 0, flags = WAVE_BOUNDED))
var/filter = get_filter("hot_spring_waves")
animate(filter, offset = 1, time = 3 SECONDS, loop = -1, easing = SINE_EASING|EASE_IN|EASE_OUT)
animate(offset = -1, time = 3 SECONDS, easing = SINE_EASING|EASE_IN|EASE_OUT)
- /**
- * turf/Initialize() calls Entered on its contents, however
- * we need to wait for movables that still need to be initialized.
- */
- RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(enter_initialized_movable))
/turf/open/water/hot_spring/Destroy()
- QDEL_NULL(steam_effect)
+ QDEL_NULL(particle_effect)
remove_filter("hot_spring_waves")
for(var/atom/movable/movable as anything in contents)
exit_hot_spring(movable)
- UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON)
return ..()
/turf/open/water/hot_spring/Entered(atom/movable/arrived, atom/old_loc)
@@ -118,6 +141,9 @@
/turf/open/water/hot_spring/proc/enter_initialized_movable(datum/source, atom/movable/movable)
SIGNAL_HANDLER
+ if(!immerse_added && !is_type_in_typecache(movable, GLOB.immerse_ignored_movable))
+ AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha)
+ immerse_added = TRUE
enter_hot_spring(movable)
///Registers the signals from the immerse element and calls dip_in if the movable has the required trait.
@@ -167,3 +193,6 @@
living.add_mood_event("hot_spring", /datum/mood_event/hot_spring_left)
else
living.add_mood_event("hot_spring", /datum/mood_event/hot_spring_hater_left)
+
+/turf/open/water/hot_spring/lavaland_atmos
+ initial_gas_mix = LAVALAND_DEFAULT_ATMOS
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index fdbc1e04b8eb6..318bb5ebb4cef 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -109,6 +109,9 @@ GLOBAL_LIST_EMPTY(station_turfs)
/// Never directly access this, use get_explosive_block() instead
var/inherent_explosive_resistance = -1
+ ///The typepath we use for lazy fishing on turfs, to save on world init time.
+ var/fish_source
+
/turf/vv_edit_var(var_name, new_value)
var/static/list/banned_edits = list(NAMEOF_STATIC(src, x), NAMEOF_STATIC(src, y), NAMEOF_STATIC(src, z))
@@ -695,9 +698,9 @@ GLOBAL_LIST_EMPTY(station_turfs)
return
SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_TURF, src, reagents, methods, volume_modifier, show_message)
- for(var/reagent in reagents)
- var/datum/reagent/R = reagent
- . |= R.expose_turf(src, reagents[R])
+ for(var/datum/reagent/reagent as anything in reagents)
+ var/reac_volume = reagents[reagent]
+ . |= reagent.expose_turf(src, reac_volume)
/**
* Called when this turf is being washed. Washing a turf will also wash any mopable floor decals
@@ -790,3 +793,67 @@ GLOBAL_LIST_EMPTY(station_turfs)
/// Returns whether it is safe for an atom to move across this turf
/turf/proc/can_cross_safely(atom/movable/crossing)
return TRUE
+
+/**
+ * the following are some hacky fishing-related optimizations to shave off
+ * time we spend implementing the fishing as possible, even if that means
+ * doing hackier code, because we've hundreds of turfs like lava, water etc every round,
+ */
+/turf/proc/add_lazy_fishing(fish_source_path)
+ RegisterSignal(src, COMSIG_PRE_FISHING, PROC_REF(add_fishing_spot_comp))
+ RegisterSignal(src, COMSIG_NPC_FISHING, PROC_REF(on_npc_fishing))
+ RegisterSignal(src, COMSIG_FISH_RELEASED_INTO, PROC_REF(on_fish_release_into))
+ RegisterSignal(src, COMSIG_TURF_CHANGE, PROC_REF(remove_lazy_fishing))
+ ADD_TRAIT(src, TRAIT_FISHING_SPOT, INNATE_TRAIT)
+ fish_source = fish_source_path
+
+/turf/proc/remove_lazy_fishing()
+ SIGNAL_HANDLER
+ UnregisterSignal(src, list(
+ COMSIG_PRE_FISHING,
+ COMSIG_NPC_FISHING,
+ COMSIG_FISH_RELEASED_INTO,
+ COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL),
+ COMSIG_TURF_CHANGE,
+ ))
+ REMOVE_TRAIT(src, TRAIT_FISHING_SPOT, INNATE_TRAIT)
+ fish_source = null
+
+/turf/proc/add_fishing_spot_comp(datum/source)
+ SIGNAL_HANDLER
+ source.AddComponent(/datum/component/fishing_spot, fish_source)
+ remove_lazy_fishing()
+
+/turf/proc/on_npc_fishing(datum/source, list/fish_spot_container)
+ SIGNAL_HANDLER
+ fish_spot_container[NPC_FISHING_SPOT] = GLOB.preset_fish_sources[fish_source]
+
+/turf/proc/on_fish_release_into(datum/source, obj/item/fish/fish, mob/living/releaser)
+ SIGNAL_HANDLER
+ GLOB.preset_fish_sources[fish_source].readd_fish(fish, releaser)
+
+/turf/examine(mob/user)
+ . = ..()
+ if(!fish_source || !HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT))
+ return
+ if(!GLOB.preset_fish_sources[fish_source].has_known_fishes(src))
+ return
+ . += span_tinynoticeital("This is a fishing spot. You can look again to list its fishes...")
+
+/turf/examine_more(mob/user)
+ . = ..()
+ if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT) || !fish_source)
+ return
+ GLOB.preset_fish_sources[fish_source].get_catchable_fish_names(user, src, .)
+
+/turf/ex_act(severity, target)
+ . = ..()
+ if(!fish_source)
+ return
+ GLOB.preset_fish_sources[fish_source].spawn_reward_from_explosion(src, severity)
+
+/turf/multitool_act(mob/living/user, obj/item/multitool/tool)
+ if(!fish_source || !istype(tool.buffer, /obj/machinery/fishing_portal_generator))
+ return ..()
+ var/obj/machinery/fishing_portal_generator/portal = tool.buffer
+ return portal.link_fishing_spot(GLOB.preset_fish_sources[fish_source], src, user)
diff --git a/code/game/world.dm b/code/game/world.dm
index fe55b3963b504..ea6c9cb976ff2 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -8,6 +8,13 @@
GLOBAL_VAR(restart_counter)
GLOBAL_VAR(tracy_log)
+GLOBAL_PROTECT(tracy_log)
+GLOBAL_VAR(tracy_initialized)
+GLOBAL_PROTECT(tracy_initialized)
+GLOBAL_VAR(tracy_init_error)
+GLOBAL_PROTECT(tracy_init_error)
+GLOBAL_VAR(tracy_init_reason)
+GLOBAL_PROTECT(tracy_init_reason)
/**
* WORLD INITIALIZATION
@@ -66,15 +73,30 @@ GLOBAL_VAR(tracy_log)
/world/proc/Genesis(tracy_initialized = FALSE)
RETURN_TYPE(/datum/controller/master)
+ if(!tracy_initialized)
+ GLOB.tracy_initialized = FALSE
+#ifndef OPENDREAM
+ if(!tracy_initialized)
#ifdef USE_BYOND_TRACY
#warn USE_BYOND_TRACY is enabled
- if(!tracy_initialized)
+ var/should_init_tracy = TRUE
+ GLOB.tracy_init_reason = "USE_BYOND_TRACY defined"
#else
- if(!tracy_initialized && (USE_TRACY_PARAMETER in params))
+ var/should_init_tracy = FALSE
+ if(USE_TRACY_PARAMETER in params)
+ should_init_tracy = TRUE
+ GLOB.tracy_init_reason = "world.params"
+ if(fexists(TRACY_ENABLE_PATH))
+ GLOB.tracy_init_reason ||= "enabled for round"
+ SEND_TEXT(world.log, "[TRACY_ENABLE_PATH] exists, initializing byond-tracy!")
+ should_init_tracy = TRUE
+ fdel(TRACY_ENABLE_PATH)
+#endif
+ if(should_init_tracy)
+ init_byond_tracy()
+ Genesis(tracy_initialized = TRUE)
+ return
#endif
- GLOB.tracy_log = init_byond_tracy()
- Genesis(tracy_initialized = TRUE)
- return
Profile(PROFILE_RESTART)
Profile(PROFILE_RESTART, type = "sendmaps")
@@ -331,6 +353,7 @@ GLOBAL_VAR(tracy_log)
if(do_hard_reboot)
log_world("World hard rebooted at [time_stamp()]")
shutdown_logging() // See comment below.
+ shutdown_byond_tracy()
auxcleanup()
TgsEndProcess()
return ..()
@@ -338,6 +361,7 @@ GLOBAL_VAR(tracy_log)
log_world("World rebooted at [time_stamp()]")
shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss.
+ shutdown_byond_tracy()
auxcleanup()
TgsReboot() // TGS can decide to kill us right here, so it's important to do it last
@@ -351,6 +375,7 @@ GLOBAL_VAR(tracy_log)
call_ext(debug_server, "auxtools_shutdown")()
/world/Del()
+ shutdown_byond_tracy()
auxcleanup()
. = ..()
@@ -397,8 +422,6 @@ GLOBAL_VAR(tracy_log)
new_status += " Time: [time2text(STATION_TIME_PASSED(), "hh:mm", 0)] "
if(SSshuttle?.emergency && SSshuttle?.emergency?.mode != (SHUTTLE_IDLE || SHUTTLE_ENDGAME))
new_status += " | Shuttle: [SSshuttle.emergency.getModeStr()] [SSshuttle.emergency.getTimerStr()] "
- if(SStime_track?.time_dilation_avg > 0)
- new_status += " | Time Dilation: [round(SStime_track?.time_dilation_avg)]% "
else if(SSticker.current_state == GAME_STATE_FINISHED)
new_status += "RESTARTING "
if(SSmapping.current_map)
@@ -483,21 +506,31 @@ GLOBAL_VAR(tracy_log)
DREAMLUAU_SET_EXECUTION_LIMIT_MILLIS(tick_lag * 100)
/world/proc/init_byond_tracy()
- var/library
-
- switch (system_type)
- if (MS_WINDOWS)
- library = "prof.dll"
- if (UNIX)
- library = "libprof.so"
- else
- CRASH("Unsupported platform: [system_type]")
+ if(!fexists(TRACY_DLL_PATH))
+ SEND_TEXT(world.log, "Error initializing byond-tracy: [TRACY_DLL_PATH] not found!")
+ CRASH("Error initializing byond-tracy: [TRACY_DLL_PATH] not found!")
- var/init_result = call_ext(library, "init")("block")
+ var/init_result = call_ext(TRACY_DLL_PATH, "init")("block")
if(length(init_result) != 0 && init_result[1] == ".") // if first character is ., then it returned the output filename
- return init_result
+ SEND_TEXT(world.log, "byond-tracy initialized (logfile: [init_result])")
+ GLOB.tracy_initialized = TRUE
+ return GLOB.tracy_log = init_result
+ else if(init_result == "already initialized") // not gonna question it.
+ GLOB.tracy_initialized = TRUE
+ SEND_TEXT(world.log, "byond-tracy already initialized ([GLOB.tracy_log ? "logfile: [GLOB.tracy_log]" : "no logfile"])")
else if(init_result != "0")
+ GLOB.tracy_init_error = init_result
+ SEND_TEXT(world.log, "Error initializing byond-tracy: [init_result]")
CRASH("Error initializing byond-tracy: [init_result]")
+ else
+ GLOB.tracy_initialized = TRUE
+ SEND_TEXT(world.log, "byond-tracy initialized (no logfile)")
+
+/world/proc/shutdown_byond_tracy()
+ if(GLOB.tracy_initialized)
+ SEND_TEXT(world.log, "Shutting down byond-tracy")
+ GLOB.tracy_initialized = FALSE
+ call_ext(TRACY_DLL_PATH, "destroy")()
/world/proc/init_debugger()
var/dll = GetConfig("env", "AUXTOOLS_DEBUG_DLL")
diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm
index 52c9c65e5b917..f98520bb84a69 100644
--- a/code/modules/admin/IsBanned.dm
+++ b/code/modules/admin/IsBanned.dm
@@ -214,7 +214,7 @@
if (ban["fromdb"])
if(SSdbcore.Connect())
- INVOKE_ASYNC(SSdbcore, /datum/controller/subsystem/dbcore/proc.QuerySelect, list(
+ INVOKE_ASYNC(SSdbcore, TYPE_PROC_REF(/datum/controller/subsystem/dbcore, QuerySelect), list(
SSdbcore.NewQuery(
"INSERT INTO [format_table_name("stickyban_matched_ckey")] (matched_ckey, stickyban) VALUES (:ckey, :bannedckey) ON DUPLICATE KEY UPDATE last_matched = now()",
list("ckey" = ckey, "bannedckey" = bannedckey)
diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm
index edc3525bf2f07..a329ad595fa50 100644
--- a/code/modules/admin/admin_investigate.dm
+++ b/code/modules/admin/admin_investigate.dm
@@ -1,6 +1,8 @@
/atom/proc/investigate_log(message, subject)
- if(!message || !subject)
+ if(!message)
return
+ if(!subject)
+ CRASH("No subject provided for investigate_log")
var/F = file("[GLOB.log_directory]/[subject].html")
var/source = "[src]"
diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm
index 4534ae9d93cff..944e230acd12f 100644
--- a/code/modules/admin/create_mob.dm
+++ b/code/modules/admin/create_mob.dm
@@ -37,7 +37,7 @@
*
* (IE, no wacky hair styles / colors)
*/
-/proc/randomize_human_normie(mob/living/carbon/human/human, randomize_mutations = FALSE)
+/proc/randomize_human_normie(mob/living/carbon/human/human, randomize_mutations = FALSE, update_body = TRUE)
// Sorry enbys but statistically you are not average enough
human.gender = human.dna.species.sexes ? pick(MALE, FEMALE) : PLURAL
human.physique = human.gender
@@ -59,4 +59,5 @@
// Normal DNA init stuff, these can generally be wacky but we care less, they're aliens after all
human.dna.initialize_dna(newblood_type = random_blood_type(), create_mutation_blocks = randomize_mutations, randomize_features = TRUE)
human.updatehealth()
- human.updateappearance(mutcolor_update = TRUE)
+ if(update_body)
+ human.updateappearance(mutcolor_update = TRUE)
diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm
index 296b6fd2dd86f..73987622202e6 100644
--- a/code/modules/admin/permissionedit.dm
+++ b/code/modules/admin/permissionedit.dm
@@ -300,7 +300,9 @@ ADMIN_VERB(edit_admin_permissions, R_PERMISSIONS, "Permissions Panel", "Edit adm
D.deactivate() //after logs so the deadmined admin can see the message.
/datum/admins/proc/auto_deadmin()
- if (owner.prefs.read_preference(/datum/preference/toggle/bypass_deadmin_in_centcom) && is_centcom_level(owner.mob.z))
+ if(owner.is_localhost())
+ return FALSE
+ if(owner.prefs.read_preference(/datum/preference/toggle/bypass_deadmin_in_centcom) && is_centcom_level(owner.mob.z))
return FALSE
to_chat(owner, span_interface("You are now a normal player."), confidential = TRUE)
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm
index 4da97d2c447bf..1305e5a660d6e 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm
@@ -117,9 +117,6 @@
/proc/_text2num(T)
return text2num(T)
-/proc/_trimtext(Text)
- return trimtext(Text)
-
/proc/_ohearers(Dist, Center = usr)
return ohearers(Dist, Center)
diff --git a/code/modules/admin/verbs/admin_newscaster.dm b/code/modules/admin/verbs/admin_newscaster.dm
index b1be5560d69d9..7cac42e0b998e 100644
--- a/code/modules/admin/verbs/admin_newscaster.dm
+++ b/code/modules/admin/verbs/admin_newscaster.dm
@@ -128,7 +128,7 @@ ADMIN_VERB(access_news_network, R_ADMIN, "Access Newscaster Network", "Allows yo
data["channelLocked"] = current_channel.locked
data["channelCensored"] = current_channel.censored
- //We send all the information about all channels and all messages in existance.
+ //We send all the information about all channels and all messages in existence.
data["channels"] = channel_list
data["messages"] = message_list
data["wanted"] = wanted_info
diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm
index 93b398397c284..984ced4c0bf7e 100644
--- a/code/modules/admin/verbs/adminfun.dm
+++ b/code/modules/admin/verbs/adminfun.dm
@@ -194,7 +194,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(admin_smite, R_ADMIN|R_FUN, "Smite", "Smite a player
divine_wrath.original = target
divine_wrath.def_zone = body_zone
divine_wrath.spread = 0
- divine_wrath.preparePixelProjectile(target, source_turf)
+ divine_wrath.aim_projectile(target, source_turf)
divine_wrath.fire()
/client/proc/punish_log(whom, punishment)
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 834e4741cdecf..abbcbb62ab648 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -502,7 +502,7 @@ ADMIN_VERB(cmd_admin_pm_panel, R_NONE, "Admin PM", "Show a list of clients to PM
return TRUE
-/// Notifies all admins about the existance of an admin pm, then logs the pm
+/// Notifies all admins about the existence of an admin pm, then logs the pm
/// message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel
/// or a /client, in which case we send in the standard form
/// log_message is the raw message to send, it will be filtered and treated to ensure we do not break any text handling
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index b6c5e10ca1d81..13f1995c9ba3d 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -852,3 +852,42 @@ ADMIN_VERB(check_missing_sprites, R_DEBUG, "Debug Worn Item Sprites", "We're can
actual_file_name = 'icons/mob/clothing/belt_mirror.dmi'
if(!(sprite.icon_state in icon_states(actual_file_name)))
to_chat(user, span_warning("ERROR sprites for [sprite.type]. Suit Storage slot."), confidential = TRUE)
+
+#ifndef OPENDREAM
+ADMIN_VERB(start_tracy, R_DEBUG, "Run Tracy Now", "Start running the byond-tracy profiler immediately", ADMIN_CATEGORY_DEBUG)
+ if(GLOB.tracy_initialized)
+ to_chat(user, span_warning("byond-tracy is already running!"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
+ return
+ else if(GLOB.tracy_init_error)
+ to_chat(user, span_danger("byond-tracy failed to initialize during an earlier attempt: [GLOB.tracy_init_error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
+ return
+ message_admins(span_adminnotice("[key_name_admin(user)] is trying to start the byond-tracy profiler."))
+ log_admin("[key_name(user)] is trying to start the byond-tracy profiler.")
+ GLOB.tracy_initialized = FALSE
+ GLOB.tracy_init_reason = "[user.ckey]"
+ world.init_byond_tracy()
+ if(GLOB.tracy_init_error)
+ to_chat(user, span_danger("byond-tracy failed to initialize: [GLOB.tracy_init_error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
+ message_admins(span_adminnotice("[key_name_admin(user)] tried to start the byond-tracy profiler, but it failed to initialize ([GLOB.tracy_init_error])"))
+ log_admin("[key_name(user)] tried to start the byond-tracy profiler, but it failed to initialize ([GLOB.tracy_init_error])")
+ return
+ to_chat(user, span_notice("byond-tracy successfully started!"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
+ message_admins(span_adminnotice("[key_name_admin(user)] started the byond-tracy profiler."))
+ log_admin("[key_name(user)] started the byond-tracy profiler.")
+ if(GLOB.tracy_log)
+ rustg_file_write("[GLOB.tracy_log]", "[GLOB.log_directory]/tracy.loc")
+
+ADMIN_VERB_CUSTOM_EXIST_CHECK(start_tracy)
+ return CONFIG_GET(flag/allow_tracy_start) && fexists(TRACY_DLL_PATH)
+
+ADMIN_VERB(queue_tracy, R_DEBUG, "Toggle Tracy Next Round", "Toggle running the byond-tracy profiler next round", ADMIN_CATEGORY_DEBUG)
+ if(fexists(TRACY_ENABLE_PATH))
+ fdel(TRACY_ENABLE_PATH)
+ else
+ rustg_file_write("[user.ckey]", TRACY_ENABLE_PATH)
+ message_admins(span_adminnotice("[key_name_admin(user)] [fexists(TRACY_ENABLE_PATH) ? "enabled" : "disabled"] the byond-tracy profiler for next round."))
+ log_admin("[key_name(user)] [fexists(TRACY_ENABLE_PATH) ? "enabled" : "disabled"] the byond-tracy profiler for next round.")
+
+ADMIN_VERB_CUSTOM_EXIST_CHECK(queue_tracy)
+ return CONFIG_GET(flag/allow_tracy_queue) && fexists(TRACY_DLL_PATH)
+#endif
diff --git a/code/modules/admin/verbs/ert.dm b/code/modules/admin/verbs/ert.dm
index 71722eb6d64ab..09903e7642978 100644
--- a/code/modules/admin/verbs/ert.dm
+++ b/code/modules/admin/verbs/ert.dm
@@ -157,7 +157,7 @@
spawn_turfs += get_turf(spawner)
if(!brief_spawn)
- brief_spawn = locate(/obj/effect/landmark/ert_shuttle_brief_spawn) in affected_turf
+ brief_spawn = get_turf(locate(/obj/effect/landmark/ert_shuttle_brief_spawn) in affected_turf)
if(!length(spawn_turfs))
stack_trace("ERT shuttle loaded but found no spawnpoints, placing the ERT at wherever inside the shuttle instead.")
@@ -206,7 +206,7 @@
candidate_living_exps = sort_list(candidate_living_exps, cmp=/proc/cmp_numeric_dsc)
if(candidate_living_exps.len > ERT_EXPERIENCED_LEADER_CHOOSE_TOP)
- candidate_living_exps = candidate_living_exps.Cut(ERT_EXPERIENCED_LEADER_CHOOSE_TOP+1) // pick from the top ERT_EXPERIENCED_LEADER_CHOOSE_TOP contenders in playtime
+ candidate_living_exps.Cut(ERT_EXPERIENCED_LEADER_CHOOSE_TOP+1) // pick from the top ERT_EXPERIENCED_LEADER_CHOOSE_TOP contenders in playtime
earmarked_leader = pick(candidate_living_exps)
else
earmarked_leader = pick(candidates)
diff --git a/code/modules/admin/verbs/highlander_datum.dm b/code/modules/admin/verbs/highlander_datum.dm
index de7e4918fc00b..c574c39288213 100644
--- a/code/modules/admin/verbs/highlander_datum.dm
+++ b/code/modules/admin/verbs/highlander_datum.dm
@@ -11,7 +11,7 @@ GLOBAL_DATUM(highlander_controller, /datum/highlander_controller)
. = ..()
RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, PROC_REF(new_highlander))
sound_to_playing_players('sound/misc/highlander.ogg')
- send_to_playing_players(span_boldannounce("THERE CAN BE ONLY ONE "))
+ send_to_playing_players(span_bolddanger("THERE CAN BE ONLY ONE "))
for(var/obj/item/disk/nuclear/nuke_disk as anything in SSpoints_of_interest.real_nuclear_disks)
var/datum/component/stationloving/component = nuke_disk.GetComponent(/datum/component/stationloving)
component?.relocate() //Gets it out of bags and such
diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm
index b70465666f3d0..5e68dcedbfaea 100644
--- a/code/modules/admin/verbs/playsound.dm
+++ b/code/modules/admin/verbs/playsound.dm
@@ -41,7 +41,8 @@ ADMIN_VERB(play_sound, R_SOUND, "Play Global Sound", "Play a sound to all connec
ADMIN_VERB(play_local_sound, R_SOUND, "Play Local Sound", "Plays a sound only you can hear.", ADMIN_CATEGORY_FUN, sound as sound)
log_admin("[key_name(user)] played a local sound [sound]")
message_admins("[key_name_admin(user)] played a local sound [sound]")
- playsound(get_turf(user.mob), sound, 50, FALSE, FALSE)
+ var/volume = tgui_input_number(user, "What volume would you like the sound to play at?", max_value = 100)
+ playsound(get_turf(user.mob), sound, volume || 50, FALSE)
BLACKBOX_LOG_ADMIN_VERB("Play Local Sound")
ADMIN_VERB(play_direct_mob_sound, R_SOUND, "Play Direct Mob Sound", "Play a sound directly to a mob.", ADMIN_CATEGORY_FUN, sound as sound, mob/target in world)
@@ -51,6 +52,10 @@ ADMIN_VERB(play_direct_mob_sound, R_SOUND, "Play Direct Mob Sound", "Play a soun
return
log_admin("[key_name(user)] played a direct mob sound [sound] to [key_name_admin(target)].")
message_admins("[key_name_admin(user)] played a direct mob sound [sound] to [ADMIN_LOOKUPFLW(target)].")
+ var/volume = tgui_input_number(user, "What volume would you like the sound to play at?", max_value = 100)
+ var/sound/admin_sound = sound(sound)
+ if(volume)
+ admin_sound.volume = volume
SEND_SOUND(target, sound)
BLACKBOX_LOG_ADMIN_VERB("Play Direct Mob Sound")
@@ -175,6 +180,10 @@ ADMIN_VERB(play_web_sound, R_SOUND, "Play Internet Sound", "Play a given interne
web_sound(user.mob, null)
ADMIN_VERB(set_round_end_sound, R_SOUND, "Set Round End Sound", "Set the sound that plays on round end.", ADMIN_CATEGORY_FUN, sound as sound)
+ var/volume = tgui_input_number(user, "What volume would you like this sound to play at?", max_value = 100)
+ var/sound/admin_sound = sound(sound)
+ if(volume)
+ admin_sound.volume = volume
SSticker.SetRoundEndSound(sound)
log_admin("[key_name(user)] set the round end sound to [sound]")
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 82c6bdc480432..4277cae7d81fd 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -58,7 +58,7 @@
for(var/client/staff as anything in GLOB.admins)
if(staff?.prefs.read_preference(/datum/preference/toggle/comms_notification))
SEND_SOUND(staff, sound('sound/misc/server-ready.ogg'))
- to_chat(GLOB.admins, msg, confidential = TRUE)
+ to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE)
for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list)
console.override_cooldown()
@@ -70,7 +70,7 @@
for(var/client/staff as anything in GLOB.admins)
if(staff?.prefs.read_preference(/datum/preference/toggle/comms_notification))
SEND_SOUND(staff, sound('sound/misc/server-ready.ogg'))
- to_chat(GLOB.admins, msg, confidential = TRUE)
+ to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE)
for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list)
console.override_cooldown()
@@ -81,6 +81,6 @@
msg = span_adminnotice("NUKE CODE REQUEST: [ADMIN_FULLMONTY(sender)] [ADMIN_CENTCOM_REPLY(sender)] [ADMIN_SET_SD_CODE]: [msg]")
for(var/client/staff as anything in GLOB.admins)
SEND_SOUND(staff, sound('sound/misc/server-ready.ogg'))
- to_chat(GLOB.admins, msg, confidential = TRUE)
+ to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE)
for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list)
console.override_cooldown()
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index 26cf122211305..e43164419d59c 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -493,7 +493,7 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
return
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Mass Braindamage"))
for(var/mob/living/carbon/human/H in GLOB.player_list)
- to_chat(H, span_boldannounce("You suddenly feel stupid."), confidential = TRUE)
+ to_chat(H, span_bolddanger("You suddenly feel stupid."), confidential = TRUE)
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 60, 80)
message_admins("[key_name_admin(holder)] made everybody brain damaged")
if("floorlava")
diff --git a/code/modules/admin/view_variables/admin_delete.dm b/code/modules/admin/view_variables/admin_delete.dm
index 5ef04b351cce3..b9a11b50e6547 100644
--- a/code/modules/admin/view_variables/admin_delete.dm
+++ b/code/modules/admin/view_variables/admin_delete.dm
@@ -16,6 +16,7 @@
log_admin("[key_name(usr)] deleted [D] [coords]")
message_admins("[key_name_admin(usr)] deleted [D] [jmp_coords]")
BLACKBOX_LOG_ADMIN_VERB("Delete")
+ SEND_SIGNAL(D, COMSIG_ADMIN_DELETING, src)
if(isturf(D))
var/turf/T = D
T.ScrapeAway()
diff --git a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
index 296eef07e8141..790dd0f8e5355 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
@@ -60,5 +60,5 @@
user.visible_message(span_notice("[user] inserts [tool] into [target]."), span_notice("You insert [tool] into [target]."))
user.temporarilyRemoveItemFromInventory(tool, TRUE)
var/obj/item/organ/heart/gland/gland = tool
- gland.Insert(target, 2)
- return 1
+ gland.Insert(target, special = TRUE, movement_flags = FROM_ABDUCTOR_SURGERY)
+ return TRUE
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index b991a16b8318d..02af10227e8df 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -50,8 +50,7 @@
if(!owner)
return
var/image/holder = owner.hud_list[GLAND_HUD]
- var/icon/I = icon(owner.icon, owner.icon_state, owner.dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = owner.get_cached_height() - ICON_SIZE_Y
if(active_mind_control)
holder.icon_state = "hudgland_active"
else if(mind_control_uses)
@@ -84,7 +83,7 @@
active_mind_control = FALSE
return TRUE
-/obj/item/organ/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags)
+/obj/item/organ/heart/gland/on_mob_remove(mob/living/carbon/gland_owner, special, movement_flags)
. = ..()
active = FALSE
if(initial(uses) == 1)
@@ -93,10 +92,10 @@
hud.remove_atom_from_hud(gland_owner)
clear_mind_control()
-/obj/item/organ/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/heart/gland/on_mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags)
. = ..()
- if(special != 2 && uses) // Special 2 means abductor surgery
+ if(!(movement_flags & FROM_ABDUCTOR_SURGERY) && uses)
Start()
var/datum/atom_hud/abductor/hud = GLOB.huds[DATA_HUD_ABDUCTOR]
hud.add_atom_to_hud(gland_owner)
diff --git a/code/modules/antagonists/abductor/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm
index f4ddd345075f8..644e3a827bf7b 100644
--- a/code/modules/antagonists/abductor/machinery/camera.dm
+++ b/code/modules/antagonists/abductor/machinery/camera.dm
@@ -21,11 +21,12 @@
return ..()
/obj/machinery/computer/camera_advanced/abductor/CreateEye()
- ..()
- eyeobj.visible_icon = TRUE
+ . = ..()
+ //For observers
eyeobj.icon = 'icons/mob/eyemob.dmi'
eyeobj.icon_state = "abductor_camera"
- eyeobj.SetInvisibility(INVISIBILITY_OBSERVER)
+ //For the user
+ eyeobj.set_user_icon(eyeobj.icon, eyeobj.icon_state)
/obj/machinery/computer/camera_advanced/abductor/GrantActions(mob/living/carbon/user)
if(!abduct_created)
@@ -57,7 +58,7 @@
to_chat(owner, span_warning("You must wait [DisplayTimeText(use_delay - world.time)] to use the [target] again!"))
return
var/mob/living/carbon/human/C = owner
- var/mob/eye/ai_eye/remote/remote_eye = C.remote_control
+ var/mob/eye/camera/remote/remote_eye = C.remote_control
var/obj/machinery/abductor/pad/P = target
var/area/target_area = get_area(remote_eye)
@@ -101,7 +102,7 @@
to_chat(owner, span_warning("You can only teleport to one place at a time!"))
return
var/mob/living/carbon/human/C = owner
- var/mob/eye/ai_eye/remote/remote_eye = C.remote_control
+ var/mob/eye/camera/remote/remote_eye = C.remote_control
var/obj/machinery/abductor/pad/P = target
var/area/target_area = get_area(remote_eye)
@@ -151,7 +152,7 @@
return
var/mob/living/carbon/human/C = owner
- var/mob/eye/ai_eye/remote/remote_eye = C.remote_control
+ var/mob/eye/camera/remote/remote_eye = C.remote_control
var/obj/machinery/abductor/console/console = target
console.SetDroppoint(remote_eye.loc,owner)
diff --git a/code/modules/antagonists/blob/blob_antag.dm b/code/modules/antagonists/blob/blob_antag.dm
index 25bea4b083eaa..c5dfa6a1e10ca 100644
--- a/code/modules/antagonists/blob/blob_antag.dm
+++ b/code/modules/antagonists/blob/blob_antag.dm
@@ -100,7 +100,7 @@
. = ..()
if(owner)
addtimer(CALLBACK(src, PROC_REF(Activate), TRUE), autoplace_time, TIMER_UNIQUE|TIMER_OVERRIDE)
- to_chat(owner, span_boldannounce("You will automatically pop and place your blob core in [DisplayTimeText(autoplace_time)]."))
+ to_chat(owner, span_bolddanger("You will automatically pop and place your blob core in [DisplayTimeText(autoplace_time)]."))
/datum/action/innate/blobpop/Activate(timer_activated = FALSE)
var/mob/living/old_body = owner
@@ -183,5 +183,3 @@
/obj/effect/dummy/phased_mob/can_blob_attack()
return FALSE
-
-
diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm
index db40090615b07..bb43097bcd227 100644
--- a/code/modules/antagonists/blob/overmind.dm
+++ b/code/modules/antagonists/blob/overmind.dm
@@ -139,7 +139,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
if(!placed)
if(manualplace_min_time && world.time >= manualplace_min_time)
to_chat(src, span_boldnotice("You may now place your blob core."))
- to_chat(src, span_boldannounce("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)]."))
+ to_chat(src, span_bolddanger("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)]."))
manualplace_min_time = 0
if(autoplace_max_time && world.time >= autoplace_max_time)
place_blob_core(BLOB_RANDOM_PLACEMENT)
@@ -261,8 +261,8 @@ GLOBAL_LIST_EMPTY(blob_nodes)
return FALSE
to_chat(src, span_blobannounce("You are the overmind!"))
if(!placed && autoplace_max_time <= world.time)
- to_chat(src, span_boldannounce("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)]."))
- to_chat(src, span_boldannounce("You [manualplace_min_time ? "will be able to":"can"] manually place your blob core by pressing the Place Blob Core button in the bottom right corner of the screen."))
+ to_chat(src, span_bolddanger("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)]."))
+ to_chat(src, span_bolddanger("You [manualplace_min_time ? "will be able to":"can"] manually place your blob core by pressing the Place Blob Core button in the bottom right corner of the screen."))
update_health_hud()
add_points(0)
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index 05881a3b4b3be..698ccda7ac9d1 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -1037,7 +1037,7 @@
/datum/antagonist/changeling/headslug/greet()
play_stinger()
- to_chat(owner, span_boldannounce("You are a fresh changeling birthed from a headslug! \
+ to_chat(owner, span_bolddanger("You are a fresh changeling birthed from a headslug! \
You aren't as strong as a normal changeling, as you are newly born."))
diff --git a/code/modules/antagonists/changeling/headslug_eggs.dm b/code/modules/antagonists/changeling/headslug_eggs.dm
index e2238d9d7e703..5c237b1156004 100644
--- a/code/modules/antagonists/changeling/headslug_eggs.dm
+++ b/code/modules/antagonists/changeling/headslug_eggs.dm
@@ -11,11 +11,11 @@
/// When this egg last got removed from a body. If -1, the egg hasn't been removed from a body.
var/removal_time = -1
-/obj/item/organ/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/body_egg/changeling_egg/on_mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags)
. = ..()
hatch_time = world.time + (removal_time == -1 ? EGG_INCUBATION_TIME : (hatch_time - removal_time))
-/obj/item/organ/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/body_egg/changeling_egg/on_mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
. = ..()
removal_time = world.time
diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm
index 71b1509ec816c..d8ebc7c599803 100644
--- a/code/modules/antagonists/changeling/powers/absorb.dm
+++ b/code/modules/antagonists/changeling/powers/absorb.dm
@@ -7,6 +7,7 @@
req_human = TRUE
///if we're currently absorbing, used for sanity
var/is_absorbing = FALSE
+ var/datum/looping_sound/changeling_absorb/absorbing_loop
/datum/action/changeling/absorb_dna/can_sting(mob/living/carbon/owner)
if(!..())
@@ -59,6 +60,7 @@
if(target.mind && owner.mind)//if the victim and owner have minds
absorb_memories(target)
+ qdel(absorbing_loop)
is_absorbing = FALSE
changeling.adjust_chemicals(10)
@@ -106,12 +108,12 @@
var/list/recent_speech = target.copy_recent_speech()
if(recent_speech.len)
- changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate [target.p_them()]! "
+ changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate [target.p_them()]: "
to_chat(owner, span_boldnotice("Some of [target]'s speech patterns, we should study these to better impersonate [target.p_them()]!"))
for(var/spoken_memory in recent_speech)
- changeling.antag_memory += "\"[spoken_memory]\" "
+ changeling.antag_memory += " \"[spoken_memory]\""
to_chat(owner, span_notice("\"[spoken_memory]\""))
- changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns. "
+ changeling.antag_memory += ". We have no more knowledge of [target]'s speech patterns. "
to_chat(owner, span_boldnotice("We have no more knowledge of [target]'s speech patterns."))
@@ -146,6 +148,7 @@
if(2)
owner.visible_message(span_warning("[owner] extends a proboscis!"), span_notice("We extend a proboscis."))
if(3)
+ absorbing_loop = new(owner, start_immediately = TRUE)
owner.visible_message(span_danger("[owner] stabs [target] with the proboscis!"), span_notice("We stab [target] with the proboscis."))
to_chat(target, span_userdanger("You feel a sharp stabbing pain!"))
target.take_overall_damage(40)
@@ -153,6 +156,7 @@
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[absorbing_iteration]"))
if(!do_after(owner, 15 SECONDS, target, hidden = TRUE))
owner.balloon_alert(owner, "interrupted!")
+ qdel(absorbing_loop)
is_absorbing = FALSE
return FALSE
return TRUE
diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm
index 1af11d3ad15ef..70f74d4e4297e 100644
--- a/code/modules/antagonists/changeling/powers/headcrab.dm
+++ b/code/modules/antagonists/changeling/powers/headcrab.dm
@@ -5,11 +5,17 @@
button_icon_state = "last_resort"
chemical_cost = 20
dna_cost = CHANGELING_POWER_INNATE
- req_human = TRUE
req_stat = DEAD
ignores_fakedeath = TRUE
disabled_by_fire = FALSE
+/datum/action/changeling/headcrab/can_be_used_by(mob/living/user)
+ if(HAS_TRAIT(user, TRAIT_TEMPORARY_BODY))
+ return FALSE
+ if(isanimal_or_basicmob(user) && !istype(user, /mob/living/basic/headslug) && !isconstruct(user) && !(user.mob_biotypes & MOB_SPIRIT))
+ return TRUE
+ return ..()
+
/datum/action/changeling/headcrab/sting_action(mob/living/user)
set waitfor = FALSE
var/confirm = tgui_alert(user, "Are we sure we wish to destroy our body and create a headslug?", "Last Resort", list("Yes", "No"))
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 158b32df216f0..874141237a983 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -71,7 +71,7 @@
if(HAS_TRAIT_FROM_ONLY(user, TRAIT_PARALYSIS_L_ARM, CHANGELING_TRAIT) || HAS_TRAIT_FROM_ONLY(user, TRAIT_PARALYSIS_R_ARM, CHANGELING_TRAIT))
user.balloon_alert(user, "not enough muscle!") // no cheesing repuprosed glands
return
- if(user.active_hand_index % 2 == 0) //we regen the arm before changing it into the weapon
+ if(IS_RIGHT_INDEX(user.active_hand_index)) //we regen the arm before changing it into the weapon
limb_regen = user.regenerate_limb(BODY_ZONE_R_ARM, 1)
else
limb_regen = user.regenerate_limb(BODY_ZONE_L_ARM, 1)
diff --git a/code/modules/antagonists/changeling/powers/transform.dm b/code/modules/antagonists/changeling/powers/transform.dm
index 733e0495118bc..b13b07f7f360d 100644
--- a/code/modules/antagonists/changeling/powers/transform.dm
+++ b/code/modules/antagonists/changeling/powers/transform.dm
@@ -141,8 +141,7 @@
. = ..()
if(hud_icon)
var/image/holder = user.hud_list[ID_HUD]
- var/icon/I = icon(user.icon, user.icon_state, user.dir)
- holder.pixel_y = I.Height() - ICON_SIZE_Y
+ holder.pixel_y = user.get_cached_height() - ICON_SIZE_Y
holder.icon_state = hud_icon
/**
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 150c61af29af6..32d1ca218769b 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -128,6 +128,7 @@ Striking a noncultist, however, will tear their flesh."}
free_use = TRUE
light_color = COLOR_HERETIC_GREEN
light_range = 3
+ demolition_mod = 1.5
/// holder for the actual action when created.
var/list/datum/action/cooldown/spell/path_sword_actions
/// holder for the actual action when created.
@@ -1426,7 +1427,7 @@ Striking a noncultist, however, will tear their flesh."}
qdel(src)
return FALSE
var/obj/projectile/projectile = hitby
- if(projectile.reflectable & REFLECT_NORMAL)
+ if(projectile.reflectable)
return FALSE //To avoid reflection chance double-dipping with block chance
. = ..()
if(.)
diff --git a/code/modules/antagonists/cult/cult_turf_overlay.dm b/code/modules/antagonists/cult/cult_turf_overlay.dm
index df92d7aec90f0..e5e70bac1f722 100644
--- a/code/modules/antagonists/cult/cult_turf_overlay.dm
+++ b/code/modules/antagonists/cult/cult_turf_overlay.dm
@@ -10,7 +10,8 @@
/obj/effect/cult_turf/examine(mob/user)
if(linked)
- linked.examine(user)
+ return linked.examine(user)
+ return list()
/obj/effect/cult_turf/singularity_act()
return
diff --git a/code/modules/antagonists/fugitive/hunters/hunter.dm b/code/modules/antagonists/fugitive/hunters/hunter.dm
index ba26645364712..8c68f0b63bf3b 100644
--- a/code/modules/antagonists/fugitive/hunters/hunter.dm
+++ b/code/modules/antagonists/fugitive/hunters/hunter.dm
@@ -26,7 +26,7 @@
/datum/antagonist/fugitive_hunter/greet()
switch(backstory)
if(HUNTER_PACK_COPS)
- to_chat(owner, span_boldannounce("Justice has arrived. I am a member of the Spacepol!"))
+ to_chat(owner, span_bolddanger("Justice has arrived. I am a member of the Spacepol!"))
to_chat(owner, "The criminals should be on the station, we have special huds implanted to recognize them. ")
to_chat(owner, "As we have lost pretty much all power over these damned lawless megacorporations, it's a mystery if their security will cooperate with us. ")
if(HUNTER_PACK_RUSSIAN)
@@ -47,7 +47,7 @@
to_chat(owner, span_danger("Your mission is simple. Infiltrate the facility and extract the target, dead or alive."))
to_chat(owner, span_danger("This is a stealth infiltration mission in hostile enemy territory. Be wary, and avoid being caught if possible."))
- to_chat(owner, span_boldannounce("You are not an antagonist in that you may kill whomever you please, but you can do anything to ensure the capture of the fugitives, even if that means going through the station."))
+ to_chat(owner, span_bolddanger("You are not an antagonist in that you may kill whomever you please, but you can do anything to ensure the capture of the fugitives, even if that means going through the station."))
owner.announce_objectives()
/datum/antagonist/fugitive_hunter/create_team(datum/team/fugitive_hunters/new_team)
diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm
index 9063760c5bcdc..8466eaf3130f2 100644
--- a/code/modules/antagonists/heretic/heretic_antag.dm
+++ b/code/modules/antagonists/heretic/heretic_antag.dm
@@ -7,6 +7,8 @@
* Used in creating spooky-text for heretic ascension announcements.
*/
/proc/generate_heretic_text(length = 25)
+ if(!isnum(length)) // stupid thing so we can use this directly in replacetext
+ length = 25
. = ""
for(var/i in 1 to length)
. += pick("!", "$", "^", "@", "&", "#", "*", "(", ")", "?")
@@ -93,9 +95,9 @@
//if the knowledge is a spell, use the spell's button
else if(ispath(knowledge,/datum/heretic_knowledge/spell))
var/datum/heretic_knowledge/spell/spell_knowledge = knowledge
- var/datum/action/cooldown/spell/result_spell = spell_knowledge.spell_to_add
- icon_path = result_spell.button_icon
- icon_state = result_spell.button_icon_state
+ var/datum/action/result_action = spell_knowledge.action_to_add
+ icon_path = result_action.button_icon
+ icon_state = result_action.button_icon_state
//if the knowledge is a summon, use the mob sprite
else if(ispath(knowledge,/datum/heretic_knowledge/summon))
diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm
index d4fdf79dfbb59..a0d77682cd8d4 100644
--- a/code/modules/antagonists/heretic/heretic_knowledge.dm
+++ b/code/modules/antagonists/heretic/heretic_knowledge.dm
@@ -187,26 +187,26 @@
/datum/heretic_knowledge/spell
abstract_parent_type = /datum/heretic_knowledge/spell
/// Spell path we add to the heretic. Type-path.
- var/datum/action/cooldown/spell/spell_to_add
+ var/datum/action/action_to_add
/// The spell we actually created.
- var/datum/weakref/created_spell_ref
+ var/datum/weakref/created_action_ref
/datum/heretic_knowledge/spell/Destroy()
- QDEL_NULL(created_spell_ref)
+ QDEL_NULL(created_action_ref)
return ..()
/datum/heretic_knowledge/spell/on_gain(mob/user, datum/antagonist/heretic/our_heretic)
// Added spells are tracked on the body, and not the mind,
// because we handle heretic mind transfers
// via the antag datum (on_gain and on_lose).
- var/datum/action/cooldown/spell/created_spell = created_spell_ref?.resolve() || new spell_to_add(user)
- created_spell.Grant(user)
- created_spell_ref = WEAKREF(created_spell)
+ var/datum/action/created_action = created_action_ref?.resolve() || new action_to_add(user)
+ created_action.Grant(user)
+ created_action_ref = WEAKREF(created_action)
/datum/heretic_knowledge/spell/on_lose(mob/user, datum/antagonist/heretic/our_heretic)
- var/datum/action/cooldown/spell/created_spell = created_spell_ref?.resolve()
- if(created_spell?.owner == user)
- created_spell.Remove(user)
+ var/datum/action/cooldown/spell/created_action = created_action_ref?.resolve()
+ if(created_action?.owner == user)
+ created_action.Remove(user)
/**
* A knowledge subtype for knowledge that can only
@@ -665,8 +665,14 @@
cost = 2
priority = MAX_KNOWLEDGE_PRIORITY + 1 // Yes, the final ritual should be ABOVE the max priority.
required_atoms = list(/mob/living/carbon/human = 3)
- //use this to store the achievement typepath
+ /// The typepath of the achievement to grant upon successful ascension.
var/datum/award/achievement/misc/ascension_achievement
+ /// The text of the ascension announcement.
+ /// %NAME% is replaced with the heretic's real name,
+ /// and %SPOOKY% is replaced with output from [generate_heretic_text]
+ var/announcement_text
+ /// The sound that's played for the ascension announcement.
+ var/announcement_sound
/datum/heretic_knowledge/ultimate/on_research(mob/user, datum/antagonist/heretic/our_heretic)
. = ..()
@@ -727,6 +733,13 @@
source = user,
header = "A Heretic is Ascending!",
)
+ priority_announce(
+ text = replacetext(replacetext(announcement_text, "%NAME%", user.real_name), "%SPOOKY%", GLOBAL_PROC_REF(generate_heretic_text)),
+ title = generate_heretic_text(),
+ sound = announcement_sound,
+ color_override = "pink",
+ )
+
if(!isnull(ascension_achievement))
user.client?.give_award(ascension_achievement, user)
heretic_datum.increase_rust_strength()
diff --git a/code/modules/antagonists/heretic/heretic_living_heart.dm b/code/modules/antagonists/heretic/heretic_living_heart.dm
index 3e8f39fef4f94..b41f616b8b3a3 100644
--- a/code/modules/antagonists/heretic/heretic_living_heart.dm
+++ b/code/modules/antagonists/heretic/heretic_living_heart.dm
@@ -32,8 +32,8 @@
REMOVE_TRAIT(parent, TRAIT_LIVING_HEART, REF(src))
UnregisterSignal(parent, list(COMSIG_ORGAN_REMOVED, COMSIG_ORGAN_BEING_REPLACED))
-/datum/component/living_heart/PostTransfer()
- if(!isorgan(parent))
+/datum/component/living_heart/PostTransfer(datum/new_parent)
+ if(!isorgan(new_parent))
return COMPONENT_INCOMPATIBLE
/**
@@ -80,6 +80,8 @@
var/last_tracked_name
/// Whether the target radial is currently opened.
var/radial_open = FALSE
+ /// Navigator to our target that we have.
+ var/datum/status_effect/agent_pinpointer/scan/heretic/heretic_pinpointer
/datum/action/cooldown/track_target/Grant(mob/granted)
if(!IS_HERETIC(granted))
@@ -144,6 +146,7 @@
playsound(owner, 'sound/effects/singlebeat.ogg', 50, TRUE, SILENCED_SOUND_EXTRARANGE)
owner.balloon_alert(owner, get_balloon_message(tracked_mob))
+
// Let them know how to sacrifice people if they're able to be sac'd
if(tracked_mob.stat == DEAD)
to_chat(owner, span_hierophant("[tracked_mob] is dead. Bring them to a transmutation rune \
@@ -152,6 +155,26 @@
StartCooldown()
return TRUE
+/datum/action/cooldown/track_target/proc/make_navigate_arrow(turf/tracked_turf, arrow_color)
+ var/datum/hud/user_hud = owner.hud_used
+ if(!user_hud)
+ return
+ var/atom/movable/screen/heretic_arrow/arrow = new /atom/movable/screen/heretic_arrow(null, user_hud)
+ animate(arrow, transform = matrix(dir2angle(get_dir(owner, tracked_turf)), MATRIX_ROTATE), 0.2 SECONDS)
+ arrow.screen_loc = around_player
+ arrow.color = arrow_color
+ user_hud.infodisplay += arrow
+ user_hud.show_hud(user_hud.hud_version)
+ addtimer(CALLBACK(src, PROC_REF(end_effect), user_hud, arrow), 1.6 SECONDS)
+
+/datum/action/cooldown/track_target/proc/end_effect(datum/hud/user_hud, atom/movable/screen/heretic_arrow/arrow)
+ arrow.icon_state = "heretic_arrow_disappear"
+ addtimer(CALLBACK(src, PROC_REF(null_arrow), user_hud, arrow), 0.4 SECONDS)
+
+/datum/action/cooldown/track_target/proc/null_arrow(datum/hud/user_hud, atom/movable/screen/heretic_arrow/arrow)
+ user_hud.infodisplay -= arrow
+ user_hud.show_hud(user_hud.hud_version)
+
/// Callback for the radial to ensure it's closed when not allowed.
/datum/action/cooldown/track_target/proc/check_menu()
if(QDELETED(src))
@@ -204,17 +227,32 @@
var/dist = get_dist(our_turf, their_turf)
var/dir = get_dir(our_turf, their_turf)
+ var/arrow_color
+
switch(dist)
if(0 to 15)
balloon_message = "very near, [dir2text(dir)]!"
+ arrow_color = COLOR_GREEN
if(16 to 31)
balloon_message = "near, [dir2text(dir)]!"
+ arrow_color = COLOR_YELLOW
if(32 to 127)
balloon_message = "far, [dir2text(dir)]!"
+ arrow_color = COLOR_ORANGE
else
balloon_message = "very far!"
+ arrow_color = COLOR_RED
+
+ make_navigate_arrow(their_turf, arrow_color)
if(tracked_mob.stat == DEAD)
balloon_message = "they're dead, " + balloon_message
return balloon_message
+
+/atom/movable/screen/heretic_arrow
+ icon = 'icons/effects/96x96.dmi'
+ name = "heretic arrow"
+ icon_state = "heretic_arrow_appear"
+ pixel_x = -32
+ pixel_y = -32
diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm
index 7b316d6cdb984..494a8d30521b9 100644
--- a/code/modules/antagonists/heretic/influences.dm
+++ b/code/modules/antagonists/heretic/influences.dm
@@ -114,7 +114,7 @@
their_poor_arm.dismember()
qdel(their_poor_arm)
else
- to_chat(human_user,span_danger("You pull your hand away from the hole as the eldritch energy flails, trying to latch onto existance itself!"))
+ to_chat(human_user,span_danger("You pull your hand away from the hole as the eldritch energy flails, trying to latch onto existence itself!"))
return TRUE
/obj/effect/visible_heretic_influence/attack_tk(mob/user)
diff --git a/code/modules/antagonists/heretic/items/corrupted_organs.dm b/code/modules/antagonists/heretic/items/corrupted_organs.dm
index fec25094bb782..0e8699f6771e0 100644
--- a/code/modules/antagonists/heretic/items/corrupted_organs.dm
+++ b/code/modules/antagonists/heretic/items/corrupted_organs.dm
@@ -28,7 +28,7 @@
if (LAZYLEN(hallucinations))
organ_owner.client.images |= hallucinations
-/obj/item/organ/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if (!LAZYLEN(hallucinations))
return
@@ -51,7 +51,7 @@
. = ..()
RegisterSignal(organ_owner, COMSIG_MOB_SAY, PROC_REF(on_spoken))
-/obj/item/organ/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, COMSIG_MOB_SAY)
@@ -87,11 +87,11 @@
. = ..()
AddElement(/datum/element/corrupted_organ)
-/obj/item/organ/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank))
-/obj/item/organ/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS)
@@ -124,11 +124,11 @@
AddElement(/datum/element/corrupted_organ)
AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have an unhealthy pallor.")
-/obj/item/organ/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank))
-/obj/item/organ/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS)
diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm
index 6e0d3d7d18659..7b608223a9803 100644
--- a/code/modules/antagonists/heretic/items/heretic_blades.dm
+++ b/code/modules/antagonists/heretic/items/heretic_blades.dm
@@ -251,10 +251,7 @@
return TRUE
if(prob(15))
to_chat(user, span_cult_large(pick("\"An untouched mind? Amusing.\"", "\" I suppose it isn't worth the effort to stop you.\"", "\"Go ahead. I don't care.\"", "\"You'll be mine soon enough.\"")))
- var/obj/item/bodypart/affecting = user.get_active_hand()
- if(!affecting)
- return
- affecting.receive_damage(burn = 5)
+ user.apply_damage(5, BURN, user.get_active_hand())
playsound(src, SFX_SEAR, 25, TRUE)
to_chat(user, span_danger("Your hand sizzles.")) // Nar nar might not care but their essence still doesn't like you
else if(prob(15))
diff --git a/code/modules/antagonists/heretic/items/keyring.dm b/code/modules/antagonists/heretic/items/keyring.dm
index a37b55c17f3fb..1d8e88a8c5975 100644
--- a/code/modules/antagonists/heretic/items/keyring.dm
+++ b/code/modules/antagonists/heretic/items/keyring.dm
@@ -64,6 +64,8 @@
if(!do_teleport(teleportee, get_turf(doorstination), channel = TELEPORT_CHANNEL_MAGIC))
return
+ teleportee.client?.move_delay = 0 //make moving through smoother
+
if(!IS_HERETIC_OR_MONSTER(teleportee))
teleportee.apply_damage(20, BRUTE) //so they dont roll it like a jackpot machine to see if they can land in the armory
to_chat(teleportee, span_userdanger("You stumble through [src], battered by forces beyond your comprehension, landing anywhere but where you thought you were going."))
@@ -109,7 +111,7 @@
if(!IS_HERETIC_OR_MONSTER(user))
return
. += span_hypnophrase("Enchanted by the Mansus!")
- . += span_hypnophrase("Using an ID on this will consume it and allow you to copy its accesses.")
+ . += span_hypnophrase("Using an ID on this or using this ID on another ID will consume it and allow you to copy its accesses.")
. += span_hypnophrase("Using this in-hand allows you to change its appearance.")
. += span_hypnophrase("Using this on a pair of doors , allows you to link them together. Entering one door will transport you to the other, while heathens are instead teleported to a random airlock.")
. += span_hypnophrase("Ctrl-clicking the ID , makes the ID make inverted portals instead, which teleport you onto a random airlock onstation, while heathens are teleported to the destination.")
@@ -169,18 +171,28 @@
portal_two.destination = portal_one
balloon_alert(user, "[message]")
-/obj/item/card/id/advanced/heretic/attackby(obj/item/thing, mob/user, params)
- if(!istype(thing, /obj/item/card/id/advanced) || !IS_HERETIC(user))
+/obj/item/card/id/advanced/heretic/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if(!istype(tool, /obj/item/card/id/advanced) || !IS_HERETIC(user))
return ..()
- var/obj/item/card/id/card = thing
+ eat_card(tool, user)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/card/id/advanced/heretic/proc/eat_card(obj/item/card/id/card, mob/user)
+ if(card == src)
+ return //no self vore
fused_ids[card.name] = card
card.moveToNullspace()
- playsound(drop_location(),'sound/items/eatfood.ogg', rand(10,50), TRUE)
+ playsound(drop_location(), 'sound/items/eatfood.ogg', rand(10,30), TRUE)
access += card.access
+ if(!isnull(user))
+ balloon_alert(user, "consumed card")
/obj/item/card/id/advanced/heretic/interact_with_atom(atom/target, mob/living/user, list/modifiers)
if(!IS_HERETIC(user))
return NONE
+ if(istype(target, /obj/item/card/id))
+ eat_card(target, user)
+ return ITEM_INTERACT_SUCCESS
if(istype(target, /obj/effect/lock_portal))
clear_portals()
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/antagonists/heretic/knife_effect.dm b/code/modules/antagonists/heretic/knife_effect.dm
index 1bd44921cf957..e11fd79ab9f75 100644
--- a/code/modules/antagonists/heretic/knife_effect.dm
+++ b/code/modules/antagonists/heretic/knife_effect.dm
@@ -12,3 +12,7 @@
AddElement(/datum/element/movetype_handler)
ADD_TRAIT(src, TRAIT_MOVE_FLYING, INNATE_TRAIT)
add_filter("dio_knife", 2, list("type" = "outline", "color" = glow_color, "size" = 1))
+
+/obj/effect/floating_blade/haunted
+ icon = 'icons/obj/weapons/khopesh.dmi'
+ icon_state = "render"
diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
index 61056d4210f40..9d657c7b3e726 100644
--- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
@@ -63,7 +63,7 @@
desc = "Grants you Ashen Passage, a spell that lets you phase out of reality and traverse a short distance, passing though any walls."
gain_text = "He knew how to walk between the planes."
- spell_to_add = /datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash
+ action_to_add = /datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash
cost = 1
@@ -99,7 +99,7 @@
at a nearby enemy, setting them on fire and burning them. If they do not extinguish themselves, \
the beam will continue to another target."
gain_text = "No fire was hot enough to rekindle them. No fire was bright enough to save them. No fire is eternal."
- spell_to_add = /datum/action/cooldown/spell/charged/beam/fire_blast
+ action_to_add = /datum/action/cooldown/spell/charged/beam/fire_blast
cost = 1
research_tree_icon_frame = 7
@@ -145,7 +145,7 @@
If any victims afflicted are in critical condition, they will also instantly die."
gain_text = "The fire was inescapable, and yet, life remained in his charred body. \
The Nightwatcher was a particular man, always watching."
- spell_to_add = /datum/action/cooldown/spell/aoe/fiery_rebirth
+ action_to_add = /datum/action/cooldown/spell/aoe/fiery_rebirth
cost = 1
research_tree_icon_frame = 5
@@ -163,6 +163,8 @@
WITNESS MY ASCENSION, THE ASHY LANTERN BLAZES ONCE MORE!"
ascension_achievement = /datum/award/achievement/misc/ash_ascension
+ announcement_text = "%SPOOKY% Fear the blaze, for the Ashlord, %NAME% has ascended! The flames shall consume all! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_ash.ogg'
/// A static list of all traits we apply on ascension.
var/static/list/traits_to_apply = list(
TRAIT_BOMBIMMUNE,
@@ -187,13 +189,6 @@
/datum/heretic_knowledge/ultimate/ash_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Fear the blaze, for the Ashlord, [user.real_name] has ascended! The flames shall consume all! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_ash.ogg',
- color_override = "pink",
- )
-
var/datum/action/cooldown/spell/fire_sworn/circle_spell = new(user.mind)
circle_spell.Grant(user)
@@ -209,5 +204,4 @@
var/datum/action/cooldown/spell/aoe/fiery_rebirth/fiery_rebirth = locate() in user.actions
fiery_rebirth?.cooldown_time *= 0.16
- if(length(traits_to_apply))
- user.add_traits(traits_to_apply, MAGIC_TRAIT)
+ user.add_traits(traits_to_apply, type)
diff --git a/code/modules/antagonists/heretic/knowledge/blade_lore.dm b/code/modules/antagonists/heretic/knowledge/blade_lore.dm
index 5cffc7bc304f2..993aa20c4287e 100644
--- a/code/modules/antagonists/heretic/knowledge/blade_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/blade_lore.dm
@@ -185,7 +185,7 @@
During this process, you will rapidly regenerate stamina and quickly recover from stuns, however, you will be unable to attack. \
This spell can be cast in rapid succession, but doing so will increase the cooldown."
gain_text = "In the flurry of death, he found peace within himself. Despite insurmountable odds, he forged on."
- spell_to_add = /datum/action/cooldown/spell/realignment
+ action_to_add = /datum/action/cooldown/spell/realignment
cost = 1
@@ -364,7 +364,7 @@
at a target, dealing damage and causing bleeding."
gain_text = "Without thinking, I took the knife of a fallen soldier and threw with all my might. My aim was true! \
The Torn Champion smiled at their first taste of agony, and with a nod, their blades became my own."
- spell_to_add = /datum/action/cooldown/spell/pointed/projectile/furious_steel
+ action_to_add = /datum/action/cooldown/spell/pointed/projectile/furious_steel
cost = 1
/datum/heretic_knowledge/ultimate/blade_final
@@ -380,6 +380,8 @@
I AM UNMATCHED! A STORM OF STEEL AND SILVER IS UPON US! WITNESS MY ASCENSION!"
ascension_achievement = /datum/award/achievement/misc/blade_ascension
+ announcement_text = "%SPOOKY% Master of blades, the Torn Champion's disciple, %NAME% has ascended! Their steel is that which will cut reality in a maelstom of silver! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_blade.ogg'
/datum/heretic_knowledge/ultimate/blade_final/is_valid_sacrifice(mob/living/carbon/human/sacrifice)
. = ..()
@@ -390,13 +392,7 @@
/datum/heretic_knowledge/ultimate/blade_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Master of blades, the Torn Champion's disciple, [user.real_name] has ascended! Their steel is that which will cut reality in a maelstom of silver! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_blade.ogg',
- color_override = "pink",
- )
- ADD_TRAIT(user, TRAIT_NEVER_WOUNDED, name)
+ ADD_TRAIT(user, TRAIT_NEVER_WOUNDED, type)
RegisterSignal(user, COMSIG_HERETIC_BLADE_ATTACK, PROC_REF(on_eldritch_blade))
user.apply_status_effect(/datum/status_effect/protective_blades/recharging, null, 8, 30, 0.25 SECONDS, /obj/effect/floating_blade, 1 MINUTES)
user.add_stun_absorption(
diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
index 6a895a7ffdfd2..d545e258a302e 100644
--- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
@@ -62,7 +62,7 @@
However, people with a star mark will get transported along with another person using the rune."
gain_text = "The distant stars crept into my dreams, roaring and screaming without reason. \
I spoke, and heard my own words echoed back."
- spell_to_add = /datum/action/cooldown/spell/cosmic_rune
+ action_to_add = /datum/action/cooldown/spell/cosmic_rune
cost = 1
@@ -86,7 +86,7 @@
The beam lasts a minute, until the beam is obstructed or until a new target has been found."
gain_text = "After waking in a cold sweat I felt a palm on my scalp, a sigil burned onto me. \
My veins now emitted a strange purple glow, the Beast knows I will surpass its expectations."
- spell_to_add = /datum/action/cooldown/spell/touch/star_touch
+ action_to_add = /datum/action/cooldown/spell/touch/star_touch
cost = 1
/datum/heretic_knowledge/spell/star_blast
@@ -94,7 +94,7 @@
desc = "Fires a projectile that moves very slowly, raising a short-lived wall of cosmic fields where it goes. \
Anyone hit by the projectile will receive burn damage, a knockdown, and give people in a three tile range a star mark."
gain_text = "The Beast was behind me now at all times, with each sacrifice words of affirmation coursed through me."
- spell_to_add = /datum/action/cooldown/spell/pointed/projectile/star_blast
+ action_to_add = /datum/action/cooldown/spell/pointed/projectile/star_blast
cost = 1
/datum/heretic_knowledge/blade_upgrade/cosmic
@@ -199,7 +199,7 @@
desc = "Grants you Cosmic Expansion, a spell that creates a 3x3 area of cosmic fields around you. \
Nearby beings will also receive a star mark."
gain_text = "The ground now shook beneath me. The Beast inhabited me, and their voice was intoxicating."
- spell_to_add = /datum/action/cooldown/spell/conjure/cosmic_expansion
+ action_to_add = /datum/action/cooldown/spell/conjure/cosmic_expansion
cost = 1
/datum/heretic_knowledge/ultimate/cosmic_final
@@ -219,6 +219,8 @@
WITNESS MY ASCENSION!"
ascension_achievement = /datum/award/achievement/misc/cosmic_ascension
+ announcement_text = "%SPOOKY% A Star Gazer has arrived into the station, %NAME% has ascended! This station is the domain of the Cosmos! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_cosmic.ogg'
/// A static list of command we can use with our mob.
var/static/list/star_gazer_commands = list(
/datum/pet_command/idle,
@@ -236,12 +238,6 @@
/datum/heretic_knowledge/ultimate/cosmic_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] A Star Gazer has arrived into the station, [user.real_name] has ascended! This station is the domain of the Cosmos! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_cosmic.ogg',
- color_override = "pink",
- )
var/mob/living/basic/heretic_summon/star_gazer/star_gazer_mob = new /mob/living/basic/heretic_summon/star_gazer(loc)
star_gazer_mob.maxHealth = INFINITY
star_gazer_mob.health = INFINITY
diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
index 976ce2ae7ba4e..cfcd6ea9ceda1 100644
--- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
@@ -214,7 +214,7 @@
This spell also allows you to heal your minions and summons, or restore failing organs to acceptable status."
gain_text = "But they were not out of my reach for long. With every step, the screams grew, until at last \
I learned that they could be silenced."
- spell_to_add = /datum/action/cooldown/spell/touch/flesh_surgery
+ action_to_add = /datum/action/cooldown/spell/touch/flesh_surgery
cost = 1
/datum/heretic_knowledge/summon/raw_prophet
@@ -288,20 +288,14 @@
Reality will bend to THE LORD OF THE NIGHT or be unraveled! WITNESS MY ASCENSION!"
required_atoms = list(/mob/living/carbon/human = 4)
ascension_achievement = /datum/award/achievement/misc/flesh_ascension
+ announcement_text = "%SPOOKY% Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, %NAME% has ascended! Fear the ever twisting hand! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_flesh.ogg'
/datum/heretic_knowledge/ultimate/flesh_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, [user.real_name] has ascended! Fear the ever twisting hand! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_flesh.ogg',
- color_override = "pink",
- )
-
var/datum/action/cooldown/spell/shapeshift/shed_human_form/worm_spell = new(user.mind)
worm_spell.Grant(user)
-
var/datum/antagonist/heretic/heretic_datum = GET_HERETIC(user)
var/datum/heretic_knowledge/limited_amount/flesh_grasp/grasp_ghoul = heretic_datum.get_knowledge(/datum/heretic_knowledge/limited_amount/flesh_grasp)
grasp_ghoul.limit *= 3
diff --git a/code/modules/antagonists/heretic/knowledge/lock_lore.dm b/code/modules/antagonists/heretic/knowledge/lock_lore.dm
index 28e02112fd70e..d323beecc1854 100644
--- a/code/modules/antagonists/heretic/knowledge/lock_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/lock_lore.dm
@@ -117,11 +117,11 @@
/datum/heretic_knowledge/limited_amount/concierge_rite // item that creates 3 max at a time heretic only barriers, probably should limit to 1 only, holy people can also pass
name = "Concierge's Rite"
- desc = "Allows you to transmute a stick of chalk, a wooden plank, and a multitool to create a Labyrinth Handbook. \
+ desc = "Allows you to transmute a crayon, a wooden plank, and a multitool to create a Labyrinth Handbook. \
It can materialize a barricade at range that only you and people resistant to magic can pass. 3 uses."
gain_text = "The Concierge scribbled my name into the Handbook. \"Welcome to your new home, fellow Steward.\""
required_atoms = list(
- /obj/item/toy/crayon/white = 1,
+ /obj/item/toy/crayon = 1,
/obj/item/stack/sheet/mineral/wood = 1,
/obj/item/multitool = 1,
)
@@ -136,7 +136,7 @@
that puts a random item from the victims backpack into your hand."
gain_text = "Consorting with Burglar spirits is frowned upon, but a Steward will always want to learn about new doors."
- spell_to_add = /datum/action/cooldown/spell/pointed/burglar_finesse
+ action_to_add = /datum/action/cooldown/spell/pointed/burglar_finesse
cost = 1
/datum/heretic_knowledge/blade_upgrade/flesh/lock //basically a chance-based weeping avulsion version of the former
@@ -158,7 +158,7 @@
While in refuge, you cannot use your hands or spells, and you are immune to slowdown. \
You are invincible but unable to harm anything. Cancelled by being hit with an anti-magic item."
gain_text = "Jealously, the Guard and the Hound hunted me. But I unlocked my form, and was but a haze, untouchable."
- spell_to_add = /datum/action/cooldown/spell/caretaker
+ action_to_add = /datum/action/cooldown/spell/caretaker
cost = 1
/datum/heretic_knowledge/ultimate/lock_final
@@ -176,6 +176,8 @@
The Labyrinth will be Locked no more, and freedom will be ours! WITNESS US!"
required_atoms = list(/mob/living/carbon/human = 3)
ascension_achievement = /datum/award/achievement/misc/lock_ascension
+ announcement_text = "Delta-class dimensional anomaly detec%SPOOKY% Reality rended, torn. Gates open, doors open, %NAME% has ascended! Fear the tide! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_knock.ogg'
/datum/heretic_knowledge/ultimate/lock_final/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc)
. = ..()
@@ -198,13 +200,6 @@
/datum/heretic_knowledge/ultimate/lock_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "Delta-class dimensional anomaly detec[generate_heretic_text()] Reality rended, torn. Gates open, doors open, [user.real_name] has ascended! Fear the tide! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_knock.ogg',
- color_override = "pink",
- )
-
// buffs
var/datum/action/cooldown/spell/shapeshift/eldritch/ascension/transform_spell = new(user.mind)
transform_spell.Grant(user)
diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
index 2ab75e96c5a78..c5a6930eab799 100644
--- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
@@ -32,7 +32,7 @@
research_tree_icon_state = "moon_blade"
/datum/heretic_knowledge/limited_amount/starting/base_moon/on_gain(mob/user, datum/antagonist/heretic/our_heretic)
- add_traits(user ,TRAIT_EMPATH, REF(src))
+ ADD_TRAIT(user, TRAIT_EMPATH, REF(src))
/datum/heretic_knowledge/moon_grasp
name = "Grasp of Lunacy"
@@ -70,7 +70,7 @@
duration based on their sanity."
gain_text = "The moon smiles upon us all and those who see its true side can bring its joy."
- spell_to_add = /datum/action/cooldown/spell/pointed/moon_smile
+ action_to_add = /datum/action/cooldown/spell/pointed/moon_smile
cost = 1
/datum/heretic_knowledge/mark/moon_mark
@@ -89,7 +89,7 @@
desc = "Grants you Lunar Parade, a spell that - after a short charge - sends a carnival forward \
when hitting someone they are forced to join the parade and suffer hallucinations."
gain_text = "The music like a reflection of the soul compelled them, like moths to a flame they followed"
- spell_to_add = /datum/action/cooldown/spell/pointed/projectile/moon_parade
+ action_to_add = /datum/action/cooldown/spell/pointed/projectile/moon_parade
cost = 1
/datum/heretic_knowledge/moon_amulet
@@ -144,7 +144,7 @@
gain_text = "I grabbed his hand and we rose, those who saw the truth rose with us. \
The ringleader pointed up and the dim light of truth illuminated us further."
- spell_to_add = /datum/action/cooldown/spell/aoe/moon_ringleader
+ action_to_add = /datum/action/cooldown/spell/aoe/moon_ringleader
cost = 1
@@ -162,6 +162,9 @@
WITNESS MY ASCENSION, THE MOON SMILES ONCE MORE AND FOREVER MORE IT SHALL!"
ascension_achievement = /datum/award/achievement/misc/moon_ascension
+ announcement_text = "%SPOOKY% Laugh, for the ringleader %NAME% has ascended! \
+ The truth shall finally devour the lie! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_moon.ogg'
/datum/heretic_knowledge/ultimate/moon_final/is_valid_sacrifice(mob/living/sacrifice)
@@ -174,15 +177,7 @@
/datum/heretic_knowledge/ultimate/moon_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Laugh, for the ringleader [user.real_name] has ascended! \
- The truth shall finally devour the lie! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_moon.ogg',
- color_override = "pink",
- )
-
- ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, REF(src))
+ ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, type)
user.mind.add_antag_datum(/datum/antagonist/lunatic/master)
RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life))
diff --git a/code/modules/antagonists/heretic/knowledge/rust_lore.dm b/code/modules/antagonists/heretic/knowledge/rust_lore.dm
index a2f0a91e69a06..41db760f53ae6 100644
--- a/code/modules/antagonists/heretic/knowledge/rust_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/rust_lore.dm
@@ -104,7 +104,7 @@
Anyone overtop the wall will be throw aside (or upwards) and sustain damage."
gain_text = "Images of foreign and ominous structures began to dance in my mind. Covered head to toe in thick rust, \
they no longer looked man made. Or perhaps they never were in the first place."
- spell_to_add = /datum/action/cooldown/spell/pointed/rust_construction
+ action_to_add = /datum/action/cooldown/spell/pointed/rust_construction
cost = 1
/datum/heretic_knowledge/spell/area_conversion
@@ -112,7 +112,7 @@
desc = "Grants you Aggressive Spread, a spell that spreads rust to nearby surfaces. \
Already rusted surfaces are destroyed \ Also improves the rusting abilities of non rust-heretics."
gain_text = "All wise men know well not to visit the Rusted Hills... Yet the Blacksmith's tale was inspiring."
- spell_to_add = /datum/action/cooldown/spell/aoe/rust_conversion
+ action_to_add = /datum/action/cooldown/spell/aoe/rust_conversion
cost = 1
research_tree_icon_frame = 5
@@ -147,7 +147,7 @@
gain_text = "The corrosion was unstoppable. The rust was unpleasable. \
The Blacksmith was gone, and you hold their blade. Champions of hope, the Rustbringer is nigh!"
- spell_to_add = /datum/action/cooldown/spell/cone/staggered/entropic_plume
+ action_to_add = /datum/action/cooldown/spell/cone/staggered/entropic_plume
cost = 1
@@ -168,6 +168,8 @@
The Blacksmith forges ahead! Rusted Hills, CALL MY NAME! WITNESS MY ASCENSION!"
ascension_achievement = /datum/award/achievement/misc/rust_ascension
+ announcement_text = "%SPOOKY% Fear the decay, for the Rustbringer, %NAME% has ascended! None shall escape the corrosion! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_rust.ogg'
/// If TRUE, then immunities are currently active.
var/immunities_active = FALSE
/// A typepath to an area that we must finish the ritual in.
@@ -208,12 +210,6 @@
/datum/heretic_knowledge/ultimate/rust_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_rust.ogg',
- color_override = "pink",
- )
trigger(loc)
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life))
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm
index 9c29d15ba67c6..6fec632e5102f 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm
@@ -117,7 +117,7 @@
new /obj/effect/temp_visual/dir_setting/curse/grasp_portal(spawn_turf, victim.dir)
playsound(spawn_turf, 'sound/effects/curse/curse2.ogg', 80, TRUE, -1)
var/obj/projectile/curse_hand/hel/hand = new (spawn_turf)
- hand.preparePixelProjectile(victim, spawn_turf)
+ hand.aim_projectile(victim, spawn_turf)
if (QDELETED(hand)) // safety check if above fails - above has a stack trace if it does fail
return
hand.fire()
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm
index 07b126fe74f2f..3dee1c0176f12 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm
@@ -84,7 +84,7 @@ GLOBAL_LIST_EMPTY(heretic_sacrifice_landmarks)
/area/centcom/heretic_sacrifice
name = "Mansus"
icon_state = "heretic"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
ambience_index = AMBIENCE_SPOOKY
sound_environment = SOUND_ENVIRONMENT_CAVE
area_flags = UNIQUE_AREA | NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE | NO_BOH
diff --git a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm
index 05b414fe34634..a09c9cd87973d 100644
--- a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm
@@ -112,7 +112,7 @@
desc = "A charge that must be started on a rusted tile and will destroy any rusted objects you come into contact with, will deal high damage to others and rust around you during the charge."
gain_text = "The hills sparkled now, as I neared them my mind began to wander. I quickly regained my resolve and pushed forward, this last leg would be the most treacherous."
- spell_to_add = /datum/action/cooldown/mob_cooldown/charge/rust
+ action_to_add = /datum/action/cooldown/mob_cooldown/charge/rust
cost = 1
diff --git a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
index 03b4fc477ad1b..d15bb242989cf 100644
--- a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
@@ -36,7 +36,7 @@
You can only phase in and out when you are on a space or misc turf."
gain_text = "You feel like your body can move through space as if you where dust."
- spell_to_add = /datum/action/cooldown/spell/jaunt/space_crawl
+ action_to_add = /datum/action/cooldown/spell/jaunt/space_crawl
cost = 1
diff --git a/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm b/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm
index 7891b50aabcc9..bd7f1cf621c6f 100644
--- a/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm
@@ -35,7 +35,7 @@
Also has a chance to transfer wounds from you to the victim."
gain_text = "\"No matter the man, we bleed all the same.\" That's what the Marshal told me."
- spell_to_add = /datum/action/cooldown/spell/pointed/blood_siphon
+ action_to_add = /datum/action/cooldown/spell/pointed/blood_siphon
cost = 1
/datum/heretic_knowledge/spell/void_prison
@@ -47,7 +47,7 @@
But the only welts made are on my own beating fist. \
My smiling face turns to regard me, reflecting back in glassy eyes the empty path I have been lead down."
- spell_to_add = /datum/action/cooldown/spell/pointed/void_prison
+ action_to_add = /datum/action/cooldown/spell/pointed/void_prison
cost = 1
/datum/heretic_knowledge/spell/cleave
@@ -57,7 +57,7 @@
gain_text = "At first I didn't understand these instruments of war, but the Priest \
told me to use them regardless. Soon, he said, I would know them well."
- spell_to_add = /datum/action/cooldown/spell/pointed/cleave
+ action_to_add = /datum/action/cooldown/spell/pointed/cleave
cost = 1
diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm b/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm
index aa85f31d006c5..0f7c9d9fc70e1 100644
--- a/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm
@@ -22,7 +22,7 @@
However, you will fall unconscious a short time after casting this spell."
gain_text = "My shackles undone in dark fury, their feeble bindings crumble before my power."
- spell_to_add = /datum/action/cooldown/spell/aoe/wave_of_desperation
+ action_to_add = /datum/action/cooldown/spell/aoe/wave_of_desperation
cost = 1
/datum/heretic_knowledge/spell/apetra_vulnera
@@ -32,7 +32,7 @@
Wounds a random limb if no limb is sufficiently damaged."
gain_text = "Flesh opens, and blood spills. My master seeks sacrifice, and I shall appease."
- spell_to_add = /datum/action/cooldown/spell/pointed/apetra_vulnera
+ action_to_add = /datum/action/cooldown/spell/pointed/apetra_vulnera
cost = 1
diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
index f8a3cdf465bd8..5d3795b0ce961 100644
--- a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
@@ -25,7 +25,7 @@
The caster takes 20 brain damage per use."
gain_text = "My mind swings open like a gate, and its insight will let me perceive the truth."
- spell_to_add = /datum/action/cooldown/spell/pointed/mind_gate
+ action_to_add = /datum/action/cooldown/spell/pointed/mind_gate
cost = 1
/datum/heretic_knowledge/unfathomable_curio
diff --git a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
index 664db9969268b..df3ad9a34c7e3 100644
--- a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
@@ -116,22 +116,6 @@
demolition_mod = 1.5
sharpness = SHARP_EDGED
-/obj/item/mutant_hand/shattered_risen/Initialize(mapload)
- . = ..()
- ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
-
-/obj/item/mutant_hand/shattered_risen/visual_equipped(mob/user, slot)
- . = ..()
-
- // Even hand indexes are right hands,
- // Odd hand indexes are left hand
- // ...But also, we swap it intentionally here,
- // so right icon is shown on the left (Because hands)
- if(user.get_held_index_of_item(src) % 2 == 1)
- icon_state = "[base_icon_state]_right"
- else
- icon_state = "[base_icon_state]_left"
-
/datum/heretic_knowledge/rune_carver
name = "Carving Knife"
desc = "Allows you to transmute a knife, a shard of glass, and a piece of paper to create a Carving Knife. \
diff --git a/code/modules/antagonists/heretic/knowledge/starting_lore.dm b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
index d6c9d1bc216a7..8fd0c5a5713f3 100644
--- a/code/modules/antagonists/heretic/knowledge/starting_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
@@ -21,7 +21,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
desc = "Starts your journey into the Mansus. \
Grants you the Mansus Grasp, a powerful and upgradable \
disabling spell that can be cast regardless of having a focus."
- spell_to_add = /datum/action/cooldown/spell/touch/mansus_grasp
+ action_to_add = /datum/action/cooldown/spell/touch/mansus_grasp
cost = 0
is_starting_knowledge = TRUE
@@ -211,7 +211,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
name = "Cloak of Shadow"
desc = "Grants you the spell Cloak of Shadow. This spell will completely conceal your identity in a purple smoke \
for three minutes, assisting you in keeping secrecy. Requires a focus to cast."
- spell_to_add = /datum/action/cooldown/spell/shadow_cloak
+ action_to_add = /datum/action/cooldown/spell/shadow_cloak
cost = 0
is_starting_knowledge = TRUE
@@ -272,7 +272,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
// A golem or an android doesn't have skin!
var/exterior_text = "skin"
// If carbon, it's the limb. If not, it's the body.
- var/ripped_thing = body
+ var/atom/movable/ripped_thing = body
// We will check if it's a carbon's body.
// If it is, we will damage a random bodypart, and check that bodypart for its body type, to select between 'skin' or 'exterior'.
@@ -280,14 +280,15 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
var/mob/living/carbon/carbody = body
var/obj/item/bodypart/bodypart = pick(carbody.bodyparts)
ripped_thing = bodypart
- bodypart.receive_damage(25, sharpness = SHARP_EDGED)
+
+ carbody.apply_damage(25, BRUTE, bodypart, sharpness = SHARP_EDGED)
if(!(bodypart.bodytype & BODYTYPE_ORGANIC))
exterior_text = "exterior"
else
+ body.apply_damage(25, BRUTE, sharpness = SHARP_EDGED)
// If it is not a carbon mob, we will just check biotypes and damage it directly.
if(body.mob_biotypes & (MOB_MINERAL|MOB_ROBOTIC))
exterior_text = "exterior"
- body.apply_damage(25, BRUTE)
// Procure book for flavor text. This is why we call parent at the end.
var/obj/item/book/le_book = locate() in selected_atoms
diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm
index fb4bc57924784..0bb54d6d15798 100644
--- a/code/modules/antagonists/heretic/knowledge/void_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm
@@ -116,7 +116,7 @@
gain_text = "The hum in the still, cold air turns to a cacophonous rattle. \
Over the noise, there is no distinction to the clattering of window panes and the yawning knowledge that ricochets through my skull. \
The doors won't close. I can't keep the cold out now."
- spell_to_add = /datum/action/cooldown/spell/conjure/void_conduit
+ action_to_add = /datum/action/cooldown/spell/conjure/void_conduit
cost = 1
/datum/heretic_knowledge/spell/void_phase
@@ -125,7 +125,7 @@
Additionally causes damage to heathens around your original and target destination."
gain_text = "The entity calls themself the Aristocrat. They effortlessly walk through air like \
nothing - leaving a harsh, cold breeze in their wake. They disappear, and I am left in the blizzard."
- spell_to_add = /datum/action/cooldown/spell/pointed/void_phase
+ action_to_add = /datum/action/cooldown/spell/pointed/void_phase
cost = 1
research_tree_icon_frame = 7
@@ -162,7 +162,7 @@
gain_text = "All is fleeting, but what else stays? I'm close to ending what was started. \
The Aristocrat reveals themselves to me again. They tell me I am late. Their pull is immense, I cannot turn back."
- spell_to_add = /datum/action/cooldown/spell/aoe/void_pull
+ action_to_add = /datum/action/cooldown/spell/aoe/void_pull
cost = 1
@@ -180,6 +180,8 @@
as the world is destroyed before our eyes. The void will return all to nothing, WITNESS MY ASCENSION!"
ascension_achievement = /datum/award/achievement/misc/void_ascension
+ announcement_text = "%SPOOKY% The nobleman of void %NAME% has arrived, stepping along the Waltz that ends worlds! %SPOOKY%"
+ announcement_sound = 'sound/music/antag/heretic/ascend_void.ogg'
///soundloop for the void theme
var/datum/looping_sound/void_loop/sound_loop
///Reference to the ongoing voidstrom that surrounds the heretic
@@ -201,13 +203,7 @@
/datum/heretic_knowledge/ultimate/void_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] The nobleman of void [user.real_name] has arrived, stepping along the Waltz that ends worlds! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/music/antag/heretic/ascend_void.ogg',
- color_override = "pink",
- )
- user.add_traits(list(TRAIT_RESISTLOWPRESSURE, TRAIT_NEGATES_GRAVITY, TRAIT_MOVE_FLYING, TRAIT_FREE_HYPERSPACE_MOVEMENT), MAGIC_TRAIT)
+ user.add_traits(list(TRAIT_RESISTLOWPRESSURE, TRAIT_NEGATES_GRAVITY, TRAIT_MOVE_FLYING, TRAIT_FREE_HYPERSPACE_MOVEMENT), type)
// Let's get this show on the road!
sound_loop = new(user, TRUE, TRUE)
diff --git a/code/modules/antagonists/heretic/magic/burglar_finesse.dm b/code/modules/antagonists/heretic/magic/burglar_finesse.dm
index a90acb8495f14..fec0fb923bbd2 100644
--- a/code/modules/antagonists/heretic/magic/burglar_finesse.dm
+++ b/code/modules/antagonists/heretic/magic/burglar_finesse.dm
@@ -13,10 +13,13 @@
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
- cast_range = 4
+ cast_range = 6
-/datum/action/cooldown/spell/pointed/burglar_finesse/is_valid_target(atom/cast_on)
- return ..() && ishuman(cast_on) && (locate(/obj/item/storage/backpack) in cast_on.contents)
+/datum/action/cooldown/spell/pointed/burglar_finesse/is_valid_target(mob/living/carbon/human/cast_on)
+ if(!istype(cast_on))
+ return FALSE
+ var/obj/item/back_item = cast_on.get_item_by_slot(ITEM_SLOT_BACK)
+ return ..() && back_item?.atom_storage
/datum/action/cooldown/spell/pointed/burglar_finesse/cast(mob/living/carbon/human/cast_on)
. = ..()
@@ -25,12 +28,12 @@
to_chat(owner, span_danger("[cast_on] is protected by holy forces!"))
return FALSE
- var/obj/storage_item = locate(/obj/item/storage/backpack) in cast_on.contents
+ var/obj/storage_item = cast_on.get_item_by_slot(ITEM_SLOT_BACK)
if(isnull(storage_item))
return FALSE
- var/item = pick(storage_item.contents)
+ var/item = pick(storage_item.atom_storage.return_inv(recursive = FALSE))
if(isnull(item))
return FALSE
diff --git a/code/modules/antagonists/heretic/magic/caretaker.dm b/code/modules/antagonists/heretic/magic/caretaker.dm
index b882386329a89..01a9970b20477 100644
--- a/code/modules/antagonists/heretic/magic/caretaker.dm
+++ b/code/modules/antagonists/heretic/magic/caretaker.dm
@@ -24,7 +24,7 @@
/datum/action/cooldown/spell/caretaker/is_valid_target(atom/cast_on)
return isliving(cast_on)
-/datum/action/cooldown/spell/caretaker/before_cast(atom/cast_on)
+/datum/action/cooldown/spell/caretaker/before_cast(mob/living/cast_on)
. = ..()
if(. & SPELL_CANCEL_CAST)
return
@@ -34,6 +34,9 @@
owner.balloon_alert(owner, "other minds nearby!")
return . | SPELL_CANCEL_CAST
+ if(!cast_on.has_status_effect(/datum/status_effect/caretaker_refuge))
+ return SPELL_NO_IMMEDIATE_COOLDOWN // cooldown only on exit
+
/datum/action/cooldown/spell/caretaker/cast(mob/living/cast_on)
. = ..()
diff --git a/code/modules/antagonists/heretic/magic/furious_steel.dm b/code/modules/antagonists/heretic/magic/furious_steel.dm
index 9414ca9d7116d..d72c7fc7c04e9 100644
--- a/code/modules/antagonists/heretic/magic/furious_steel.dm
+++ b/code/modules/antagonists/heretic/magic/furious_steel.dm
@@ -19,9 +19,11 @@
active_msg = "You summon forth three blades of furious silver."
deactive_msg = "You conceal the blades of furious silver."
cast_range = 20
- projectile_type = /obj/effect/floating_blade
+ projectile_type = /obj/projectile/floating_blade
projectile_amount = 3
+ ///Effect of the projectile that surrounds us while the spell is active
+ var/projectile_effect = /obj/effect/floating_blade
/// A ref to the status effect surrounding our heretic on activation.
var/datum/status_effect/protective_blades/blade_effect
@@ -67,7 +69,7 @@
QDEL_NULL(blade_effect)
var/mob/living/living_user = on_who
- blade_effect = living_user.apply_status_effect(/datum/status_effect/protective_blades, null, projectile_amount, 25, 0.66 SECONDS, projectile_type)
+ blade_effect = living_user.apply_status_effect(/datum/status_effect/protective_blades, null, projectile_amount, 25, 0.66 SECONDS, projectile_effect)
RegisterSignal(blade_effect, COMSIG_QDELETING, PROC_REF(on_status_effect_deleted))
/datum/action/cooldown/spell/pointed/projectile/furious_steel/on_deactivation(mob/on_who, refund_cooldown = TRUE)
@@ -100,7 +102,7 @@
name = "blade"
icon = 'icons/effects/eldritch.dmi'
icon_state = "dio_knife"
- speed = 2
+ speed = 0.5
damage = 25
armour_penetration = 100
sharpness = SHARP_EDGED
@@ -167,3 +169,4 @@
deactive_msg = "You conceal the cursed blades."
projectile_amount = 2
projectile_type = /obj/projectile/floating_blade/haunted
+ projectile_effect = /obj/effect/floating_blade/haunted
diff --git a/code/modules/antagonists/heretic/magic/moon_parade.dm b/code/modules/antagonists/heretic/magic/moon_parade.dm
index 6d18c2113f470..49f8c42808219 100644
--- a/code/modules/antagonists/heretic/magic/moon_parade.dm
+++ b/code/modules/antagonists/heretic/magic/moon_parade.dm
@@ -26,12 +26,11 @@
icon_state = "lunar_parade"
damage = 0
damage_type = BURN
- speed = 1
+ speed = 0.2
range = 75
ricochets_max = 40
ricochet_chance = 500
ricochet_incidence_leeway = 0
- pixel_speed_multiplier = 0.2
projectile_piercing = PASSMOB|PASSVEHICLE
///looping sound datum for our projectile.
var/datum/looping_sound/moon_parade/soundloop
diff --git a/code/modules/antagonists/heretic/magic/rust_wave.dm b/code/modules/antagonists/heretic/magic/rust_wave.dm
index b109a068042b9..1464829aa4c6a 100644
--- a/code/modules/antagonists/heretic/magic/rust_wave.dm
+++ b/code/modules/antagonists/heretic/magic/rust_wave.dm
@@ -119,4 +119,4 @@
/obj/projectile/magic/aoe/rust_wave/short
range = 7
- speed = 2
+ speed = 0.5
diff --git a/code/modules/antagonists/heretic/magic/space_crawl.dm b/code/modules/antagonists/heretic/magic/space_crawl.dm
index cce9f46085bc6..74b02c59c10e7 100644
--- a/code/modules/antagonists/heretic/magic/space_crawl.dm
+++ b/code/modules/antagonists/heretic/magic/space_crawl.dm
@@ -7,7 +7,7 @@
*/
/datum/action/cooldown/spell/jaunt/space_crawl
name = "Space Phase"
- desc = "Allows you to phase in and out of existance while in space or misc tiles."
+ desc = "Allows you to phase in and out of existence while in space or misc tiles."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
diff --git a/code/modules/antagonists/heretic/magic/star_blast.dm b/code/modules/antagonists/heretic/magic/star_blast.dm
index e6f7a96811e40..ad36cf9186ace 100644
--- a/code/modules/antagonists/heretic/magic/star_blast.dm
+++ b/code/modules/antagonists/heretic/magic/star_blast.dm
@@ -24,10 +24,9 @@
icon_state = "star_ball"
damage = 20
damage_type = BURN
- speed = 1
+ speed = 0.2
range = 100
knockdown = 4 SECONDS
- pixel_speed_multiplier = 0.2
/// Effect for when the ball hits something
var/obj/effect/explosion_effect = /obj/effect/temp_visual/cosmic_explosion
/// The range at which people will get marked with a star mark.
diff --git a/code/modules/antagonists/heretic/magic/star_touch.dm b/code/modules/antagonists/heretic/magic/star_touch.dm
index d9cd5a05eab2b..e8e824cc71851 100644
--- a/code/modules/antagonists/heretic/magic/star_touch.dm
+++ b/code/modules/antagonists/heretic/magic/star_touch.dm
@@ -201,35 +201,6 @@
if(current_target)
on_beam_hit(current_target)
-/// Checks if the beam is going through an invalid turf
-/datum/status_effect/cosmic_beam/proc/los_check(atom/movable/user, mob/target)
- var/turf/user_turf = user.loc
- if(!istype(user_turf))
- return FALSE
- var/obj/dummy = new(user_turf)
- dummy.pass_flags |= PASSTABLE|PASSGLASS|PASSGRILLE //Grille/Glass so it can be used through common windows
- var/turf/previous_step = user_turf
- var/first_step = TRUE
- for(var/turf/next_step as anything in (get_line(user_turf, target) - user_turf))
- if(first_step)
- for(var/obj/blocker in user_turf)
- if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1))
- continue
- if(blocker.CanPass(dummy, get_dir(user_turf, next_step)))
- continue
- return FALSE // Could not leave the first turf.
- first_step = FALSE
- if(next_step.density)
- qdel(dummy)
- return FALSE
- for(var/atom/movable/movable as anything in next_step)
- if(!movable.CanPass(dummy, get_dir(next_step, previous_step)))
- qdel(dummy)
- return FALSE
- previous_step = next_step
- qdel(dummy)
- return TRUE
-
/// What to add when the beam connects to a target
/datum/status_effect/cosmic_beam/proc/on_beam_hit(mob/living/target)
if(!istype(target, /mob/living/basic/heretic_summon/star_gazer))
diff --git a/code/modules/antagonists/heretic/magic/void_conduit.dm b/code/modules/antagonists/heretic/magic/void_conduit.dm
index 036415269c975..16faf3b1a3844 100644
--- a/code/modules/antagonists/heretic/magic/void_conduit.dm
+++ b/code/modules/antagonists/heretic/magic/void_conduit.dm
@@ -94,7 +94,7 @@
var/mob/living/affected_mob = thing_to_affect
if(affected_mob.can_block_magic(MAGIC_RESISTANCE))
continue
- if(IS_HERETIC(affected_mob))
+ if(IS_HERETIC_OR_MONSTER(affected_mob) || HAS_TRAIT(affected_mob, TRAIT_MANSUS_TOUCHED))
affected_mob.apply_status_effect(/datum/status_effect/void_conduit)
else
affected_mob.apply_status_effect(/datum/status_effect/void_chill, 1)
@@ -116,13 +116,14 @@
falloff_exponent = 20
/datum/status_effect/void_conduit
+ id = "void_conduit"
duration = 15 SECONDS
status_type = STATUS_EFFECT_REPLACE
alert_type = null
/datum/status_effect/void_conduit/on_apply()
- ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "void_conduit")
+ ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, type)
return TRUE
/datum/status_effect/void_conduit/on_remove()
- REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "void_conduit")
+ REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, type)
diff --git a/code/modules/antagonists/heretic/status_effects/buffs.dm b/code/modules/antagonists/heretic/status_effects/buffs.dm
index 3004bdd9ee0ce..362e9750b49c1 100644
--- a/code/modules/antagonists/heretic/status_effects/buffs.dm
+++ b/code/modules/antagonists/heretic/status_effects/buffs.dm
@@ -260,7 +260,7 @@
max_num_blades = 4,
blade_orbit_radius = 20,
time_between_initial_blades = 0.25 SECONDS,
- blade_type = /obj/effect/floating_blade,
+ blade_type = /obj/projectile/floating_blade,
blade_recharge_time = 1 MINUTES,
)
diff --git a/code/modules/antagonists/heretic/status_effects/mark_effects.dm b/code/modules/antagonists/heretic/status_effects/mark_effects.dm
index de895d33caac8..ba8a86340d7ba 100644
--- a/code/modules/antagonists/heretic/status_effects/mark_effects.dm
+++ b/code/modules/antagonists/heretic/status_effects/mark_effects.dm
@@ -235,12 +235,16 @@
/datum/status_effect/eldritch/lock/on_apply()
. = ..()
- ADD_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
+ RegisterSignal(owner, COMSIG_MOB_TRIED_ACCESS, PROC_REF(attempt_access))
/datum/status_effect/eldritch/lock/on_remove()
- REMOVE_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
+ UnregisterSignal(owner, COMSIG_MOB_TRIED_ACCESS)
return ..()
+/datum/status_effect/eldritch/lock/proc/attempt_access(datum/source, obj/door_attempt)
+ SIGNAL_HANDLER
+ return ACCESS_DISALLOWED
+
// MARK OF MOON
/datum/status_effect/eldritch/moon
diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm
index 184ca9c4f77f4..fa2dcee4d36eb 100644
--- a/code/modules/antagonists/highlander/highlander.dm
+++ b/code/modules/antagonists/highlander/highlander.dm
@@ -43,7 +43,7 @@
. = ..()
/datum/antagonist/highlander/greet()
- to_chat(owner, span_boldannounce("Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\
+ to_chat(owner, span_bolddanger("Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it."))
owner.announce_objectives()
@@ -88,7 +88,7 @@
name = "\improper highlander"
/datum/antagonist/highlander/robot/greet()
- to_chat(owner, span_boldannounce("Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\
+ to_chat(owner, span_bolddanger("Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it."))
/datum/antagonist/highlander/robot/give_equipment()
diff --git a/code/modules/antagonists/malf_ai/malf_ai_modules.dm b/code/modules/antagonists/malf_ai/malf_ai_modules.dm
index f91d1b90ba46b..1776371bae9fe 100644
--- a/code/modules/antagonists/malf_ai/malf_ai_modules.dm
+++ b/code/modules/antagonists/malf_ai/malf_ai_modules.dm
@@ -191,30 +191,30 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
set waitfor = FALSE
message_admins("[key_name_admin(owner)][ADMIN_FLW(owner)] has activated AI Doomsday.")
var/pass = prob(10) ? "******" : "hunter2"
- to_chat(owner, "run -o -a 'selfdestruct' ")
+ to_chat(owner, "run -o -a 'selfdestruct' ")
sleep(0.5 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
- to_chat(owner, "Running executable 'selfdestruct'... ")
+ to_chat(owner, "Running executable 'selfdestruct'... ")
sleep(rand(10, 30))
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
owner.playsound_local(owner, 'sound/announcer/alarm/bloblarm.ogg', 50, 0, use_reverb = FALSE)
to_chat(owner, span_userdanger("!!! UNAUTHORIZED SELF-DESTRUCT ACCESS !!!"))
- to_chat(owner, span_boldannounce("This is a class-3 security violation. This incident will be reported to Central Command."))
+ to_chat(owner, span_bolddanger("This is a class-3 security violation. This incident will be reported to Central Command."))
for(var/i in 1 to 3)
sleep(2 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
- to_chat(owner, span_boldannounce("Sending security report to Central Command.....[rand(0, 9) + (rand(20, 30) * i)]%"))
+ to_chat(owner, span_bolddanger("Sending security report to Central Command.....[rand(0, 9) + (rand(20, 30) * i)]%"))
sleep(0.3 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
- to_chat(owner, "auth 'akjv9c88asdf12nb' [pass] ")
+ to_chat(owner, "auth 'akjv9c88asdf12nb' [pass] ")
owner.playsound_local(owner, 'sound/items/timer.ogg', 50, 0, use_reverb = FALSE)
sleep(3 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
@@ -232,7 +232,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
- to_chat(owner, "Y ")
+ to_chat(owner, "Y ")
sleep(1.5 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
@@ -243,7 +243,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
- to_chat(owner, "Y ")
+ to_chat(owner, "Y ")
sleep(rand(15, 25))
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
@@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
- to_chat(owner, "[pass] ")
+ to_chat(owner, "[pass] ")
sleep(4 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
diff --git a/code/modules/antagonists/nightmare/nightmare_organs.dm b/code/modules/antagonists/nightmare/nightmare_organs.dm
index ddfe675d4128a..e4b4528d61657 100644
--- a/code/modules/antagonists/nightmare/nightmare_organs.dm
+++ b/code/modules/antagonists/nightmare/nightmare_organs.dm
@@ -94,13 +94,13 @@
user.temporarilyRemoveItemFromInventory(src, TRUE)
Insert(user)
-/obj/item/organ/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special)
+/obj/item/organ/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special, movement_flags)
. = ..()
if(special != HEART_SPECIAL_SHADOWIFY)
blade = new/obj/item/light_eater
heart_owner.put_in_hands(blade)
-/obj/item/organ/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special)
+/obj/item/organ/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special, movement_flags)
. = ..()
respawn_progress = 0
if(blade && special != HEART_SPECIAL_SHADOWIFY)
diff --git a/code/modules/antagonists/nightmare/nightmare_species.dm b/code/modules/antagonists/nightmare/nightmare_species.dm
index e81819e44fccd..757a6e6db055c 100644
--- a/code/modules/antagonists/nightmare/nightmare_species.dm
+++ b/code/modules/antagonists/nightmare/nightmare_species.dm
@@ -35,7 +35,7 @@
BODY_ZONE_CHEST = /obj/item/bodypart/chest/shadow,
)
-/datum/species/shadow/nightmare/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+/datum/species/shadow/nightmare/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
C.fully_replace_character_name(null, pick(GLOB.nightmare_names))
diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
index 7445b20cb902a..8598a929454b3 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
@@ -653,7 +653,7 @@ GLOBAL_VAR(station_nuke_source)
if(istype(gibbed.loc, /obj/structure/closet/secure_closet/freezer))
var/obj/structure/closet/secure_closet/freezer/freezer = gibbed.loc
if(!freezer.jones)
- to_chat(gibbed, span_boldannounce("You hold onto [freezer] as [source] goes off. \
+ to_chat(gibbed, span_bolddanger("You hold onto [freezer] as [source] goes off. \
Luckily, as [freezer] is lead-lined, you survive."))
freezer.jones = TRUE
return FALSE
diff --git a/code/modules/antagonists/revolution/enemy_of_the_state.dm b/code/modules/antagonists/revolution/enemy_of_the_state.dm
index 90a6431d428b3..d835655b7efd4 100644
--- a/code/modules/antagonists/revolution/enemy_of_the_state.dm
+++ b/code/modules/antagonists/revolution/enemy_of_the_state.dm
@@ -30,7 +30,7 @@
/datum/antagonist/enemy_of_the_state/greet()
. = ..()
to_chat(owner, span_userdanger("The revolution is dead."))
- to_chat(owner, span_boldannounce("You're an enemy of the state to Nanotrasen. You're a loose end to the Syndicate."))
+ to_chat(owner, span_bolddanger("You're an enemy of the state to Nanotrasen. You're a loose end to the Syndicate."))
to_chat(owner, "It's time to live out your days as an exile... Or go out in one last big bang. ")
owner.announce_objectives()
diff --git a/code/modules/antagonists/santa/santa.dm b/code/modules/antagonists/santa/santa.dm
index 2a5eb75e5c801..f3e1cbd02b963 100644
--- a/code/modules/antagonists/santa/santa.dm
+++ b/code/modules/antagonists/santa/santa.dm
@@ -14,7 +14,7 @@
/datum/antagonist/santa/greet()
. = ..()
- to_chat(owner, span_boldannounce("Your objective is to bring joy to the people on this station. You have a magical bag, which generates presents as long as you have it! You can examine the presents to take a peek inside, to make sure that you give the right gift to the right person."))
+ to_chat(owner, span_bolddanger("Your objective is to bring joy to the people on this station. You have a magical bag, which generates presents as long as you have it! You can examine the presents to take a peek inside, to make sure that you give the right gift to the right person."))
/datum/antagonist/santa/proc/give_equipment()
var/mob/living/carbon/human/H = owner.current
diff --git a/code/modules/antagonists/spy/spy_bounty.dm b/code/modules/antagonists/spy/spy_bounty.dm
index 1aa318fb6828d..f45da0fdce832 100644
--- a/code/modules/antagonists/spy/spy_bounty.dm
+++ b/code/modules/antagonists/spy/spy_bounty.dm
@@ -639,7 +639,7 @@
theft_time = 10 SECONDS
black_market_prob = 0
/// What typepath of bot we want to steal.
- var/mob/living/simple_animal/bot/bot_type
+ var/mob/living/bot_type
/// Weakref to the bot we want to steal.
VAR_FINAL/datum/weakref/target_bot_ref
@@ -655,7 +655,7 @@
/datum/spy_bounty/some_bot/init_bounty(datum/spy_bounty_handler/handler)
for(var/datum/spy_bounty/some_bot/existing_bounty in handler.get_all_bounties())
- var/mob/living/simple_animal/bot/existing_bot_type = existing_bounty.bot_type
+ var/mob/living/existing_bot_type = existing_bounty.bot_type
// ensures we don't get two similar bounties.
// may occasionally cast a wider net than we'd desire, but it's not that bad.
if(ispath(bot_type, initial(existing_bot_type.parent_type)))
diff --git a/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm b/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm
index f0d4c4349cef7..8a5b95c849f55 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm
@@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(voidwalker_void)
/area/centcom/voidwalker_void
name = "Voidwalker void"
icon_state = "voidwalker"
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
ambience_index = AMBIENCE_SPOOKY
sound_environment = SOUND_ENVIRONMENT_CAVE
area_flags = UNIQUE_AREA | NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE
diff --git a/code/modules/antagonists/voidwalker/voidwalker_organs.dm b/code/modules/antagonists/voidwalker/voidwalker_organs.dm
index 23f1c6fb2fe47..760caf3c8d854 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_organs.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_organs.dm
@@ -26,7 +26,7 @@
/// Speed modifier given when in gravity
var/datum/movespeed_modifier/speed_modifier = /datum/movespeed_modifier/grounded_voidwalker
/// The void eater weapon
- var/obj/item/glass_breaker = /obj/item/void_eater
+ var/obj/item/glass_breaker
/// Our brain transmit telepathy spell
var/datum/action/transmit = /datum/action/cooldown/spell/list_target/telepathy/voidwalker
@@ -52,7 +52,7 @@
glass_breaker = new/obj/item/void_eater
organ_owner.put_in_hands(glass_breaker)
-/obj/item/organ/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, COMSIG_ENTER_AREA)
@@ -72,8 +72,7 @@
transmit.Remove(organ_owner)
transmit = initial(transmit)
- if(glass_breaker)
- qdel(glass_breaker)
+ QDEL_NULL(glass_breaker)
/obj/item/organ/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering)
SIGNAL_HANDLER
diff --git a/code/modules/antagonists/voidwalker/voidwalker_species.dm b/code/modules/antagonists/voidwalker/voidwalker_species.dm
index 8c417c97773ea..44c2ead61a3d7 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_species.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_species.dm
@@ -43,7 +43,7 @@
siemens_coeff = 0
-/datum/species/voidwalker/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load)
+/datum/species/voidwalker/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
human_who_gained_species.AddComponent(/datum/component/glass_passer)
diff --git a/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm b/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm
index 6b7f733265cae..6fbe461543a90 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm
@@ -32,15 +32,15 @@
icon_state = "paralysis"
/datum/status_effect/void_eatered
+ id = "void_eatered"
duration = 10 SECONDS
remove_on_fullheal = TRUE
+ alert_type = null
/datum/status_effect/void_eatered/on_apply()
. = ..()
-
- ADD_TRAIT(owner, TRAIT_NODEATH, REF(src))
+ ADD_TRAIT(owner, TRAIT_NODEATH, type)
/datum/status_effect/void_eatered/on_remove()
. = ..()
-
- REMOVE_TRAIT(owner, TRAIT_NODEATH, REF(src))
+ REMOVE_TRAIT(owner, TRAIT_NODEATH, type)
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index e56f651a095a8..465765c75a332 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -29,7 +29,7 @@
if(charges > 0)
new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast)
charges--
- user.visible_message(span_boldannounce("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!"))
+ user.visible_message(span_bolddanger("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!"))
else
to_chat(user, span_danger("The unearthly energies that powered the blade are now dormant."))
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm
index 751873c836277..52cd80e7155b8 100644
--- a/code/modules/antagonists/wizard/equipment/soulstone.dm
+++ b/code/modules/antagonists/wizard/equipment/soulstone.dm
@@ -158,9 +158,8 @@
return ..()
/obj/item/soulstone/proc/hot_potato(mob/living/user)
- to_chat(user, span_userdanger("Holy magics residing in \the [src] burn your hand!"))
- var/obj/item/bodypart/affecting = user.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm")
- affecting.receive_damage( 0, 10 ) // 10 burn damage
+ to_chat(user, span_userdanger("Holy magics residing in [src] burn your hand!"))
+ user.apply_damage(10, BURN, user.get_active_hand())
user.emote("scream")
user.update_damage_overlays()
user.dropItemToGround(src)
diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm
index 18e2dae715c34..28432b1ada883 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm
@@ -31,10 +31,10 @@
/// Whether the spell requires wizard garb or not
var/requires_wizard_garb = FALSE
/// Used so you can't have specific spells together
- var/list/no_coexistance_typecache
+ var/list/no_coexistence_typecache
/datum/spellbook_entry/New()
- no_coexistance_typecache = typecacheof(no_coexistance_typecache)
+ no_coexistence_typecache = typecacheof(no_coexistence_typecache)
if(ispath(spell_type))
if(isnull(limit))
@@ -68,13 +68,13 @@
if(!isnull(limit) && times >= limit)
return FALSE
for(var/spell in user.actions)
- if(is_type_in_typecache(spell, no_coexistance_typecache))
+ if(is_type_in_typecache(spell, no_coexistence_typecache))
return FALSE
var/datum/antagonist/wizard/wizard_datum = user.mind.has_antag_datum(/datum/antagonist/wizard)
if(!wizard_datum)
return TRUE
for(var/perks in wizard_datum.perks)
- if(is_type_in_typecache(perks, no_coexistance_typecache))
+ if(is_type_in_typecache(perks, no_coexistence_typecache))
return FALSE
if(is_type_in_list(src, wizard_datum.perks))
to_chat(user, span_warning("This perk already learned!"))
diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm
index e7c204a39e214..585385e9d2ddf 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm
@@ -55,7 +55,7 @@
it will become easier for others to find your item of power."
spell_type = /datum/action/cooldown/spell/lichdom
category = SPELLBOOK_CATEGORY_DEFENSIVE
- no_coexistance_typecache = list(/datum/action/cooldown/spell/splattercasting, /datum/spellbook_entry/perks/wormborn)
+ no_coexistence_typecache = list(/datum/action/cooldown/spell/splattercasting, /datum/spellbook_entry/perks/wormborn)
/datum/spellbook_entry/chuunibyou
name = "Chuuni Invocations"
diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm
index 6b8272ed5b7ad..d65e14578ec32 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm
@@ -77,7 +77,7 @@
spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/gun
category = SPELLBOOK_CATEGORY_OFFENSIVE
cost = 3
- no_coexistance_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage)
+ no_coexistence_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage)
/datum/spellbook_entry/arcane_barrage
name = "Arcane Barrage"
@@ -85,7 +85,7 @@
spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage
category = SPELLBOOK_CATEGORY_OFFENSIVE
cost = 3
- no_coexistance_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/gun)
+ no_coexistence_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/gun)
/datum/spellbook_entry/barnyard
name = "Barnyard Curse"
@@ -99,7 +99,7 @@
draining from you over time. You can replenish it from your victims, specifically their necks."
spell_type = /datum/action/cooldown/spell/splattercasting
category = SPELLBOOK_CATEGORY_OFFENSIVE
- no_coexistance_typecache = list(/datum/action/cooldown/spell/lichdom)
+ no_coexistence_typecache = list(/datum/action/cooldown/spell/lichdom)
/datum/spellbook_entry/sanguine_strike
name = "Exsanguinating Strike"
diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm
index 07c152d113d68..6c4947639f6c5 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm
@@ -60,7 +60,7 @@
desc = "Your soul is infested with mana worms. When you die, you will be reborn as a large worm. \
When the worm dies, it has no such luck. Parasitic infection prevents you from binding your soul to objects."
hud_icon = "wormborn"
- no_coexistance_typecache = list(/datum/action/cooldown/spell/lichdom)
+ no_coexistence_typecache = list(/datum/action/cooldown/spell/lichdom)
/datum/spellbook_entry/perks/wormborn/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy)
. = ..()
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 5f50618e77dfa..5da6816eb8598 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -100,12 +100,12 @@
/obj/item/assembly_holder/update_overlays()
. = ..()
for(var/i in 1 to LAZYLEN(assemblies))
- if(i % 2 == 1)
+ if(IS_LEFT_INDEX(i))
var/obj/item/assembly/assembly = assemblies[i]
. += "[assembly.icon_state]_left"
for(var/left_overlay in assembly.attached_overlays)
. += "[left_overlay]_l"
- if(i % 2 == 0)
+ if(IS_RIGHT_INDEX(i))
var/obj/item/assembly/assembly = assemblies[i]
var/mutable_appearance/right = mutable_appearance(icon, "[assembly.icon_state]_left")
right.transform = matrix(-1, 0, 0, 0, 1, 0)
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 19f853885b5ac..93af285369af9 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -126,26 +126,25 @@
to_chat(victim, span_notice("[src] snaps onto your foot, then falls off uselessly."))
// DOPPLER ADDITION END
else if(!victim.shoes) // DOPPLER EDIT, old code: if(!victim.shoes)
- affecting = victim.get_bodypart(pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
- victim.Paralyze(60)
+ affecting = victim.get_bodypart(pick(GLOB.leg_zones))
+ victim.Paralyze(6 SECONDS)
else
- to_chat(victim, span_notice("Your [victim.shoes] protects you from [src]."))
+ to_chat(victim, span_notice("Your [victim.shoes.name] protects you from [src]."))
if(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND)
if(!victim.gloves)
affecting = victim.get_bodypart(type)
- victim.Stun(60)
+ victim.Stun(6 SECONDS)
else
- to_chat(victim, span_notice("Your [victim.gloves] protects you from [src]."))
+ to_chat(victim, span_notice("Your [victim.gloves.name] protects you from [src]."))
if(affecting)
- if(affecting.receive_damage(1, 0))
- victim.update_damage_overlays()
+ victim.apply_damage(1, BRUTE, affecting, wound_bonus = CANT_WOUND)
else if(ismouse(target))
var/mob/living/basic/mouse/splatted = target
- visible_message(span_boldannounce("SPLAT!"))
+ visible_message(span_bolddanger("SPLAT!"))
splatted.splat() // mousetraps are instadeath for mice
else if(isregalrat(target))
- visible_message(span_boldannounce("Skreeeee!")) //He's simply too large to be affected by a tiny mouse trap.
+ visible_message(span_bolddanger("Skreeeee!")) //He's simply too large to be affected by a tiny mouse trap.
playsound(src, 'sound/effects/snap.ogg', 50, TRUE)
pulse()
@@ -161,7 +160,7 @@
return FALSE
if((HAS_TRAIT(user, TRAIT_DUMB) || HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
var/which_hand = BODY_ZONE_PRECISE_L_HAND
- if(!(user.active_hand_index % 2))
+ if(IS_RIGHT_INDEX(user.active_hand_index))
which_hand = BODY_ZONE_PRECISE_R_HAND
triggered(user, which_hand)
user.visible_message(span_warning("[user] accidentally sets off [src], breaking their fingers."), \
@@ -210,7 +209,7 @@
if(finder)
finder.visible_message(span_warning("[finder] accidentally sets off [src], breaking their fingers."), \
span_warning("You accidentally trigger [src]!"))
- triggered(finder, (finder.active_hand_index % 2 == 0) ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND)
+ triggered(finder, (IS_RIGHT_INDEX(finder.active_hand_index)) ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND)
return TRUE //end the search!
else
visible_message(span_warning("[src] snaps shut!"))
diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm
index 47a2af4651cbc..c2cd3e2844486 100644
--- a/code/modules/atmospherics/environmental/LINDA_fire.dm
+++ b/code/modules/atmospherics/environmental/LINDA_fire.dm
@@ -15,6 +15,28 @@
/turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
return
+/turf/open/proc/set_active_hotspot(obj/effect/hotspot/new_lad)
+ if(active_hotspot == new_lad)
+ return
+ var/hotspot_around = NONE
+ if(active_hotspot)
+ if(new_lad)
+ hotspot_around = active_hotspot.smoothing_junction
+ if(!QDELETED(active_hotspot))
+ QDEL_NULL(active_hotspot)
+ else
+ for(var/direction in GLOB.cardinals)
+ var/turf/open/open = get_step(src, direction)
+ if(!isopenturf(open) || !open.active_hotspot)
+ continue
+ var/existing_directions = open.active_hotspot.smoothing_junction
+ open.active_hotspot.set_smoothed_icon_state(existing_directions | REVERSE_DIR(direction))
+ hotspot_around |= direction
+
+ active_hotspot = new_lad
+ if(active_hotspot)
+ active_hotspot.set_smoothed_icon_state(hotspot_around)
+
/**
* Handles the creation of hotspots and initial activation of turfs.
* Setting the conditions for the reaction to actually happen for gasmixtures
@@ -55,10 +77,13 @@
if(((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && (plas > 0.5 || trit > 0.5 || h2 > 0.5)) || \
((exposed_temperature < FREON_MAXIMUM_BURN_TEMPERATURE) && (freon > 0.5)))
- active_hotspot = new /obj/effect/hotspot(src, exposed_volume*25, exposed_temperature)
+ set_active_hotspot(new /obj/effect/hotspot(src, exposed_volume * 25, exposed_temperature))
+ if(COOLDOWN_FINISHED(src, fire_puff_cooldown))
+ playsound(src, 'sound/effects/fire_puff.ogg', 30)
+ COOLDOWN_START(src, fire_puff_cooldown, 5 SECONDS)
active_hotspot.just_spawned = (current_cycle < SSair.times_fired)
- //remove just_spawned protection if no longer processing this cell
+ //remove just_spawned protection if no longer processing this cell
SSair.add_to_active(src)
/**
@@ -69,7 +94,7 @@
anchored = TRUE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
icon = 'icons/effects/fire.dmi'
- icon_state = "1"
+ icon_state = "light"
layer = GASFIRE_LAYER
plane = ABOVE_GAME_PLANE
blend_mode = BLEND_ADD
@@ -78,6 +103,9 @@
light_power = 1
light_color = LIGHT_COLOR_FIRE
+ /// base sprite used for our icon states when smoothing
+ /// BAAAASICALY the same as icon_state but is helpful to avoid duplicated work
+ var/fire_stage = ""
/**
* Volume is the representation of how big and healthy a fire is.
* Hotspot volume will be divided by turf volume to get the ratio for temperature setting on non bypassing mode.
@@ -93,7 +121,8 @@
var/visual_update_tick = 0
///Are we burning freon?
var/cold_fire = FALSE
-
+ ///the group of hotspots we are a part of
+ var/datum/hot_group/our_hot_group
/obj/effect/hotspot/Initialize(mapload, starting_volume, starting_temperature)
. = ..()
@@ -110,6 +139,24 @@
COMSIG_ATOM_ABSTRACT_ENTERED = PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
+ var/turf/open/our_turf = loc
+ //on creation we check adjacent turfs for hot spot to start grouping, if surrounding do not have hot spots we create our own
+ for(var/turf/open/to_check as anything in our_turf.atmos_adjacent_turfs)
+ if(to_check.active_hotspot)
+ var/obj/effect/hotspot/enemy_spot = to_check.active_hotspot
+ if(!our_hot_group)
+ enemy_spot.our_hot_group.add_to_group(src)
+ else if(our_hot_group != enemy_spot.our_hot_group && enemy_spot.our_hot_group) //if we belongs to a hot group from prior loop and we encounter another hot spot with a group then we merge
+ our_hot_group.merge_hot_groups(enemy_spot.our_hot_group)
+ if(!our_hot_group)//if after loop through all the adjacents turfs and we havent belong to a group yet, make our own
+ our_hot_group = new
+ our_hot_group.add_to_group(src)
+
+/obj/effect/hotspot/set_smoothed_icon_state(new_junction)
+
+ smoothing_junction = new_junction
+
+ update_color()
/**
* Perform interactions between the hotspot and the gasmixture.
@@ -130,7 +177,7 @@
if(!istype(location) || !(location.air))
return
- location.active_hotspot = src
+ location.set_active_hotspot(src)
bypassing = !just_spawned && (volume > CELL_VOLUME*0.95)
@@ -199,7 +246,7 @@
sparkle_overlay.alpha = sparkle_amt * 255
add_overlay(sparkle_overlay)
if(temperature > 400000 && temperature < 1500000) //Lightning because very anime.
- var/mutable_appearance/lightning_overlay = mutable_appearance(icon, "overcharged")
+ var/mutable_appearance/lightning_overlay = mutable_appearance('icons/effects/fire.dmi', "overcharged")
lightning_overlay.blend_mode = BLEND_ADD
add_overlay(lightning_overlay)
if(temperature > 4500000) //This is where noblium happens. Some fusion-y effects.
@@ -264,7 +311,7 @@
perform_exposure()
if(bypassing)
- icon_state = "3"
+ set_fire_stage("heavy")
if(!cold_fire)
location.burn_tile()
@@ -280,20 +327,30 @@
else
if(volume > CELL_VOLUME*0.4)
- icon_state = "2"
+ set_fire_stage("medium")
else
- icon_state = "1"
+ set_fire_stage("light")
if((visual_update_tick++ % 7) == 0)
update_color()
return TRUE
+/obj/effect/hotspot/proc/set_fire_stage(stage)
+ if(fire_stage == stage)
+ return
+ fire_stage = stage
+ icon_state = stage
+ dir = pick(GLOB.cardinals)
+ update_color()
+
/obj/effect/hotspot/Destroy()
SSair.hotspots -= src
var/turf/open/T = loc
if(istype(T) && T.active_hotspot == src)
- T.active_hotspot = null
+ our_hot_group.remove_from_group(src)
+ our_hot_group = null
+ T.set_active_hotspot(null)
return ..()
/obj/effect/hotspot/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
@@ -305,4 +362,95 @@
/obj/effect/hotspot/singularity_pull(atom/singularity, current_size)
return
+/datum/looping_sound/fire
+ mid_sounds = list('sound/effects/fireclip1.ogg' = 1, 'sound/effects/fireclip2.ogg' = 1, 'sound/effects/fireclip3.ogg' = 1, 'sound/effects/fireclip4.ogg' = 1,
+ 'sound/effects/fireclip5.ogg' = 1, 'sound/effects/fireclip6.ogg' = 1, 'sound/effects/fireclip7.ogg' = 1)
+ volume = 30
+ mid_length = 2 SECONDS
+ falloff_distance = 1
+
+#define MIN_SIZE_SOUND 2
+///handle the grouping of hotspot and then determining an average center to play sound in
+/datum/hot_group
+ var/list/obj/effect/hotspot/spot_list = list()
+ ///the sound center turf which the looping sound will play
+ var/turf/open/current_sound_loc
+ var/datum/looping_sound/fire/sound
+ var/tiles_limit = 80 // arbitrary limit so we dont have one giant group
+ ///these lists and average var are to find the average center of a group
+ var/list/x_coord = list()
+ var/list/y_coord = list()
+ var/list/z_coord = list()
+ var/average_x
+ var/average_y
+ var/average_Z
+ ///the range for the sound to drop off based on the size of the group
+ var/drop_off_dist
+ COOLDOWN_DECLARE(update_sound_center)
+
+
+/datum/hot_group/Destroy()
+ . = ..()
+ current_sound_loc = null
+ spot_list = null
+ qdel(sound)
+
+/datum/hot_group/proc/remove_from_group(obj/effect/hotspot/target)
+ spot_list -= target
+ var/turf/open/target_turf = target.loc
+ x_coord -= target_turf.x
+ y_coord -= target_turf.y
+ if(!length(spot_list))
+ qdel(src)
+ return
+
+/datum/hot_group/proc/add_to_group(obj/effect/hotspot/target)
+ spot_list += target
+ target.our_hot_group = src
+ var/turf/open/target_turf = target.loc
+ x_coord += target_turf.x
+ y_coord += target_turf.y
+ z_coord += target_turf.z
+ if(COOLDOWN_FINISHED(src, update_sound_center) && length(spot_list) > MIN_SIZE_SOUND)//arbitrary size to start playing the sound
+ update_sound()
+ COOLDOWN_START(src, update_sound_center, 5 SECONDS)
+
+/datum/hot_group/proc/merge_hot_groups(datum/hot_group/enemy_group)
+ if(length(spot_list) >= tiles_limit || length(enemy_group.spot_list) >= tiles_limit)
+ return
+ var/datum/hot_group/saving_group
+ var/datum/hot_group/sacrificial_group
+ if(length(spot_list) > length(enemy_group.spot_list) || (length(spot_list) == length(enemy_group.spot_list) && prob(50)))//we're bigger take all of their territory!
+ saving_group = src
+ sacrificial_group = enemy_group
+ else
+ saving_group = enemy_group
+ sacrificial_group = src
+ for(var/obj/effect/hotspot/reference as anything in sacrificial_group.spot_list)
+ reference.our_hot_group = saving_group
+ saving_group.spot_list += sacrificial_group.spot_list
+ saving_group.x_coord += sacrificial_group.x_coord
+ saving_group.y_coord += sacrificial_group.y_coord
+ qdel(sacrificial_group)
+ if(COOLDOWN_FINISHED(src, update_sound_center) && length(spot_list) > MIN_SIZE_SOUND)//arbitrary size to start playing the sound
+ update_sound()
+ COOLDOWN_START(src, update_sound_center, 5 SECONDS)
+
+/datum/hot_group/proc/update_sound()
+ //we can draw a cross around the average middle of any globs of group, curves or hollow groups may cause issues with this
+ average_x = round((max(x_coord) + min(x_coord))/2)
+ average_y = round((max(y_coord) + min(y_coord))/2)
+ average_Z = round((min(z_coord) + max(z_coord))/2)
+ drop_off_dist = max((max(y_coord) - min(y_coord)), (max(x_coord) - min(x_coord)), 1)// pick the largest value between the width and length of the group to determine sound drop off
+ var/turf/open/sound_turf = locate(average_x, average_y, average_Z)
+ if(sound)
+ sound.falloff_distance = drop_off_dist
+ if(sound_turf != current_sound_loc)
+ sound.parent = sound_turf
+ return
+ sound = new(sound_turf, TRUE)
+ sound.falloff_distance = drop_off_dist
+ current_sound_loc = sound_turf
+
+#undef MIN_SIZE_SOUND
#undef INSUFFICIENT
diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
index dc56aa3fda7f7..ebdb64b9afd9d 100644
--- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
+++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
@@ -37,7 +37,7 @@
///Are we active?
var/excited = FALSE
///Our gas mix
- var/datum/gas_mixture/turf/air
+ var/datum/gas_mixture/air
///If there is an active hotspot on us store a reference to it here
var/obj/effect/hotspot/active_hotspot
@@ -50,6 +50,8 @@
///gas IDs of current active gas overlays
var/list/atmos_overlay_types
var/significant_share_ticker = 0
+ ///the cooldown on playing a fire starting sound each time a tile is ignited
+ COOLDOWN_DECLARE(fire_puff_cooldown)
#ifdef TRACK_MAX_SHARE
var/max_share = 0
#endif
@@ -693,5 +695,6 @@ Then we space some of our heat, and think about if we should stop conducting.
temperature += heat / heat_capacity //The higher your own heat cap the less heat you get from this arrangement
sharer.temperature -= heat / sharer.heat_capacity
+
#undef LAST_SHARE_CHECK
#undef PLANET_SHARE_CHECK
diff --git a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm
index 1e9045d82279c..47287197d4354 100644
--- a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm
+++ b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm
@@ -17,6 +17,8 @@
/// Current alert level of our air alarm.
/// [AIR_ALARM_ALERT_NONE], [AIR_ALARM_ALERT_MINOR], [AIR_ALARM_ALERT_SEVERE]
var/danger_level = AIR_ALARM_ALERT_NONE
+ /// Current alert level of the area of our air alarm.
+ var/area_danger = FALSE
/// Currently selected mode of the alarm. An instance of [/datum/air_alarm_mode].
var/datum/air_alarm_mode/selected_mode
@@ -245,7 +247,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
data["siliconUser"] = HAS_SILICON_ACCESS(user)
data["emagged"] = (obj_flags & EMAGGED ? 1 : 0)
data["dangerLevel"] = danger_level
- data["atmosAlarm"] = !!my_area.active_alarms[ALARM_ATMOS]
+ data["atmosAlarm"] = !!area_danger
data["fireAlarm"] = my_area.fire
data["faultStatus"] = my_area.fault_status
data["faultLocation"] = my_area.fault_location
@@ -523,7 +525,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
var/color
if(danger_level == AIR_ALARM_ALERT_HAZARD)
color = "#FF0022" // red
- else if(danger_level == AIR_ALARM_ALERT_WARNING || my_area.active_alarms[ALARM_ATMOS])
+ else if(danger_level == AIR_ALARM_ALERT_WARNING || area_danger)
color = "#FFAA00" // yellow
else
color = "#00FFCC" // teal
@@ -553,7 +555,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
var/state
if(danger_level == AIR_ALARM_ALERT_HAZARD)
state = "alarm1"
- else if(danger_level == AIR_ALARM_ALERT_WARNING || my_area.active_alarms[ALARM_ATMOS])
+ else if(danger_level == AIR_ALARM_ALERT_WARNING || area_danger)
state = "alarm2"
else
state = "alarm0"
@@ -573,6 +575,8 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
var/old_danger = danger_level
danger_level = AIR_ALARM_ALERT_NONE
+ var/old_area_danger = area_danger
+ area_danger = my_area.active_alarms[ALARM_ATMOS]
var/total_moles = environment.total_moles()
var/pressure = environment.return_pressure()
@@ -624,7 +628,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
alarm_manager.clear_alarm(ALARM_ATMOS)
warning_message = null
- if(old_danger != danger_level)
+ if(old_danger != danger_level || old_area_danger != area_danger)
update_appearance()
selected_mode.replace(my_area, pressure)
diff --git a/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm b/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm
index 7feee7f9cae4f..5263ae26c6d64 100644
--- a/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm
+++ b/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm
@@ -96,7 +96,7 @@
return
connected_alarm.select_mode(parent.get_creator(), options_map[mode.value])
- connected_alarm.investigate_log("was turned to [connected_alarm.selected_mode.name] by [parent.get_creator()]")
+ connected_alarm.investigate_log("was turned to [connected_alarm.selected_mode.name] by [parent.get_creator()]", INVESTIGATE_ATMOS)
/obj/item/circuit_component/air_alarm
display_name = "Air Alarm Core Control"
diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm
index 99e014d564b86..9705246fa593c 100644
--- a/code/modules/atmospherics/machinery/atmosmachinery.dm
+++ b/code/modules/atmospherics/machinery/atmosmachinery.dm
@@ -26,7 +26,7 @@
///Check if the object can be unwrenched
var/can_unwrench = FALSE
///Bitflag of the initialized directions (NORTH | SOUTH | EAST | WEST)
- var/initialize_directions = 0
+ var/initialize_directions = NONE
///The color of the pipe
var/pipe_color = COLOR_VERY_LIGHT_GRAY
///What layer the pipe is in (from 1 to 5, default 3)
@@ -41,7 +41,7 @@
var/image/pipe_vision_img = null
///The type of the device (UNARY, BINARY, TRINARY, QUATERNARY)
- var/device_type = 0
+ var/device_type = NONE
///The lists of nodes that a pipe/device has, depends on the device_type var (from 1 to 4)
var/list/obj/machinery/atmospherics/nodes
@@ -257,8 +257,7 @@
* Return a list of the nodes that can connect to other machines, get called by atmos_init()
*/
/obj/machinery/atmospherics/proc/get_node_connects()
- var/list/node_connects = list()
- node_connects.len = device_type
+ var/list/node_connects[device_type] //empty list of size device_type
var/init_directions = get_init_directions()
for(var/i in 1 to device_type)
diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm
index 6308e1eee611e..a7ad6f4664fb2 100644
--- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm
+++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm
@@ -29,7 +29,7 @@
to_chat(user, span_notice("You see how the [worn_item] changes color, it's now pressure proof."))
worn_item.name = "pressure-resistant [worn_item.name]"
worn_item.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- worn_item.add_atom_colour("#00fff7", FIXED_COLOUR_PRIORITY)
+ worn_item.add_atom_colour(color_transition_filter("#00fff7", SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY)
worn_item.min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
worn_item.cold_protection = worn_item.body_parts_covered
worn_item.clothing_flags |= STOPSPRESSUREDAMAGE
diff --git a/code/modules/atmospherics/machinery/components/tank.dm b/code/modules/atmospherics/machinery/components/tank.dm
index 6aa23f84e934b..118e1444ad68e 100644
--- a/code/modules/atmospherics/machinery/components/tank.dm
+++ b/code/modules/atmospherics/machinery/components/tank.dm
@@ -31,6 +31,8 @@
///The image showing the gases inside of the tank
var/image/window
+ /// The open node directions of the tank, assuming that the tank is facing NORTH.
+ var/open_ports = NONE
/// The volume of the gas mixture
var/volume = 2500 //in liters
/// The max pressure of the gas mixture before damaging the tank
@@ -97,7 +99,8 @@
// Mapped in tanks should automatically connect to adjacent pipenets in the direction set in dir
if(mapload)
- initialize_directions = dir
+ set_portdir_relative(dir, TRUE)
+ set_init_directions()
return INITIALIZE_HINT_LATELOAD
@@ -151,28 +154,60 @@
refresh_window()
///////////////////////////////////////////////////////////////////
-// Pipenet stuff
-
-/obj/machinery/atmospherics/components/tank/return_analyzable_air()
- return air_contents
+// Port stuff
+
+/**
+ * Enables/Disables a port direction in var/open_ports. \
+ * Use this, then call set_init_directions() instead of setting initialize_directions directly \
+ * This system exists because tanks not having all initialize_directions set correctly breaks shuttle rotations
+ */
+/obj/machinery/atmospherics/components/tank/proc/set_portdir_relative(relative_port_dir, enable)
+ ASSERT(!isnull(enable), "Did not receive argument enable")
+
+ // Rotate the given dir so that it's relative to north
+ var/port_dir
+ if(dir == NORTH) // We're already facing north, no rotation needed
+ port_dir = relative_port_dir
+ else
+ var/offnorth_angle = dir2angle(dir)
+ port_dir = turn(relative_port_dir, offnorth_angle)
-/obj/machinery/atmospherics/components/tank/return_airs_for_reconcilation(datum/pipeline/requester)
- . = ..()
- if(!air_contents)
+ if(enable)
+ open_ports |= port_dir
+ else
+ open_ports &= ~port_dir
+
+/**
+ * Toggles a port direction in var/open_ports \
+ * Use this, then call set_init_directions() instead of setting initialize_directions directly \
+ * This system exists because tanks not having all initialize_directions set correctly breaks shuttle rotations
+ */
+/obj/machinery/atmospherics/components/tank/proc/toggle_portdir_relative(relative_port_dir)
+ var/toggle = ((initialize_directions & relative_port_dir) ? FALSE : TRUE)
+ set_portdir_relative(relative_port_dir, toggle)
+
+/obj/machinery/atmospherics/components/tank/set_init_directions()
+ if(!open_ports)
+ initialize_directions = NONE
return
- . += air_contents
-/obj/machinery/atmospherics/components/tank/return_pipenets_for_reconcilation(datum/pipeline/requester)
- . = ..()
- var/datum/merger/merge_group = GetMergeGroup(merger_id, merger_typecache)
- for(var/obj/machinery/atmospherics/components/tank/tank as anything in merge_group.members)
- . += tank.parents
+ //We're rotating open_ports relative to dir, and
+ //setting initialize_directions to that rotated dir
+ var/relative_port_dirs = NONE
+ var/dir_angle = dir2angle(dir)
+ for(var/cardinal in GLOB.cardinals)
+ var/current_dir = cardinal & open_ports
+ if(!current_dir)
+ continue
-/obj/machinery/atmospherics/components/tank/proc/toggle_side_port(new_dir)
- if(initialize_directions & new_dir)
- initialize_directions &= ~new_dir
- else
- initialize_directions |= new_dir
+ var/rotated_dir = turn(current_dir, -dir_angle)
+ relative_port_dirs |= rotated_dir
+
+ initialize_directions = relative_port_dirs
+
+/obj/machinery/atmospherics/components/tank/proc/toggle_side_port(port_dir)
+ toggle_portdir_relative(port_dir)
+ set_init_directions()
for(var/i in 1 to length(nodes))
var/obj/machinery/atmospherics/components/node = nodes[i]
@@ -195,6 +230,24 @@
update_parents()
+///////////////////////////////////////////////////////////////////
+// Pipenet stuff
+
+/obj/machinery/atmospherics/components/tank/return_analyzable_air()
+ return air_contents
+
+/obj/machinery/atmospherics/components/tank/return_airs_for_reconcilation(datum/pipeline/requester)
+ . = ..()
+ if(!air_contents)
+ return
+ . += air_contents
+
+/obj/machinery/atmospherics/components/tank/return_pipenets_for_reconcilation(datum/pipeline/requester)
+ . = ..()
+ var/datum/merger/merge_group = GetMergeGroup(merger_id, merger_typecache)
+ for(var/obj/machinery/atmospherics/components/tank/tank as anything in merge_group.members)
+ . += tank.parents
+
///////////////////////////////////////////////////////////////////
// Merger handling
@@ -268,10 +321,14 @@
window = image(icon, icon_state = "window-bg", layer = FLOAT_LAYER)
+ var/static/alpha_filter
+ if(!alpha_filter) // Gotta do this separate since the icon may not be correct at world init
+ alpha_filter = filter(type="alpha", icon = icon('icons/obj/pipes_n_cables/stationary_canisters.dmi', "window-bg"))
+
var/list/new_underlays = list()
for(var/obj/effect/overlay/gas/gas as anything in air_contents.return_visuals(get_turf(src)))
var/image/new_underlay = image(gas.icon, icon_state = gas.icon_state, layer = FLOAT_LAYER)
- new_underlay.filters = alpha_mask_filter(icon = icon(icon, icon_state = "window-bg"))
+ new_underlay.filters = alpha_filter
new_underlays += new_underlay
var/image/foreground = image(icon, icon_state = "window-fg", layer = FLOAT_LAYER)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 70cafb11be888..97b9741701f8a 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -74,7 +74,6 @@
circuit = /obj/item/circuitboard/machine/cryo_tube
occupant_typecache = list(/mob/living/carbon, /mob/living/simple_animal)
processing_flags = NONE
- fair_market_price = 10
payment_department = ACCOUNT_MED
use_power = IDLE_POWER_USE
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.75
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 4fcfe1582599d..25122b08a2191 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -690,7 +690,7 @@
shielding_powered = !shielding_powered
SSair.start_processing_machine(src)
message_admins("[ADMIN_LOOKUPFLW(user)] turned [shielding_powered ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] powered shielding.")
- user.investigate_log("turned [shielding_powered ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] powered shielding.")
+ user.investigate_log("turned [shielding_powered ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] powered shielding.", INVESTIGATE_ATMOS)
update_appearance()
/// Ejects tank from canister, if any
@@ -698,8 +698,8 @@
if(!holding)
return FALSE
if(valve_open)
- message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_boldannounce("air")].")
- user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_boldannounce("air")].", INVESTIGATE_ATMOS)
+ message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_bolddanger("air")].")
+ user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_bolddanger("air")].", INVESTIGATE_ATMOS)
replace_tank(user, FALSE)
return TRUE
@@ -712,7 +712,7 @@
suppress_reactions = !suppress_reactions
SSair.start_processing_machine(src)
message_admins("[ADMIN_LOOKUPFLW(user)] turned [suppress_reactions ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] reaction suppression.")
- user.investigate_log("turned [suppress_reactions ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] reaction suppression.")
+ user.investigate_log("turned [suppress_reactions ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] reaction suppression.", INVESTIGATE_ATMOS)
/obj/machinery/portable_atmospherics/canister/proc/recolor(datum/greyscale_modify_menu/menu)
set_greyscale(menu.split_colors, menu.config.type)
diff --git a/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm b/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm
index 434f243d6a3ca..60f3ac82bb8f9 100644
--- a/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm
@@ -153,7 +153,7 @@
internal_tank.suppress_reactions = !internal_tank.suppress_reactions
SSair.start_processing_machine(internal_tank)
message_admins("[ADMIN_LOOKUPFLW(usr)] turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.")
- usr.investigate_log("turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.")
+ usr.investigate_log("turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.", INVESTIGATE_ATMOS)
. = TRUE
update_appearance()
diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
index 8284b212efc44..7abeb95477d70 100644
--- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
+++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
@@ -220,7 +220,7 @@
return FALSE
if(!user)
return FALSE
- if(!user.transferItemToLoc(new_tank, src))
+ if(new_tank && !user.transferItemToLoc(new_tank, src))
return FALSE
if(holding && new_tank)//for when we are actually switching tanks
diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm
index 36d5bf4eb7c5d..99b75afa0f64c 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -163,7 +163,7 @@
suppress_reactions = !suppress_reactions
SSair.start_processing_machine(src)
message_admins("[ADMIN_LOOKUPFLW(usr)] turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.")
- usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.")
+ usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.", INVESTIGATE_ATMOS)
. = TRUE
update_appearance()
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index 29759e52e4278..b1b094c9db014 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -185,7 +185,7 @@
suppress_reactions = !suppress_reactions
SSair.start_processing_machine(src)
message_admins("[ADMIN_LOOKUPFLW(usr)] turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.")
- usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.")
+ usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.", INVESTIGATE_ATMOS)
. = TRUE
update_appearance()
diff --git a/code/modules/autowiki/pages/fishing.dm b/code/modules/autowiki/pages/fishing.dm
index eab26bd6c6c03..ce2872235bb4a 100644
--- a/code/modules/autowiki/pages/fishing.dm
+++ b/code/modules/autowiki/pages/fishing.dm
@@ -44,7 +44,7 @@
if(fish::breeding_timeout != def_breeding)
extra_info += "It takes [DisplayTimeText(fish::breeding_timeout)] to reproduce instead of [def_breeding_text]"
if(length(extra_info))
- description += " [extra_info.Join(extra_info," ")]"
+ description += " [extra_info.Join(" ")]"
var/list/output_list = list(
"name" = full_capitalize(escape_value(fish::name)),
diff --git a/code/modules/awaymissions/mission_code/Beach.dm b/code/modules/awaymissions/mission_code/Beach.dm
index 7f0e27c090ae2..0755389c030ca 100644
--- a/code/modules/awaymissions/mission_code/Beach.dm
+++ b/code/modules/awaymissions/mission_code/Beach.dm
@@ -5,7 +5,7 @@
base_lighting_alpha = 255
base_lighting_color = "#FFFFCC"
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
ambientsounds = list('sound/ambience/beach/shore.ogg', 'sound/ambience/beach/seag1.ogg','sound/ambience/beach/seag2.ogg','sound/ambience/beach/seag3.ogg','sound/ambience/misc/ambiodd.ogg','sound/ambience/medical/ambinice.ogg')
/obj/item/paper/fluff/old_pirate_note
diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm
index a59a491d4926f..f80c4c12ca113 100644
--- a/code/modules/awaymissions/mission_code/murderdome.dm
+++ b/code/modules/awaymissions/mission_code/murderdome.dm
@@ -1,19 +1,14 @@
/obj/structure/window/reinforced/fulltile/indestructible
name = "robust window"
+ move_resist = MOVE_FORCE_OVERPOWERING
flags_1 = PREVENT_CLICK_UNDER_1
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
-/obj/structure/window/reinforced/fulltile/indestructible/screwdriver_act(mob/living/user, obj/item/tool)
- return NONE
-
-/obj/structure/window/reinforced/fulltile/indestructible/wrench_act(mob/living/user, obj/item/tool)
- return NONE
-
-/obj/structure/window/reinforced/fulltile/indestructible/crowbar_act(mob/living/user, obj/item/tool)
- return NONE
/obj/structure/grille/indestructible
+ desc = "A STRONG framework of hardened plasteel rods, that you cannot possibly get through. If you were an engineer you would be drooling over its construction right now."
+ move_resist = MOVE_FORCE_OVERPOWERING
obj_flags = CONDUCTS_ELECTRICITY
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
diff --git a/code/modules/basketball/basketball_map_loading.dm b/code/modules/basketball/basketball_map_loading.dm
index 469167367c0f0..5ed18997dde40 100644
--- a/code/modules/basketball/basketball_map_loading.dm
+++ b/code/modules/basketball/basketball_map_loading.dm
@@ -31,7 +31,7 @@
requires_power = FALSE
static_lighting = FALSE
base_lighting_alpha = 255
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
flags_1 = NONE
area_flags = UNIQUE_AREA | NOTELEPORT | NO_DEATH_MESSAGE | BLOCK_SUICIDE
diff --git a/code/modules/bitrunning/alerts.dm b/code/modules/bitrunning/alerts.dm
index 54738b594c22d..478ae3c04cbd3 100644
--- a/code/modules/bitrunning/alerts.dm
+++ b/code/modules/bitrunning/alerts.dm
@@ -7,6 +7,7 @@
name = "Domain Completed"
desc = "The domain is completed. Activate to exit."
timeout = 20 SECONDS
+ clickable_glow = TRUE
/atom/movable/screen/alert/bitrunning/qserver_domain_complete/Click(location, control, params)
. = ..()
diff --git a/code/modules/bitrunning/areas.dm b/code/modules/bitrunning/areas.dm
index 0656f9d65b389..f0ad122effc7c 100644
--- a/code/modules/bitrunning/areas.dm
+++ b/code/modules/bitrunning/areas.dm
@@ -15,7 +15,7 @@
icon_state = "bit_ruin"
icon = 'icons/area/areas_station.dmi'
area_flags = UNIQUE_AREA | NOTELEPORT | EVENT_PROTECTED | HIDDEN_AREA | UNLIMITED_FISHING
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
requires_power = FALSE
/area/virtual_domain/fullbright
diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm
index 7925461652a00..9fdfe1f629ec2 100644
--- a/code/modules/bitrunning/components/avatar_connection.dm
+++ b/code/modules/bitrunning/components/avatar_connection.dm
@@ -64,7 +64,9 @@
var/alias = our_client?.prefs?.read_preference(/datum/preference/name/hacker_alias) || pick(GLOB.hacker_aliases)
if(alias && avatar.real_name != alias)
- avatar.fully_replace_character_name(avatar.real_name, alias)
+ avatar.fully_replace_character_name(newname = alias)
+
+ update_avatar_id()
for(var/skill_type in old_mind.known_skills)
avatar.mind.set_experience(skill_type, old_mind.get_skill_exp(skill_type), silent = TRUE)
@@ -74,15 +76,15 @@
avatar.set_temp_blindness(1 SECONDS) // I'm in
-/datum/component/avatar_connection/PostTransfer()
+/datum/component/avatar_connection/PostTransfer(datum/new_parent)
var/obj/machinery/netpod/pod = netpod_ref?.resolve()
if(isnull(pod))
return COMPONENT_INCOMPATIBLE
- if(!isliving(parent))
+ if(!isliving(new_parent))
return COMPONENT_INCOMPATIBLE
- pod.avatar_ref = WEAKREF(parent)
+ pod.avatar_ref = WEAKREF(new_parent)
/datum/component/avatar_connection/RegisterWithParent()
@@ -111,6 +113,20 @@
))
+/// Updates our avatar's ID to match our avatar's name.
+/datum/component/avatar_connection/proc/update_avatar_id()
+ var/mob/living/avatar = parent
+ var/obj/item/card/id/our_id = locate() in avatar.get_all_contents()
+ if(isnull(our_id))
+ return
+
+ our_id.registered_name = avatar.real_name
+ our_id.update_label()
+ our_id.update_icon()
+ if(our_id.registered_account)
+ our_id.registered_account.account_holder = avatar.real_name
+
+
/// Disconnects the avatar and returns the mind to the old_body.
/datum/component/avatar_connection/proc/full_avatar_disconnect(cause_damage = FALSE, datum/source)
#ifndef UNIT_TESTS
diff --git a/code/modules/bitrunning/components/virtual_entity.dm b/code/modules/bitrunning/components/virtual_entity.dm
index db81f376a8094..dba5e9db34ec3 100644
--- a/code/modules/bitrunning/components/virtual_entity.dm
+++ b/code/modules/bitrunning/components/virtual_entity.dm
@@ -31,7 +31,7 @@
/datum/component/virtual_entity/proc/jailbreak_mobs()
SIGNAL_HANDLER
- to_chat(parent, span_boldannounce("You shiver for a moment with a sense of clarity you haven't felt before."))
+ to_chat(parent, span_bolddanger("You shiver for a moment with a sense of clarity you haven't felt before."))
to_chat(parent, span_notice("You could go anywhere , do anything ! You could leave this simulation right now if you wanted!"))
to_chat(parent, span_danger("But be warned, quantum entanglement will interfere with any previous lives."))
to_chat(parent, span_notice("You'll have just one chance to go nova, and there's no turning back."))
diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm
index 17b768c54d08f..dd81a0f463ed0 100644
--- a/code/modules/bitrunning/objects/disks.dm
+++ b/code/modules/bitrunning/objects/disks.dm
@@ -185,3 +185,9 @@
/obj/item/crusher_trophy/vortex_talisman,
/obj/item/crusher_trophy/ice_demon_cube,
)
+
+/obj/item/bitrunning_disk/item/mini_uzi
+ name = "bitrunning gear: mini-uzi"
+ selectable_items = list(
+ /obj/item/gun/ballistic/automatic/mini_uzi,
+ )
diff --git a/code/modules/bitrunning/objects/vendor.dm b/code/modules/bitrunning/objects/vendor.dm
index d44630bc3beed..f373a8617b445 100644
--- a/code/modules/bitrunning/objects/vendor.dm
+++ b/code/modules/bitrunning/objects/vendor.dm
@@ -33,7 +33,7 @@
/obj/machinery/computer/order_console/bitrunning/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries)
var/list/things_to_order = list()
for(var/datum/orderable_item/item as anything in groceries)
- things_to_order[item.item_path] = groceries[item]
+ things_to_order[item.purchase_path] = groceries[item]
var/datum/supply_pack/bitrunning/pack = new(
purchaser = purchaser, \
diff --git a/code/modules/bitrunning/orders/bepis.dm b/code/modules/bitrunning/orders/bepis.dm
index 4b7253bdaf24a..f10eaaf3245a2 100644
--- a/code/modules/bitrunning/orders/bepis.dm
+++ b/code/modules/bitrunning/orders/bepis.dm
@@ -2,18 +2,18 @@
category_index = CATEGORY_BEPIS
/datum/orderable_item/bepis/circuit_stack
- item_path = /obj/item/stack/circuit_stack/full
+ purchase_path = /obj/item/stack/circuit_stack/full
cost_per_order = 150
/datum/orderable_item/bepis/survival_pen
- item_path = /obj/item/pen/survival
+ purchase_path = /obj/item/pen/survival
cost_per_order = 150
/datum/orderable_item/bepis/party_sleeper
- item_path = /obj/item/circuitboard/machine/sleeper/party
+ purchase_path = /obj/item/circuitboard/machine/sleeper/party
cost_per_order = 750
desc = "A decommissioned sleeper circuitboard, repurposed for recreational purposes."
/datum/orderable_item/bepis/sprayoncan
- item_path = /obj/item/toy/sprayoncan
+ purchase_path = /obj/item/toy/sprayoncan
cost_per_order = 750
diff --git a/code/modules/bitrunning/orders/flair.dm b/code/modules/bitrunning/orders/flair.dm
index ef36348eb6ae9..0b1b79b03d0b9 100644
--- a/code/modules/bitrunning/orders/flair.dm
+++ b/code/modules/bitrunning/orders/flair.dm
@@ -2,39 +2,39 @@
category_index = CATEGORY_BITRUNNING_FLAIR
/datum/orderable_item/bitrunning_flair/cornchips
- item_path = /obj/item/food/cornchips
+ purchase_path = /obj/item/food/cornchips
cost_per_order = 100
/datum/orderable_item/bitrunning_flair/mountain_wind
- item_path = /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind
+ purchase_path = /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind
cost_per_order = 100
/datum/orderable_item/bitrunning_flair/pwr_game
- item_path = /obj/item/reagent_containers/cup/soda_cans/pwr_game
+ purchase_path = /obj/item/reagent_containers/cup/soda_cans/pwr_game
cost_per_order = 200
/datum/orderable_item/bitrunning_flair/grey_bull
- item_path = /obj/item/reagent_containers/cup/soda_cans/grey_bull
+ purchase_path = /obj/item/reagent_containers/cup/soda_cans/grey_bull
cost_per_order = 200
/datum/orderable_item/bitrunning_flair/medkit
- item_path = /obj/item/storage/medkit/brute
+ purchase_path = /obj/item/storage/medkit/brute
desc = "Don't beat yourself up, it's just a game!"
cost_per_order = 500
/datum/orderable_item/bitrunning_flair/medkit_fire
- item_path = /obj/item/storage/medkit/fire
+ purchase_path = /obj/item/storage/medkit/fire
desc = "Great after heated gaming sessions."
cost_per_order = 500
/datum/orderable_item/bitrunning_flair/oval_sunglasses
- item_path = /obj/item/clothing/glasses/sunglasses/oval
+ purchase_path = /obj/item/clothing/glasses/sunglasses/oval
cost_per_order = 1000
/datum/orderable_item/bitrunning_flair/trenchcoat
- item_path = /obj/item/clothing/suit/jacket/trenchcoat
+ purchase_path = /obj/item/clothing/suit/jacket/trenchcoat
cost_per_order = 1000
/datum/orderable_item/bitrunning_flair/jackboots
- item_path = /obj/item/clothing/shoes/jackboots
+ purchase_path = /obj/item/clothing/shoes/jackboots
cost_per_order = 1000
diff --git a/code/modules/bitrunning/orders/tech.dm b/code/modules/bitrunning/orders/tech.dm
index 9dd1db17c799d..cb509fb625201 100644
--- a/code/modules/bitrunning/orders/tech.dm
+++ b/code/modules/bitrunning/orders/tech.dm
@@ -3,54 +3,54 @@
/datum/orderable_item/bitrunning_tech/item_tier1
cost_per_order = 750
- item_path = /obj/item/bitrunning_disk/item/tier1
+ purchase_path = /obj/item/bitrunning_disk/item/tier1
desc = "This disk contains a program that lets you equip a medical beamgun, a C4 explosive, or a box of infinite pizza."
/datum/orderable_item/bitrunning_tech/item_tier2
cost_per_order = 1250
- item_path = /obj/item/bitrunning_disk/item/tier2
+ purchase_path = /obj/item/bitrunning_disk/item/tier2
desc = "This disk contains a program that lets you equip a luxury medipen, a pistol, or an armour vest."
/datum/orderable_item/bitrunning_tech/item_tier3
cost_per_order = 2000
- item_path = /obj/item/bitrunning_disk/item/tier3
+ purchase_path = /obj/item/bitrunning_disk/item/tier3
desc = "This disk contains a program that lets you equip an advanced energy gun, a dual bladed energy sword, or a minibomb."
/datum/orderable_item/bitrunning_tech/ability_tier1
cost_per_order = 750
- item_path = /obj/item/bitrunning_disk/ability/tier1
+ purchase_path = /obj/item/bitrunning_disk/ability/tier1
desc = "This disk contains a program that lets you cast Summon Cheese or Lesser Heal."
/datum/orderable_item/bitrunning_tech/ability_tier2
cost_per_order = 1500
- item_path = /obj/item/bitrunning_disk/ability/tier2
+ purchase_path = /obj/item/bitrunning_disk/ability/tier2
desc = "This disk contains a program that lets you cast Fireball, Lightning Bolt, or Forcewall."
/datum/orderable_item/bitrunning_tech/ability_tier3
cost_per_order = 2500
- item_path = /obj/item/bitrunning_disk/ability/tier3
+ purchase_path = /obj/item/bitrunning_disk/ability/tier3
desc = "This disk contains a program that lets you shapeshift into a lesser ashdrake, or a polar bear."
/datum/orderable_item/bitrunning_tech/flip_skillchip
- item_path = /obj/item/skillchip/matrix_taunt
+ purchase_path = /obj/item/skillchip/matrix_taunt
cost_per_order = 1500
/datum/orderable_item/bitrunning_tech/pka_mod
- item_path = /obj/item/bitrunning_disk/item/pka_mods
+ purchase_path = /obj/item/bitrunning_disk/item/pka_mods
cost_per_order = 750
desc = "This disk contains a program that lets you equip modkits for the proto-kinetic accelerator. Proto-kinetic accelerator not included."
/datum/orderable_item/bitrunning_tech/pka_mod/premium
- item_path = /obj/item/bitrunning_disk/item/pka_mods/premium
+ purchase_path = /obj/item/bitrunning_disk/item/pka_mods/premium
cost_per_order = 1600
desc = "This disk contains a program that lets you equip stronger modkits for the proto-kinetic accelerator. Proto-kinetic accelerator not included."
/datum/orderable_item/bitrunning_tech/pkc_mod
- item_path = /obj/item/bitrunning_disk/item/pkc_mods
+ purchase_path = /obj/item/bitrunning_disk/item/pkc_mods
cost_per_order = 750
desc = "This disk contains a program that lets you equip trophies for the proto-kinetic crusher. Proto-kinetic crusher no included."
/datum/orderable_item/bitrunning_tech/pkc_mod/premium
- item_path = /obj/item/bitrunning_disk/item/pkc_mods/premium
+ purchase_path = /obj/item/bitrunning_disk/item/pkc_mods/premium
cost_per_order = 1600
desc = "This disk contains a program that lets you equip stronger trophies for the proto-kinetic crusher. Proto-kinetic crusher not included."
diff --git a/code/modules/bitrunning/server/_parent.dm b/code/modules/bitrunning/server/_parent.dm
index 672a79ba72cef..5e29c1729b490 100644
--- a/code/modules/bitrunning/server/_parent.dm
+++ b/code/modules/bitrunning/server/_parent.dm
@@ -45,7 +45,7 @@
/// Maximum rate at which a glitch can spawn
var/threat_prob_max = 15
/// The turfs we can place a hololadder on.
- var/turf/exit_turfs = list()
+ var/list/turf/exit_turfs = list()
/// Determines if we broadcast to entertainment monitors or not
var/broadcasting = FALSE
/// Cooldown between being able to toggle broadcasting
diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm
index 9f473980bbf96..9d63e153eb347 100644
--- a/code/modules/bitrunning/server/obj_generation.dm
+++ b/code/modules/bitrunning/server/obj_generation.dm
@@ -145,6 +145,9 @@
to_chat(neo, span_warning("This domain forbids the use of [english_list(import_ban)], your disk [english_list(disk_ban)] will not be granted!"))
var/failed = FALSE
+ //DOPPLER EDIT ADDITION BEGIN - BITRUNNING_PREFS_DISKS - Track if we've used multiple avatar preference disks, for avoiding overrides and displaying the failure message.
+ var/duplicate_prefs = FALSE
+ //DOPPLER EDIT ADDITION END
// We don't need to bother going over the disks if neither of the types can be used.
if(domain_forbids_spells && domain_forbids_items)
@@ -175,6 +178,24 @@
avatar.put_in_hands(new item_disk.granted_item())
+ //DOPPLER EDIT ADDITION BEGIN - BITRUNNING_PREFS_DISKS - Handles our avatar preference disks, if present.
+ if(istype(disk, /obj/item/bitrunning_disk/preferences))
+ var/obj/item/bitrunning_disk/preferences/prefs_disk = disk
+ var/datum/preferences/avatar_preference = prefs_disk.chosen_preference
+
+ if(isnull(avatar_preference) || duplicate_prefs)
+ failed = TRUE
+ continue
+
+ if(!domain_forbids_spells)
+ avatar_preference.safe_transfer_prefs_to(avatar)
+ SSquirks.AssignQuirks(avatar, prefs_disk.mock_client)
+ if(!domain_forbids_items && prefs_disk.include_loadout)
+ avatar.equip_outfit_and_loadout(/datum/outfit, avatar_preference)
+
+ duplicate_prefs = TRUE
+ //DOPPLER EDIT ADDITION END
+
if(failed)
to_chat(neo, span_warning("One of your disks failed to load. Check for duplicate or inactive disks."))
diff --git a/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm
index 84eb53e026a29..3969907205750 100644
--- a/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm
+++ b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm
@@ -13,10 +13,10 @@
/obj/item/toy/beach_ball = 2,
/obj/item/clothing/shoes/sandal = 1,
/obj/item/clothing/glasses/sunglasses = 1,
- /obj/item/gun/ballistic/automatic/mini_uzi = 1,
+ /obj/item/gun/energy/laser/chameleon/ballistic_only = 1,
+ /obj/item/bitrunning_disk/item/mini_uzi = 1,
)
-
/datum/lazy_template/virtual_domain/island_brawl/setup_domain(list/created_atoms)
for(var/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander/spawner in created_atoms)
custom_spawns += spawner
diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm
index d9a0a0faf63d8..0bf7350937372 100644
--- a/code/modules/buildmode/buttons.dm
+++ b/code/modules/buildmode/buttons.dm
@@ -1,5 +1,6 @@
/atom/movable/screen/buildmode
icon = 'icons/hud/buildmode.dmi'
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/datum/buildmode/bd
// If we don't do this, we get occluded by item action buttons
plane = ABOVE_HUD_PLANE
diff --git a/code/modules/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm
index 2f292218e79f6..968e6e2953e95 100644
--- a/code/modules/capture_the_flag/ctf_game.dm
+++ b/code/modules/capture_the_flag/ctf_game.dm
@@ -403,7 +403,7 @@
alpha = 255
/obj/structure/trap/ctf/examine(mob/user)
- return
+ return list()
/obj/structure/trap/ctf/trap_effect(mob/living/living)
if(!is_ctf_target(living))
diff --git a/code/modules/capture_the_flag/ctf_player_component.dm b/code/modules/capture_the_flag/ctf_player_component.dm
index 5a02a954aba6a..0424fe13166b5 100644
--- a/code/modules/capture_the_flag/ctf_player_component.dm
+++ b/code/modules/capture_the_flag/ctf_player_component.dm
@@ -24,10 +24,10 @@
ckey_reference = player_mob.ckey
register_mob()
-/datum/component/ctf_player/PostTransfer()
- if(!istype(parent, /datum/mind))
+/datum/component/ctf_player/PostTransfer(datum/new_parent)
+ if(!istype(new_parent, /datum/mind))
return COMPONENT_INCOMPATIBLE
- var/datum/mind/true_parent = parent
+ var/datum/mind/true_parent = new_parent
player_mob = true_parent.current
register_mob()
diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm
index 23e578c2ed2db..a93fdc97d8e69 100644
--- a/code/modules/cargo/bounties/assistant.dm
+++ b/code/modules/cargo/bounties/assistant.dm
@@ -174,7 +174,7 @@
name = "Crayons"
description = "Dr. Jones's kid ate all of our crayons again. Please send us yours."
reward = CARGO_CRATE_VALUE * 4
- required_count = 24
+ required_count = 8
wanted_types = list(/obj/item/toy/crayon = TRUE)
/datum/bounty/item/assistant/pens
diff --git a/code/modules/cargo/bounties/botany.dm b/code/modules/cargo/bounties/botany.dm
index 905122584bf34..042bb60636f09 100644
--- a/code/modules/cargo/bounties/botany.dm
+++ b/code/modules/cargo/bounties/botany.dm
@@ -1,8 +1,8 @@
/datum/bounty/item/botany
reward = CARGO_CRATE_VALUE * 10
- var/datum/bounty/item/botany/multiplier = 0 //adds bonus reward money; increased for higher tier or rare mutations
- var/datum/bounty/item/botany/bonus_desc //for adding extra flavor text to bounty descriptions
- var/datum/bounty/item/botany/foodtype = "meal" //same here
+ var/multiplier = 0 //adds bonus reward money; increased for higher tier or rare mutations
+ var/bonus_desc //for adding extra flavor text to bounty descriptions
+ var/foodtype = "meal" //same here
/datum/bounty/item/botany/New()
..()
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index 1ba739d3343a4..bb1c4ea8a8b86 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -303,7 +303,7 @@ ADMIN_VERB(centcom_podlauncher, R_ADMIN, "Config/Launch Supplypod", "Configure a
return
if (!isnum(boomInput[i])) //If the user doesn't input a number, set that specific explosion value to zero
tgui_alert(usr, "That wasn't a number! Value set to default (zero) instead.")
- boomInput = 0
+ boomInput[i] = 0
explosionChoice = 1
temp_pod.explosionSize = boomInput
. = TRUE
diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm
index 0b6451e569828..5abf8f2dd27f7 100644
--- a/code/modules/cargo/goodies.dm
+++ b/code/modules/cargo/goodies.dm
@@ -32,6 +32,27 @@
access_view = ACCESS_WEAPONS
contains = list(/obj/item/ammo_box/c38/match/bouncy)
+/datum/supply_pack/goody/dumdum38br
+ name = ".38 DumDum Magazine Single-Pack"
+ desc = "Contains one magazine of .38 DumDum ammunition, good for embedding in soft targets."
+ cost = PAYCHECK_CREW * 2
+ access_view = ACCESS_WEAPONS
+ contains = list(/obj/item/ammo_box/magazine/m38/dumdum)
+
+/datum/supply_pack/goody/match38br
+ name = ".38 Match Grade Magazine Single-Pack"
+ desc = "Contains one magazine of match grade .38 ammunition, perfect for showing off trickshots."
+ cost = PAYCHECK_CREW * 2
+ access_view = ACCESS_WEAPONS
+ contains = list(/obj/item/ammo_box/magazine/m38/match)
+
+/datum/supply_pack/goody/rubber
+ name = ".38 Rubber Magazine Single-Pack"
+ desc = "Contains one magazine of bouncy rubber .38 ammunition, for when you want to bounce your shots off anything and everything."
+ cost = PAYCHECK_CREW * 1.5
+ access_view = ACCESS_WEAPONS
+ contains = list(/obj/item/ammo_box/magazine/m38/match/bouncy)
+
/datum/supply_pack/goody/mars_single
name = "Colt Detective Special Single-Pack"
desc = "The HoS took your gun and your badge? No problem! Just pay the absurd taxation fee and you too can be reunited with the lethal power of a .38!"
diff --git a/code/modules/cargo/markets/market_items/misc.dm b/code/modules/cargo/markets/market_items/misc.dm
index bb8d3da04d825..a35d85fa7ccca 100644
--- a/code/modules/cargo/markets/market_items/misc.dm
+++ b/code/modules/cargo/markets/market_items/misc.dm
@@ -51,6 +51,33 @@
stock_max = 2
availability_prob = 30
+/datum/market_item/misc/atrocinator
+ name = "MOD Anti-Gravity Module"
+ desc = "We found this module in a maintenance tunnel, behind several warning cones and hazard signs, unlabeled. It's probably safe."
+ item = /obj/item/mod/module/atrocinator
+ price_min = CARGO_CRATE_VALUE * 4
+ price_max = CARGO_CRATE_VALUE * 7
+ stock_max = 1
+ availability_prob = 22
+
+/datum/market_item/misc/tanner
+ name = "MOD Tanning Module"
+ desc = "Ever wanted to be at the beach AND at work? Now you can with this snazzy tanning module!"
+ item = /obj/item/mod/module/tanner
+ price_min = CARGO_CRATE_VALUE * 2
+ price_max = CARGO_CRATE_VALUE * 3
+ stock_max = 2
+ availability_prob = 30
+
+/datum/market_item/misc/hat_stabilizer
+ name = "MOD Hat Stabilizer Module"
+ desc = "Don't sacrifice style for substance with this module! Hats not included."
+ item = /obj/item/mod/module/tanner
+ price_min = CARGO_CRATE_VALUE * 2
+ price_max = CARGO_CRATE_VALUE * 3
+ stock_max = 2
+ availability_prob = 35
+
/datum/market_item/misc/shove_blocker
name = "MOD Bulwark Module"
desc = "You have no idea how much effort it took us to extract this module from that damn safeguard MODsuit last shift."
diff --git a/code/modules/cargo/markets/market_items/weapons.dm b/code/modules/cargo/markets/market_items/weapons.dm
index 94aa533c26e3f..f9fd6245c8d99 100644
--- a/code/modules/cargo/markets/market_items/weapons.dm
+++ b/code/modules/cargo/markets/market_items/weapons.dm
@@ -64,6 +64,16 @@
stock_max = 3
availability_prob = 45
+/datum/market_item/weapon/carpenter_hammer
+ name = "Carpenter hammer"
+ desc = "When you really want to look like a psycho..."
+ item = /obj/item/carpenter_hammer
+
+ price_min = CARGO_CRATE_VALUE * 1
+ price_max = CARGO_CRATE_VALUE * 1.25
+ stock_max = 2
+ availability_prob = 65
+
/datum/market_item/weapon/emp_grenade
name = "EMP Grenade"
desc = "Use this grenade for SHOCKING results!"
diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm
index 2d19c276ec115..3cbe3b56aff65 100644
--- a/code/modules/cargo/packs/emergency.dm
+++ b/code/modules/cargo/packs/emergency.dm
@@ -24,7 +24,7 @@
cost = CARGO_CRATE_VALUE * 4
contains = list(
/mob/living/basic/bot/medbot = 2,
- /mob/living/simple_animal/bot/floorbot = 2,
+ /mob/living/basic/bot/repairbot = 2,
/obj/item/tank/internals/emergency_oxygen = 5,
/obj/item/clothing/mask/breath = 5,
)
diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm
index d021fa8665ff2..4b3847bd89835 100644
--- a/code/modules/cargo/packs/medical.dm
+++ b/code/modules/cargo/packs/medical.dm
@@ -192,6 +192,14 @@
crate_name = "Strong-Arm implant crate"
discountable = SUPPLY_PACK_RARE_DISCOUNTABLE
+/datum/supply_pack/medical/paperwork_implants
+ name = "Paperwork Implant Set"
+ desc = "A crate containing two implants, which can be surgically implanted to effectivize crewmembers at paperwork. Warranty void if exposed to electromagnetic pulses."
+ cost = CARGO_CRATE_VALUE * 3
+ contains = list(/obj/item/organ/cyberimp/arm/paperwork = 2)
+ crate_name = "Paperwork implant crate"
+ discountable = SUPPLY_PACK_RARE_DISCOUNTABLE
+
/datum/supply_pack/medical/lost_crew
name = "Recovered NT Employee corpse"
desc = "We don't have the accomodations to bring them back, could we send them to you? Please revive and employ them. \
@@ -200,3 +208,4 @@
contains = list(/obj/structure/closet/body_bag/lost_crew/with_body)
crate_name = "body freezer"
crate_type = /obj/structure/closet/crate/secure/freezer
+
diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm
index 1823ef5174f94..b233ecd78dd38 100644
--- a/code/modules/cargo/packs/security.dm
+++ b/code/modules/cargo/packs/security.dm
@@ -248,6 +248,30 @@
crate_name = "disabler smg crate"
crate_type = /obj/structure/closet/crate/secure/plasma
+/datum/supply_pack/security/armory/battle_rifle
+ name = "NT BR-38 Crate"
+ desc = "An experimental energy-based ballistc battle rifle. Only available to \
+ Nanotrasen stations for security purposes. DO NOT RESELL TO OUTSIDE COMPANIES. \
+ Contains three NT BR-38 rifles and three magazines containing .38 Standard."
+ cost = CARGO_CRATE_VALUE * 100
+ contains = list(
+ /obj/item/gun/ballistic/automatic/battle_rifle = 2,
+ /obj/item/ammo_box/magazine/m38 = 4,
+ )
+ crate_name = "battle rifle crate"
+
+/datum/supply_pack/security/armory/br_mag
+ name = "NT BR-38 Magazine Crate"
+ desc = "Six .38 magazines, able to fit into the NT BR-38. Contains \
+ two standard magazines, two Hot Shot magazines and two Iceblox magazines."
+ cost = CARGO_CRATE_VALUE * 7
+ contains = list(
+ /obj/item/ammo_box/magazine/m38 = 2,
+ /obj/item/ammo_box/magazine/m38/hotshot = 2,
+ /obj/item/ammo_box/magazine/m38/iceblox =2,
+ )
+ crate_name = ".38 magazine crate"
+
/datum/supply_pack/security/armory/exileimp
name = "Exile Implants Crate"
desc = "Contains five Exile implants."
diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm
index bde635695fd28..89ce9a5c3716c 100644
--- a/code/modules/cargo/packs/service.dm
+++ b/code/modules/cargo/packs/service.dm
@@ -237,12 +237,16 @@
/datum/supply_pack/service/randomized/ready_donk
name = "Ready-Donk Variety Crate"
- desc = "Featuring a line up of Donk Co.'s most popular pastry! Contains \
+ desc = "Featuring a line up of Donk Co.'s fan-favourite microwave meal! Contains \
a random assortment of Ready Donk products."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/food/ready_donk,
/obj/item/food/ready_donk/mac_n_cheese,
/obj/item/food/ready_donk/donkhiladas,
+ /obj/item/food/ready_donk/nachos_grandes,
+ /obj/item/food/ready_donk/donkrange_chicken,
+ /obj/item/food/ready_donk/salisbury_steak,
+ /obj/item/food/ready_donk/country_chicken,
)
crate_name = "\improper Ready-Donk crate"
crate_type = /obj/structure/closet/crate/freezer/donk
@@ -281,21 +285,6 @@
crate_type = /obj/structure/closet/crate/large
discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE
-/datum/supply_pack/service/aquarium_kit
- name = "Aquarium Kit"
- desc = "Everything you need to start your own aquarium. Contains aquarium construction kit, \
- fish catalog, fish food and three freshwater fish from our collection."
- cost = CARGO_CRATE_VALUE * 5
- contains = list(/obj/item/book/manual/fish_catalog,
- /obj/item/storage/fish_case/random/freshwater = 3,
- /obj/item/reagent_containers/cup/fish_feed,
- /obj/item/storage/box/aquarium_props,
- /obj/item/aquarium_kit,
- )
- crate_name = "aquarium kit crate"
- crate_type = /obj/structure/closet/crate/wooden
- discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE
-
/// Spare bar sign wallmount
/datum/supply_pack/service/bar_sign
name = "Bar Sign Replacement Kit"
diff --git a/code/modules/client/client_colour.dm b/code/modules/client/client_colour.dm
index 4ca500a9e7198..08e79c305a454 100644
--- a/code/modules/client/client_colour.dm
+++ b/code/modules/client/client_colour.dm
@@ -220,6 +220,9 @@
/datum/client_colour/malfunction
colour = list(/*R*/ 0,0,0,0, /*G*/ 0,175,0,0, /*B*/ 0,0,0,0, /*A*/ 0,0,0,1, /*C*/0,-130,0,0) // Matrix colors
+/datum/client_colour/perceptomatrix
+ colour = list(/*R*/ 1,0,0,0, /*G*/ 0,1,0,0, /*B*/ 0,0,1,0, /*A*/ 0,0,0,1, /*C*/0,-0.02,-0.02,0) // veeery slightly pink
+
/datum/client_colour/monochrome
colour = COLOR_MATRIX_GRAYSCALE
priority = PRIORITY_HIGH //we can't see colors anyway!
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index c8e9e9a64c270..fe559b2b71bfa 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -269,3 +269,7 @@
///Which ambient sound this client is currently being provided.
var/current_ambient_sound
+
+ /// Does this client's mob need to rebuild its plane masters after login?
+ /// This is currently only used so a client can switch between 515 and 516 without breaking their rendering.
+ var/rebuild_plane_masters = FALSE
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index e0f359ac1e639..4bd8ce5497e2d 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -329,10 +329,20 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
if(GLOB.player_details[ckey])
reconnecting = TRUE
player_details = GLOB.player_details[ckey]
- player_details.byond_version = full_version
+ var/old_version = player_details.byond_version
+ player_details.byond_version = byond_version
+ player_details.byond_build = byond_build
+
+#if MIN_COMPILER_VERSION > 516
+ #warn Fully change default relay_loc to "1,1", rather than changing it based on client version
+#endif
+ if(old_version != byond_version)
+ rebuild_plane_masters = TRUE
+
else
player_details = new(ckey)
- player_details.byond_version = full_version
+ player_details.byond_version = byond_version
+ player_details.byond_build = byond_build
GLOB.player_details[ckey] = player_details
@@ -726,22 +736,16 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
qdel(query_datediff)
qdel(query_get_client_age)
if(!new_player)
- var/datum/db_query/query_log_player = SSdbcore.NewQuery(
+ SSdbcore.FireAndForget(
"UPDATE [format_table_name("player")] SET lastseen = Now(), lastseen_round_id = :round_id, ip = INET_ATON(:ip), computerid = :computerid, lastadminrank = :admin_rank, accountjoindate = :account_join_date WHERE ckey = :ckey",
list("round_id" = GLOB.round_id, "ip" = address, "computerid" = computer_id, "admin_rank" = admin_rank, "account_join_date" = account_join_date || null, "ckey" = ckey)
)
- if(!query_log_player.Execute())
- qdel(query_log_player)
- return
- qdel(query_log_player)
if(!account_join_date)
account_join_date = "Error"
- var/datum/db_query/query_log_connection = SSdbcore.NewQuery({"
+ SSdbcore.FireAndForget({"
INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`round_id`,`ckey`,`ip`,`computerid`)
VALUES(null,Now(),INET_ATON(:internet_address),:port,:round_id,:ckey,INET_ATON(:ip),:computerid)
"}, list("internet_address" = world.internet_address || "0", "port" = world.port, "round_id" = GLOB.round_id, "ckey" = ckey, "ip" = address, "computerid" = computer_id))
- query_log_connection.Execute()
- qdel(query_log_connection)
SSserver_maint.UpdateHubStatus()
diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm
index 3a880dcdbb550..d0982a0c31268 100644
--- a/code/modules/client/player_details.dm
+++ b/code/modules/client/player_details.dm
@@ -1,6 +1,6 @@
///assoc list of ckey -> /datum/player_details
-GLOBAL_LIST_EMPTY(player_details)
+GLOBAL_LIST_EMPTY_TYPED(player_details, /datum/player_details)
/// Tracks information about a client between log in and log outs
/datum/player_details
@@ -18,8 +18,10 @@ GLOBAL_LIST_EMPTY(player_details)
/// Lazylist of preference slots this client has joined the round under
/// Numbers are stored as strings
var/list/joined_as_slots
- /// Version of byond this client is using
- var/byond_version = "Unknown"
+ /// Major version of BYOND this client is using.
+ var/byond_version
+ /// Build number of BYOND this client is using.
+ var/byond_build
/// Tracks achievements they have earned
var/datum/achievement_data/achievements
/// World.time this player last died
@@ -35,6 +37,12 @@ GLOBAL_LIST_EMPTY(player_details)
previous_names += html_encode("[previous_name] ([played_names[previous_name]])")
return previous_names.Join("; ")
+/// Returns the full version string (i.e 515.1642) of the BYOND version and build.
+/datum/player_details/proc/full_byond_version()
+ if(!byond_version)
+ return "Unknown"
+ return "[byond_version].[byond_build || "xxx"]"
+
/// Adds the new names to the player's played_names list on their /datum/player_details for use of admins.
/// `ckey` should be their ckey, and `data` should be an associative list with the keys being the names they played under and the values being the unique mob ID tied to that name.
/proc/log_played_names(ckey, data)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index ba031f80c96bd..e82d2531eb763 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -9,7 +9,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
/// Ensures that we always load the last used save, QOL
var/default_slot = 1
/// The maximum number of slots we're allowed to contain
- var/max_save_slots = 15 // DOPPLER EDIT: moar slots
+ var/max_save_slots = 30 // DOPPLER EDIT: moar slots
/// Bitflags for communications that are muted
var/muted = NONE
@@ -598,4 +598,4 @@ GLOBAL_LIST_EMPTY(preferences_datums)
unlock_content = !!byond_member
if(unlock_content)
- max_save_slots = 30 // DOPPLER EDIT: moar slots
+ max_save_slots = 45 // DOPPLER EDIT: moar slots
diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 127840631d631..dd09deae54059 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -66,7 +66,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8")
if(handle_spam_prevention(msg,MUTE_OOC))
return
if(findtext(msg, "byond://"))
- to_chat(src, span_boldannounce("Advertising other servers is not allowed. "))
+ to_chat(src, span_boldannounce("Advertising other servers is not allowed."))
log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]")
message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]")
return
diff --git a/code/modules/clothing/chameleon/chameleon_action_subtypes.dm b/code/modules/clothing/chameleon/chameleon_action_subtypes.dm
index bd15bb908f227..1c433f0c0d953 100644
--- a/code/modules/clothing/chameleon/chameleon_action_subtypes.dm
+++ b/code/modules/clothing/chameleon/chameleon_action_subtypes.dm
@@ -301,3 +301,7 @@
. = ..()
for(var/other_type in other_cham_types)
add_chameleon_items(other_type)
+
+/datum/action/item_action/chameleon/change/gun/ballistic
+ chameleon_type = /obj/item/gun/ballistic
+ chameleon_name = "Gun"
diff --git a/code/modules/clothing/chameleon/chameleon_gun.dm b/code/modules/clothing/chameleon/chameleon_gun.dm
index dafd0ba5f624a..4a282a3e75aee 100644
--- a/code/modules/clothing/chameleon/chameleon_gun.dm
+++ b/code/modules/clothing/chameleon/chameleon_gun.dm
@@ -11,14 +11,15 @@
/// The badmin mode. Makes your projectiles act like the real deal.
var/real_hits = FALSE
+ /// how it looks by default.
+ var/default_look = /obj/item/gun/energy/laser
/obj/item/gun/energy/laser/chameleon/Initialize(mapload)
. = ..()
- recharge_newshot()
AddElement(/datum/element/empprotection, EMP_PROTECT_SELF|EMP_PROTECT_CONTENTS)
// Init order shenanigans dictate we have to do this last so we can't just use `active_type`
var/datum/action/item_action/chameleon/change/gun/gun_action = locate() in actions
- gun_action?.update_look(/obj/item/gun/energy/laser)
+ gun_action?.update_look(default_look)
/**
* Description: Resets the currently loaded chameleon variables, essentially resetting it to brand new.
@@ -54,36 +55,34 @@
inhand_x_dimension = gun_to_set.inhand_x_dimension
inhand_y_dimension = gun_to_set.inhand_y_dimension
+ // We dupe this casing and then delete it at the end, to grab the projectile.
+ var/obj/item/ammo_casing/casing_to_dupe
+
if(istype(gun_to_set, /obj/item/gun/ballistic))
var/obj/item/gun/ballistic/ball_gun = gun_to_set
- var/obj/item/ammo_box/ball_ammo = new ball_gun.spawn_magazine_type(gun_to_set)
- qdel(ball_gun)
-
- if(!istype(ball_ammo) || !ball_ammo.ammo_type)
- qdel(ball_ammo)
- return FALSE
-
- var/obj/item/ammo_casing/ball_cartridge = new ball_ammo.ammo_type(gun_to_set)
- set_chameleon_ammo(ball_cartridge)
+ // We also need to copy the starting magazine for ballistics.
+ casing_to_dupe = initial(ball_gun.spawn_magazine_type.ammo_type)
+ casing_to_dupe = new casing_to_dupe(src)
else if(istype(gun_to_set, /obj/item/gun/magic))
var/obj/item/gun/magic/magic_gun = gun_to_set
- var/obj/item/ammo_casing/magic_cartridge = new magic_gun.ammo_type(gun_to_set)
- set_chameleon_ammo(magic_cartridge)
+ casing_to_dupe = new magic_gun.ammo_type(src)
else if(istype(gun_to_set, /obj/item/gun/energy))
var/obj/item/gun/energy/energy_gun = gun_to_set
+ // Even if the energy gun has multiple ammo types, we copy the first. Energy guns always (should) have a list in ammo_type.
if(islist(energy_gun.ammo_type) && energy_gun.ammo_type.len)
- var/obj/item/ammo_casing/energy_cartridge = energy_gun.ammo_type[1]
- set_chameleon_ammo(energy_cartridge)
+ var/obj/item/first_casing = energy_gun.ammo_type[1]
+ casing_to_dupe = new first_casing.type(src)
else if(istype(gun_to_set, /obj/item/gun/syringe))
- var/obj/item/ammo_casing/syringe_cartridge = new /obj/item/ammo_casing/syringegun(src)
- set_chameleon_ammo(syringe_cartridge)
+ casing_to_dupe = new /obj/item/ammo_casing/syringegun(src)
else
- var/obj/item/ammo_casing/default_cartridge = new /obj/item/ammo_casing(src)
- set_chameleon_ammo(default_cartridge)
+ casing_to_dupe = new /obj/item/ammo_casing(src)
+
+ set_chameleon_ammo(casing_to_dupe)
+ qdel(casing_to_dupe)
/**
* Description: Sets the ammo type our gun should have.
@@ -155,3 +154,11 @@
var/obj/item/gun/new_gun = new guntype(src)
set_chameleon_gun(new_gun)
qdel(new_gun)
+
+/obj/item/gun/energy/laser/chameleon/ballistic_only
+ actions_types = list(/datum/action/item_action/chameleon/change/gun/ballistic)
+ default_look = /obj/item/gun/ballistic/automatic/mini_uzi
+
+/obj/item/gun/energy/laser/chameleon/ballistic_only/Initialize(mapload)
+ . = ..()
+ set_chameleon_disguise(default_look)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 0c0e73940d27c..9f68581e3ab6f 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -431,9 +431,9 @@
parts_covered += "head"
if(body_parts_covered & CHEST)
parts_covered += "torso"
- if(body_parts_covered & ARMS|HANDS)
+ if(body_parts_covered & (ARMS|HANDS))
parts_covered += "arms"
- if(body_parts_covered & LEGS|FEET)
+ if(body_parts_covered & (LEGS|FEET))
parts_covered += "legs"
if(length(parts_covered))
readout += "[output_string] will protect the wearer's [english_list(parts_covered)] from [span_tooltip("The extremely low pressure is the biggest danger posed by the vacuum of space.", "low pressure")]."
diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm
index 064a24cf5c779..4d7951a62f62a 100644
--- a/code/modules/clothing/glasses/engine_goggles.dm
+++ b/code/modules/clothing/glasses/engine_goggles.dm
@@ -183,26 +183,26 @@
continue
var/datum/gas_mixture/environment = open.return_air()
var/temp = round(environment.return_temperature())
- var/image/pic = image('icons/turf/overlays.dmi', open, "greyOverlay", ABOVE_ALL_MOB_LAYER)
+ var/image/turf_overlay = image('icons/turf/overlays.dmi', open, "greyOverlay", ABOVE_OPEN_TURF_LAYER)
// Lower than TEMP_SHADE_CYAN should be deep blue
switch(temp)
if(-INFINITY to TEMP_SHADE_CYAN)
- pic.color = COLOR_STRONG_BLUE
+ turf_overlay.color = COLOR_STRONG_BLUE
// Between TEMP_SHADE_CYAN and TEMP_SHADE_GREEN
if(TEMP_SHADE_CYAN to TEMP_SHADE_GREEN)
- pic.color = BlendRGB(COLOR_DARK_CYAN, COLOR_LIME, max(round((temp - TEMP_SHADE_CYAN)/(TEMP_SHADE_GREEN - TEMP_SHADE_CYAN), 0.01), 0))
+ turf_overlay.color = BlendRGB(COLOR_DARK_CYAN, COLOR_LIME, max(round((temp - TEMP_SHADE_CYAN)/(TEMP_SHADE_GREEN - TEMP_SHADE_CYAN), 0.01), 0))
// Between TEMP_SHADE_GREEN and TEMP_SHADE_YELLOW
if(TEMP_SHADE_GREEN to TEMP_SHADE_YELLOW)
- pic.color = BlendRGB(COLOR_LIME, COLOR_YELLOW, clamp(round((temp-TEMP_SHADE_GREEN)/(TEMP_SHADE_YELLOW - TEMP_SHADE_GREEN), 0.01), 0, 1))
+ turf_overlay.color = BlendRGB(COLOR_LIME, COLOR_YELLOW, clamp(round((temp-TEMP_SHADE_GREEN)/(TEMP_SHADE_YELLOW - TEMP_SHADE_GREEN), 0.01), 0, 1))
// Between TEMP_SHADE_YELLOW and TEMP_SHADE_RED
if(TEMP_SHADE_YELLOW to TEMP_SHADE_RED)
- pic.color = BlendRGB(COLOR_YELLOW, COLOR_RED, clamp(round((temp-TEMP_SHADE_YELLOW)/(TEMP_SHADE_RED - TEMP_SHADE_YELLOW), 0.01), 0, 1))
+ turf_overlay.color = BlendRGB(COLOR_YELLOW, COLOR_RED, clamp(round((temp-TEMP_SHADE_YELLOW)/(TEMP_SHADE_RED - TEMP_SHADE_YELLOW), 0.01), 0, 1))
// Over TEMP_SHADE_RED should be red
if(TEMP_SHADE_RED to INFINITY)
- pic.color = COLOR_RED
- pic.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- pic.alpha = 200
- flick_overlay_global(pic, list(viewer.client), duration)
+ turf_overlay.color = COLOR_RED
+ turf_overlay.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ turf_overlay.alpha = 200
+ flick_overlay_global(turf_overlay, list(viewer.client), duration)
#undef MODE_NONE
diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm
index dcbc798eab92a..09df92bb8c4f2 100644
--- a/code/modules/clothing/gloves/special.dm
+++ b/code/modules/clothing/gloves/special.dm
@@ -273,9 +273,3 @@
var/body_zone = pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)
user.apply_damage(damage, BRUTE, body_zone, user.run_armor_check(body_zone, MELEE))
playsound(src,'sound/items/weapons/bite.ogg', damage * 2, TRUE)
-
-/obj/item/clothing/gloves/botanic_leather/janitor
- name = "janitor gloves"
- desc = "These rubber gloves protect against thorns, barbs, prickles, glass shards and any other threats that might be found in the station's trash. They're also quite warm."
- icon_state = "janitor_doppler"
- inhand_icon_state = null
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 56a8661a4127a..44fb8120a4411 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -143,15 +143,17 @@
/obj/item/clothing/head/utility/hardhat/welding/adjust_visor(mob/living/user)
. = ..()
if(.)
- playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE)
+ playsound(src, up ? SFX_VISOR_UP : SFX_VISOR_DOWN, 50, TRUE)
/obj/item/clothing/head/utility/hardhat/welding/worn_overlays(mutable_appearance/standing, isinhands)
. = ..()
if(isinhands)
return
- if(!up)
+ if(!up && !mask_overlay_icon) // DOPPLER EDIT - ORIGINAL - if(!up)
. += mutable_appearance('icons/mob/clothing/head/utility.dmi', visor_state)
+ else if(!up) // DOPPLER EDIT ADDITION - SEE modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm
+ . += mutable_appearance(mask_overlay_icon, visor_state) // DOPPLER EDIT ADDITION
/obj/item/clothing/head/utility/hardhat/welding/update_overlays()
. = ..()
diff --git a/code/modules/clothing/head/hat.dm b/code/modules/clothing/head/hat.dm
index 426ab39b3edb9..a8247a55603e2 100644
--- a/code/modules/clothing/head/hat.dm
+++ b/code/modules/clothing/head/hat.dm
@@ -352,9 +352,3 @@
icon_state = "paper"
worn_icon_state = "paper"
dog_fashion = /datum/dog_fashion/head
-
-/obj/item/clothing/head/hats/janitor_doppler
- name = "janitor cap"
- desc = "A regal purple cap to keep your head clean as you clean the filthy."
- icon_state = "janitor_doppler"
- inhand_icon_state = "greyscale_softcap"
diff --git a/code/modules/clothing/head/mind_monkey_helmet.dm b/code/modules/clothing/head/mind_monkey_helmet.dm
index e9ff99782395f..602f64eefb274 100644
--- a/code/modules/clothing/head/mind_monkey_helmet.dm
+++ b/code/modules/clothing/head/mind_monkey_helmet.dm
@@ -12,8 +12,8 @@
var/light_colors = 1 ///which icon state color this is (red, blue, yellow)
/// This chance is increased by 7 every time the helmet fails to get a host, to dissuade spam. starts negative to add 1 safe reuse
var/rage_chance = -7
- /// Holds the steam effect at dangerous rage chance levels.
- var/obj/effect/abstract/particle_holder/particle_effect
+ /// Currently used particle type
+ var/particle_path
/obj/item/clothing/head/helmet/monkey_sentience/Initialize(mapload)
. = ..()
@@ -60,7 +60,8 @@
UnregisterSignal(magnification, COMSIG_SPECIES_LOSS)
magnification = null
visible_message(span_notice("[src] falls silent and drops on the floor. Maybe you should try again later?"))
- var/particle_path
+ if (particle_path)
+ remove_shared_particles(particle_path)
switch(rage_chance)
if(-7 to 0)
user.visible_message(span_notice("[src] falls silent and drops on the floor. Try again later?"))
@@ -83,11 +84,10 @@
playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
particle_path = /particles/smoke/steam
rage_chance += 7
-
- QDEL_NULL(particle_effect)
if(particle_path)
- particle_effect = new(src, particle_path)
- QDEL_IN(particle_effect, 2 MINUTES)
+ add_shared_particles(particle_path)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, remove_shared_particles), particle_path), 2 MINUTES)
+ addtimer(VARSET_CALLBACK(src, particle_path, null), 2 MINUTES)
if((rage_chance > 0) && prob(rage_chance)) // too much spam means agnry gorilla running at you
malfunction(user)
diff --git a/code/modules/clothing/head/perceptomatrix.dm b/code/modules/clothing/head/perceptomatrix.dm
new file mode 100644
index 0000000000000..e8b75bbdef5bc
--- /dev/null
+++ b/code/modules/clothing/head/perceptomatrix.dm
@@ -0,0 +1,250 @@
+
+#define PERCEPTOMATRIX_INACTIVE_FLAGS SNUG_FIT|STACKABLE_HELMET_EXEMPT|STOPSPRESSUREDAMAGE|BLOCK_GAS_SMOKE_EFFECT
+#define PERCEPTOMATRIX_ACTIVE_FLAGS PERCEPTOMATRIX_INACTIVE_FLAGS|CASTING_CLOTHES // we love casting spells
+
+/// Helmet which can turn you into a BEAST!! once an anomaly core is inserted
+/obj/item/clothing/head/helmet/perceptomatrix
+ name = "perceptomatrix helm"
+ desc = "This piece of headgear harnesses the energies of a hallucinative anomaly to create a safe audiovisual replica of -all- external stimuli directly into the cerebral cortex, \
+ granting the user effective immunity to both psychic threats, and anything that would affect their perception - be it ear, eye, or even brain damage. \
+ It can also violently discharge said energy, inducing hallucinations in others."
+ icon_state = "perceptomatrix_helmet_inactive"
+ worn_icon_state = "perceptomatrix_helmet_inactive"
+ base_icon_state = "perceptomatrix_helmet"
+ force = 10
+ dog_fashion = null
+ cold_protection = HEAD
+ min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
+ heat_protection = HEAD
+ max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
+ strip_delay = 8 SECONDS
+ clothing_flags = PERCEPTOMATRIX_ACTIVE_FLAGS
+ clothing_traits = list(
+ /* eye/ear protection */
+ TRAIT_NOFLASH,
+ TRAIT_TRUE_NIGHT_VISION,
+ TRAIT_SIGHT_BYPASS,
+ TRAIT_EXPANDED_FOV,
+ TRAIT_GOOD_HEARING,
+ /* mental protection */
+ TRAIT_PERCEPTUAL_TRAUMA_BYPASS,
+ TRAIT_RDS_SUPPRESSED,
+ TRAIT_MADNESS_IMMUNE,
+ TRAIT_HALLUCINATION_IMMUNE,
+ /* psychic protection */
+ TRAIT_NO_MINDSWAP,
+ TRAIT_UNCONVERTABLE,
+ )
+ flags_cover = HEADCOVERSEYES|EARS_COVERED
+ flags_inv = HIDEHAIR|HIDEFACE
+ flash_protect = FLASH_PROTECTION_WELDER_SENSITIVE
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ equip_sound = 'sound/items/handling/helmet/helmet_equip1.ogg'
+ pickup_sound = 'sound/items/handling/helmet/helmet_pickup1.ogg'
+ drop_sound = 'sound/items/handling/helmet/helmet_drop1.ogg'
+ armor_type = /datum/armor/head_helmet_matrix
+ actions_types = list(/datum/action/cooldown/spell/pointed/percept_hallucination)
+
+ /// If we have a core or not
+ var/core_installed = FALSE
+ /// Active components to add onto the mob, deleted and created on core installation/removal
+ var/list/active_components = list()
+
+// weaker overall but better against energy
+/datum/armor/head_helmet_matrix
+ melee = 15
+ bullet = 15
+ laser = 45
+ energy = 60
+ bomb = 15
+ fire = 50
+ acid = 50
+ wound = 10
+
+/obj/item/clothing/head/helmet/perceptomatrix/Initialize(mapload)
+ . = ..()
+
+ update_appearance(UPDATE_ICON_STATE)
+ update_anomaly_state()
+ AddComponent(/datum/component/adjust_fishing_difficulty, -7) // PSYCHIC FISHING
+ AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE)
+
+/obj/item/clothing/head/helmet/perceptomatrix/equipped(mob/living/user, slot)
+ . = ..()
+ if(slot & ITEM_SLOT_HEAD)
+ RegisterSignal(user, COMSIG_MOB_BEFORE_SPELL_CAST, PROC_REF(pre_cast_core_check))
+
+/obj/item/clothing/head/helmet/perceptomatrix/dropped(mob/living/user, silent)
+ UnregisterSignal(user, COMSIG_MOB_BEFORE_SPELL_CAST)
+ ..()
+
+// Prevent casting the spell w/o the core.
+/obj/item/clothing/head/helmet/perceptomatrix/proc/pre_cast_core_check(mob/caster, datum/action/cooldown/spell/spell)
+ SIGNAL_HANDLER
+ if((!core_installed) && spell.school == SCHOOL_PSYCHIC)
+ to_chat(caster, span_warning("You can't zap minds through [src]'s shielding without a core installed!"))
+ return SPELL_CANCEL_CAST
+
+/obj/item/clothing/head/helmet/perceptomatrix/proc/update_anomaly_state()
+
+ // If the core isn't installed, or it's temporarily deactivated, disable special functions.
+ if(!core_installed)
+ clothing_flags = PERCEPTOMATRIX_INACTIVE_FLAGS
+ detach_clothing_traits(clothing_traits)
+ QDEL_LIST(active_components)
+ RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, forced = TRUE)
+ return
+
+ clothing_flags = PERCEPTOMATRIX_ACTIVE_FLAGS
+ attach_clothing_traits(initial(clothing_traits))
+
+ // When someone makes TRAIT_DEAF an element, or status effect, or whatever, give this item a way to bypass said deafness.
+ // just blocking future instances of deafness isn't what the item is meant to do but there's no proper way to do it otherwise at the moment.
+ active_components += AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_HEAD), reduce_amount = 2) // should be same as highest value
+ active_components += AddComponent(
+ /datum/component/anti_magic, \
+ antimagic_flags = MAGIC_RESISTANCE_MIND, \
+ inventory_flags = ITEM_SLOT_HEAD, \
+ )
+ AddElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, forced = TRUE)
+
+ update_icon_state()
+
+/obj/item/clothing/head/helmet/perceptomatrix/Destroy(force)
+ QDEL_LIST(active_components)
+ return ..()
+
+/obj/item/clothing/head/helmet/perceptomatrix/examine(mob/user)
+ . = ..()
+ if (!core_installed)
+ . += span_warning("It requires a hallucination anomaly core in order to function.")
+
+/obj/item/clothing/head/helmet/perceptomatrix/item_action_slot_check(slot, mob/user, datum/action/action)
+ return slot & ITEM_SLOT_HEAD
+
+/obj/item/clothing/head/helmet/perceptomatrix/update_icon_state()
+ icon_state = base_icon_state + (core_installed ? "" : "_inactive")
+ worn_icon_state = base_icon_state + (core_installed ? "" : "_inactive")
+ return ..()
+
+/obj/item/clothing/head/helmet/perceptomatrix/item_interaction(mob/user, obj/item/weapon, params)
+ if (!istype(weapon, /obj/item/assembly/signaler/anomaly/hallucination))
+ return NONE
+ balloon_alert(user, "inserting...")
+ if (!do_after(user, delay = 3 SECONDS, target = src))
+ return ITEM_INTERACT_BLOCKING
+ qdel(weapon)
+ core_installed = TRUE
+ update_anomaly_state()
+ update_appearance(UPDATE_ICON_STATE)
+ playsound(src, 'sound/machines/crate/crate_open.ogg', 50, FALSE)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/clothing/head/helmet/perceptomatrix/functioning
+ core_installed = TRUE
+
+/datum/action/cooldown/spell/pointed/percept_hallucination
+ name = "Hallucinate"
+ desc = "Redirect perceptual energies towards a target, staggering them."
+ button_icon_state = "blind"
+ ranged_mousepointer = 'icons/effects/mouse_pointers/blind_target.dmi'
+
+ sound = 'sound/items/weapons/emitter2.ogg'
+ school = SCHOOL_PSYCHIC
+ cooldown_time = 15 SECONDS
+
+ invocation_type = INVOCATION_NONE
+ spell_requirements = NONE
+ antimagic_flags = MAGIC_RESISTANCE_MIND
+
+ active_msg = "You prepare to zap a target with hallucinations..."
+
+ /// The amount of blurriness to apply
+ var/eye_blur_duration = 7 SECONDS
+ /// The amount of stagger to apply
+ var/stagger_duration = 3 SECONDS
+ /// The amount of hallucination to apply
+ var/hallucination_duration = 25 SECONDS
+ /// Spark system
+ var/datum/effect_system/spark_spread/quantum/spark_sys
+
+/datum/action/cooldown/spell/pointed/percept_hallucination/New(Target)
+ . = ..()
+
+ spark_sys = new /datum/effect_system/spark_spread/quantum
+
+/datum/action/cooldown/spell/pointed/percept_hallucination/Destroy()
+ QDEL_NULL(spark_sys)
+ return ..()
+
+/datum/action/cooldown/spell/pointed/percept_hallucination/is_valid_target(atom/cast_on)
+ . = ..()
+ if(!.)
+ return FALSE
+ if(ishuman(cast_on))
+ return TRUE
+ if(istype(cast_on, /obj/item/food/pancakes))
+ return TRUE
+
+ return FALSE
+
+/datum/action/cooldown/spell/pointed/percept_hallucination/proc/blows_up_pancakes_with_mind(obj/item/food/pancakes/pancakes)
+
+ owner.visible_message(
+ span_userdanger("[owner] blows up [pancakes] with [owner.p_their()] mind!"),
+ span_userdanger("You blow up [pancakes] with your mind!")
+ )
+
+ for(var/mob/chef in get_hearers_in_view(7, pancakes))
+ if(!chef.mind)
+ continue
+ // if cooked by chef, or if EITHER 5% chance OR its april fools. a || (b || c)
+ if(HAS_TRAIT_FROM(pancakes, TRAIT_FOOD_CHEF_MADE, REF(chef.mind)) || (prob(5) || check_holidays(APRIL_FOOLS)))
+ chef.say("Ma fuckin' pancakes!")
+
+ playsound(pancakes, 'sound/effects/fuse.ogg', 80)
+ animate(pancakes, time = 1, pixel_z = 12, easing = ELASTIC_EASING)
+ animate(time = 1, pixel_z = 0, easing = BOUNCE_EASING)
+ for(var/i in 1 to 15)
+ animate(color = (i % 2) ? "#ffffff": "#ff6739", time = 1, easing = QUAD_EASING, flags = ANIMATION_CONTINUE)
+
+ addtimer(CALLBACK(src, PROC_REF(pancake_explosion), pancakes), 1.5 SECONDS)
+
+/datum/action/cooldown/spell/pointed/percept_hallucination/proc/pancake_explosion(obj/pancakes)
+ explosion(pancakes, devastation_range = -1, heavy_impact_range = -1, light_impact_range = 1, flame_range = 2)
+ qdel(pancakes)
+ StartCooldown()
+
+/datum/action/cooldown/spell/pointed/percept_hallucination/proc/cast_fx(atom/cast_on)
+ owner.Beam(cast_on, icon_state = "greyscale_lightning", beam_color = COLOR_FADED_PINK, time = 0.5 SECONDS)
+
+ spark_sys.set_up(2, 1, get_turf(owner))
+ spark_sys.start()
+ spark_sys.set_up(4, 1, get_turf(cast_on))
+ spark_sys.start()
+
+/datum/action/cooldown/spell/pointed/percept_hallucination/cast(mob/living/carbon/human/cast_on)
+ . = ..()
+
+ cast_fx(cast_on)
+
+ if(istype(cast_on, /obj/item/food/pancakes))
+ blows_up_pancakes_with_mind(cast_on)
+ return
+
+ if(cast_on.can_block_magic(antimagic_flags))
+ to_chat(cast_on, span_notice("You feel psychic energies reflecting off you."))
+ to_chat(owner, span_warning("[cast_on] deflects the energy!"))
+ return
+
+ to_chat(cast_on, span_warning("Your brain feels like it's on fire!"))
+ cast_on.emote("scream")
+ cast_on.set_eye_blur_if_lower(eye_blur_duration)
+ cast_on.adjust_staggered(stagger_duration)
+ cast_on.apply_status_effect(/datum/status_effect/hallucination, hallucination_duration, \
+ hallucination_duration * 0.2, hallucination_duration) // lower/upper hallucination freq. bound
+
+ return
+
+#undef PERCEPTOMATRIX_INACTIVE_FLAGS
+#undef PERCEPTOMATRIX_ACTIVE_FLAGS
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index afbdeef519224..bae0225c021a4 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -94,9 +94,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
var/valid_wearer = ismob(loc)
var/mob/wearer = loc
if(istype(tool, /obj/item/cigarette))
- if(flags_cover & MASKCOVERSMOUTH)
- balloon_alert(user, "mask's mouth is covered!")
- return ..()
if(max_filters <= 0 || cig)
balloon_alert(user, "can't hold that!")
@@ -240,7 +237,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
/obj/item/clothing/mask/gas/welding/adjust_visor(mob/living/user)
. = ..()
if(.)
- playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE)
+ playsound(src, up ? SFX_VISOR_UP : SFX_VISOR_DOWN, 50, TRUE)
if(!fishing_modifier)
return
if(up)
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 3ecec813a95ce..14d4616bd45d2 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -110,6 +110,9 @@
var/mob/M = loc
M.update_worn_shoes()
+/obj/item/clothing/shoes/generate_digitigrade_icons(icon/base_icon, greyscale_colors)
+ return icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "boots_worn")
+
/**
* adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted
*
@@ -148,17 +151,13 @@
* *
* * user: who is the person interacting with the shoes?
*/
-/obj/item/clothing/shoes/proc/handle_tying(mob/user)
+/obj/item/clothing/shoes/proc/handle_tying(mob/living/user)
///our_guy here is the wearer, if one exists (and he must exist, or we don't care)
var/mob/living/carbon/human/our_guy = loc
if(!istype(our_guy))
return
- if (!isliving(user))
- return
-
- var/mob/living/living_user = user
- if (!(living_user.mobility_flags & MOBILITY_USE))
+ if (!isliving(user) || !(user.mobility_flags & MOBILITY_USE))
return
if(!in_range(user, our_guy))
@@ -179,7 +178,7 @@
adjust_laces(SHOES_UNTIED, user)
else // if they're someone else's shoes, go knot-wards
- if(istype(living_user) && living_user.body_position == STANDING_UP)
+ if(user.body_position == STANDING_UP)
to_chat(user, span_warning("You must be on the floor to interact with [src]!"))
return
if(tied == SHOES_KNOTTED)
@@ -204,12 +203,9 @@
user.visible_message(span_danger("[our_guy] stamps on [user]'s hand, mid-shoelace [tied ? "knotting" : "untying"]!"), span_userdanger("Ow! [our_guy] stamps on your hand!"), list(our_guy))
to_chat(our_guy, span_userdanger("You stamp on [user]'s hand! What the- [user.p_they()] [user.p_were()] [tied ? "knotting" : "untying"] your shoelaces!"))
user.emote("scream")
- if(istype(living_user))
- var/obj/item/bodypart/ouchie = living_user.get_bodypart(pick(GLOB.arm_zones))
- if(ouchie)
- ouchie.receive_damage(brute = 10)
- living_user.adjustStaminaLoss(40)
- living_user.Paralyze(10)
+ user.apply_damage(10, BRUTE, user.get_active_hand(), wound_bonus = CANT_WOUND)
+ user.apply_damage(40, STAMINA)
+ user.Paralyze(1 SECONDS)
///checking to make sure we're still on the person we're supposed to be, for lacing do_after's
/obj/item/clothing/shoes/proc/still_shoed(mob/living/carbon/our_guy)
diff --git a/code/modules/clothing/shoes/boots.dm b/code/modules/clothing/shoes/boots.dm
index 77e7b2ff369e2..2dba6ed24fce7 100644
--- a/code/modules/clothing/shoes/boots.dm
+++ b/code/modules/clothing/shoes/boots.dm
@@ -3,6 +3,7 @@
desc = "High speed, low drag combat boots."
icon_state = "jackboots"
inhand_icon_state = "jackboots"
+ supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
body_parts_covered = FEET|LEGS
armor_type = /datum/armor/shoes_combat
strip_delay = 40
@@ -45,6 +46,7 @@
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
icon_state = "jackboots"
inhand_icon_state = "jackboots"
+ supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
strip_delay = 30
equip_delay_other = 50
resistance_flags = NONE
@@ -71,6 +73,7 @@
desc = "Is it just me or is there a pair of jackboots on the floor?"
icon_state = "ftc_boots"
inhand_icon_state = null
+ supports_variations_flags = NONE
/obj/item/clothing/shoes/jackboots/floortile/Initialize(mapload)
. = ..()
@@ -81,6 +84,7 @@
desc = "Boots lined with 'synthetic' animal fur."
icon_state = "winterboots"
inhand_icon_state = null
+ supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
armor_type = /datum/armor/shoes_winterboots
cold_protection = FEET|LEGS
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
@@ -131,6 +135,7 @@
icon_state = "workboots"
inhand_icon_state = "jackboots"
armor_type = /datum/armor/shoes_workboots
+ supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
strip_delay = 20
equip_delay_other = 40
lace_time = 8 SECONDS
@@ -155,6 +160,7 @@
icon_state = "rus_shoes"
inhand_icon_state = null
lace_time = 8 SECONDS
+ supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
/obj/item/clothing/shoes/russian/Initialize(mapload)
. = ..()
diff --git a/code/modules/clothing/shoes/galoshes.dm b/code/modules/clothing/shoes/galoshes.dm
index 584ab3ff72ced..d42b8ffddb388 100644
--- a/code/modules/clothing/shoes/galoshes.dm
+++ b/code/modules/clothing/shoes/galoshes.dm
@@ -39,8 +39,3 @@
var/turf/open/t_loc = get_turf(src)
SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY)
-
-/obj/item/clothing/shoes/galoshes/doppler
- name = "purple galoshes"
- desc = "A pair of purple rubber boots, designed to prevent slipping on wet surfaces."
- icon_state = "galoshes_doppler"
diff --git a/code/modules/clothing/shoes/gunboots.dm b/code/modules/clothing/shoes/gunboots.dm
index de74703d449ed..6c9da817146c7 100644
--- a/code/modules/clothing/shoes/gunboots.dm
+++ b/code/modules/clothing/shoes/gunboots.dm
@@ -61,7 +61,7 @@
shot.firer = wearer // don't hit ourself that would be really annoying
shot.impacted = list(WEAKREF(wearer) = TRUE)
shot.def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) // they're fired from boots after all
- shot.preparePixelProjectile(target, wearer)
+ shot.aim_projectile(target, wearer)
if(!shot.suppressed)
wearer.visible_message(span_danger("[wearer]'s [name] fires \a [shot]!"), "", blind_message = span_hear("You hear a gunshot!"), vision_distance=COMBAT_MESSAGE_RANGE)
shot.fire()
diff --git a/code/modules/clothing/shoes/sneakers.dm b/code/modules/clothing/shoes/sneakers.dm
index 0ae1e6e9caad9..1fc47accd3534 100644
--- a/code/modules/clothing/shoes/sneakers.dm
+++ b/code/modules/clothing/shoes/sneakers.dm
@@ -9,9 +9,17 @@
greyscale_config_worn = /datum/greyscale_config/sneakers/worn
greyscale_config_inhand_left = /datum/greyscale_config/sneakers/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/sneakers/inhand_right
+ supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
flags_1 = IS_PLAYER_COLORABLE_1
interaction_flags_mouse_drop = NEED_HANDS
+/obj/item/clothing/shoes/sneakers/get_general_color(icon/base_icon)
+ var/colors = SSgreyscale.ParseColorString(greyscale_colors)
+ return colors ? colors[1] : ..()
+
+/obj/item/clothing/shoes/sneakers/generate_digitigrade_icons(icon/base_icon, greyscale_colors)
+ return icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "sneakers_worn")
+
/obj/item/clothing/shoes/sneakers/random/Initialize(mapload)
. = ..()
greyscale_colors = "#" + random_color() + "#" + random_color()
diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm
index eb8cb2a11e524..81a9a4809f521 100644
--- a/code/modules/clothing/spacesuits/_spacesuits.dm
+++ b/code/modules/clothing/spacesuits/_spacesuits.dm
@@ -36,6 +36,10 @@
. = ..()
if(fishing_modifier)
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
+ add_stabilizer()
+
+/obj/item/clothing/head/helmet/space/proc/add_stabilizer(loose_hat = TRUE)
+ AddComponent(/datum/component/hat_stabilizer, loose_hat = loose_hat)
/datum/armor/helmet_space
bio = 100
diff --git a/code/modules/clothing/spacesuits/pirate.dm b/code/modules/clothing/spacesuits/pirate.dm
index 8ead0aeaa6619..f9625467ccd19 100644
--- a/code/modules/clothing/spacesuits/pirate.dm
+++ b/code/modules/clothing/spacesuits/pirate.dm
@@ -39,6 +39,9 @@
desc = "A modified EVA helmet with a five-thousand credit Lizzy Vuitton hat affixed to the top, proving that working in deep space is no excuse for being poor."
icon_state = "spacetophat"
+/obj/item/clothing/head/helmet/space/pirate/tophat/add_stabilizer(loose_hat = FALSE)
+ return
+
/obj/item/clothing/suit/space/pirate/silverscale
name = "designer pirate suit"
desc = "A specially-made Cybersun branded space suit; the fine plastisilk exterior is woven from the cocoons of black-market Lümlan mothroaches \
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 0a672d5566ac3..d2c31498d184b 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -109,10 +109,12 @@
/obj/item/clothing/head/helmet/space/plasmaman/Initialize(mapload)
. = ..()
visor_toggling()
- AddComponent(/datum/component/hat_stabilizer)
update_appearance()
register_context()
+/obj/item/clothing/head/helmet/space/plasmaman/add_stabilizer(loose_hat = FALSE)
+ ..()
+
/obj/item/clothing/head/helmet/space/plasmaman/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
context[SCREENTIP_CONTEXT_ALT_LMB] = "Toggle Welding Screen"
if(istype(held_item, /obj/item/toy/crayon))
@@ -139,7 +141,7 @@
to_chat(user, span_notice("Your helmet's torch can't pass through your welding visor!"))
set_light_on(FALSE)
helmet_on = FALSE
- playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing
+ playsound(src, up ? SFX_VISOR_UP : SFX_VISOR_DOWN, 50, TRUE)
update_appearance()
/obj/item/clothing/head/helmet/space/plasmaman/update_icon_state()
diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm
index ecae343f68506..78ea1d2f3b7a1 100644
--- a/code/modules/clothing/suits/_suits.dm
+++ b/code/modules/clothing/suits/_suits.dm
@@ -43,3 +43,7 @@
if(ismob(loc))
var/mob/M = loc
M.update_worn_oversuit()
+
+/obj/item/clothing/suit/generate_digitigrade_icons(icon/base_icon, greyscale_colors)
+ var/icon/legs = icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "oversuit_worn")
+ return replace_icon_legs(base_icon, legs)
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 25b28c74d1a7a..919d1da261ecb 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -17,6 +17,7 @@
if(flags_inv & HIDEFACE)
AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES)
AddComponent(/datum/component/adjust_fishing_difficulty, 6)
+ AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE)
/datum/armor/head_bio_hood
bio = 100
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 2976314e60e5f..affe103e307bf 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -56,16 +56,6 @@
. = ..()
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
-//Janitor
-/obj/item/clothing/suit/apron/janitor_cloak
- name = "waterproof poncho"
- desc = "A transparent, waterproof cloak for your cleaning needs."
- icon_state = "janicloak"
- inhand_icon_state = null
- body_parts_covered = CHEST|GROIN|ARMS
-
-
-
//Captain
/obj/item/clothing/suit/jacket/capjacket
name = "captain's parade jacket"
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index bb42fb1ed3975..2608c41eb4ad5 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -109,6 +109,7 @@
if(flags_inv & HIDEFACE)
AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES)
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
+ AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE)
/datum/armor/utility_bomb_hood
melee = 20
@@ -189,6 +190,7 @@
if(flags_inv & HIDEFACE)
AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES)
AddComponent(/datum/component/adjust_fishing_difficulty, 7)
+ AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE)
/datum/armor/utility_radiation
bio = 60
diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm
index f09b6ac2f8585..581d1c49964b6 100644
--- a/code/modules/clothing/suits/wintercoats.dm
+++ b/code/modules/clothing/suits/wintercoats.dm
@@ -67,7 +67,8 @@
body_parts_covered = HEAD
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
- flags_inv = HIDEHAIR|HIDEEARS
+ flags_inv = HIDEEARS
+ hair_mask = HAIR_MASK_HIDE_WINTERHOOD
armor_type = /datum/armor/hooded_winterhood
// An coat intended for use for general crew EVA, with values close to those of the space suits found in EVA normally
@@ -78,6 +79,7 @@
/obj/item/clothing/suit/hooded/wintercoat/eva
name = "\proper Endotherm winter coat"
desc = "A thickly padded winter coat to keep the wearer well insulated no matter the circumstances. It has a harness for a larger oxygen tank attached to the back."
+ icon_state = "coateva"
w_class = WEIGHT_CLASS_BULKY
slowdown = 0.75
armor_type = /datum/armor/wintercoat_eva
@@ -85,7 +87,6 @@
equip_delay_other = 6 SECONDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT // Protects very cold.
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT // Protects a little hot.
- flags_inv = HIDEJUMPSUIT
clothing_flags = THICKMATERIAL
resistance_flags = NONE
hoodtype = /obj/item/clothing/head/hooded/winterhood/eva
@@ -105,6 +106,7 @@
/obj/item/clothing/head/hooded/winterhood/eva
name = "\proper Endotherm winter hood"
desc = "A thickly padded hood attached to an even thicker coat."
+ icon_state = "hood_eva"
armor_type = /datum/armor/winterhood_eva
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index 25e02975d093b..f8e7b7723a1c9 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -9,7 +9,6 @@
interaction_flags_click = NEED_DEXTERITY
armor_type = /datum/armor/clothing_under
supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
- digitigrade_greyscale_config_worn = /datum/greyscale_config/jumpsuit/worn_digi
equip_sound = 'sound/items/equip/jumpsuit_equip.ogg'
drop_sound = 'sound/items/handling/cloth_drop.ogg'
pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
@@ -147,6 +146,10 @@
*/
/// DOPPLER SHIFT REMOVAL END
+/obj/item/clothing/under/generate_digitigrade_icons(icon/base_icon, greyscale_colors)
+ var/icon/legs = icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "jumpsuit_worn")
+ return replace_icon_legs(base_icon, legs)
+
/obj/item/clothing/under/equipped(mob/living/user, slot)
..()
if((slot & ITEM_SLOT_ICLOTHING) && freshly_laundered)
diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm
index 9ae1c7d63e366..af64ca4e999e3 100644
--- a/code/modules/clothing/under/color.dm
+++ b/code/modules/clothing/under/color.dm
@@ -224,10 +224,12 @@
greyscale_config_inhand_left = null
greyscale_config_inhand_right = null
greyscale_config_worn = null
- digitigrade_greyscale_colors = "#3f3f3f"
can_adjust = FALSE
flags_1 = NONE
+/obj/item/clothing/under/color/rainbow/get_general_color(icon/base_icon)
+ return "#3f3f3f"
+
/obj/item/clothing/under/color/jumpskirt/rainbow
name = "rainbow jumpskirt"
desc = "A multi-colored jumpskirt!"
diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
index c25f6f7792942..71557e68a4797 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
@@ -59,7 +59,7 @@
/obj/item/clothing/under/plasmaman/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
if (!istype(tool, /obj/item/extinguisher_refill))
- return
+ return ..()
if (extinguishes_left == 5)
to_chat(user, span_notice("The inbuilt extinguisher is full."))
diff --git a/code/modules/clothing/under/jobs/centcom.dm b/code/modules/clothing/under/jobs/centcom.dm
index da1fe5d7a1d76..ccd268eb7641d 100644
--- a/code/modules/clothing/under/jobs/centcom.dm
+++ b/code/modules/clothing/under/jobs/centcom.dm
@@ -60,6 +60,7 @@
desc = "A dark colored uniform worn by CentCom's conscripted military forces."
icon_state = "military"
inhand_icon_state = "bl_suit"
+ can_adjust = FALSE
armor_type = /datum/armor/clothing_under/centcom_military
/datum/armor/clothing_under/centcom_military
diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm
index b0246f2deca66..35eb2db3029dd 100644
--- a/code/modules/clothing/under/jobs/civilian/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian/civilian.dm
@@ -108,24 +108,6 @@
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
can_adjust = FALSE
-/obj/item/clothing/under/rank/civilian/janitor/doppler
- name = "janitor uniform"
- desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
- icon_state = "janitor_doppler"
- inhand_icon_state = "janitor"
- body_parts_covered = CHEST|GROIN
- can_adjust = TRUE
- alt_covers_chest = TRUE
-
-/obj/item/clothing/under/rank/civilian/janitor/doppler_ct
- name = "janitor crop top"
- desc = "It's the unofficial uniform of the station's janitor. It has minor protection from biohazards."
- icon_state = "janitor_doppler_ct"
- inhand_icon_state = "janitor"
- body_parts_covered = CHEST|GROIN
- can_adjust = TRUE
- alt_covers_chest = TRUE
-
/obj/item/clothing/under/rank/civilian/lawyer
name = "Lawyer suit"
desc = "Slick threads."
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 70d2a5eeadb94..2c428f1c35c1a 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -33,7 +33,9 @@
desc = "Groovy!"
icon_state = "psyche"
inhand_icon_state = "p_suit"
- digitigrade_greyscale_colors = "#3f3f3f"
+
+/obj/item/clothing/under/misc/psyche/get_general_color(icon/base_icon)
+ return "#3f3f3f"
/obj/item/clothing/under/misc/vice_officer
name = "vice officer's jumpsuit"
diff --git a/code/modules/deathmatch/deathmatch_mapping.dm b/code/modules/deathmatch/deathmatch_mapping.dm
index a0651f7da121b..62058629cdb08 100644
--- a/code/modules/deathmatch/deathmatch_mapping.dm
+++ b/code/modules/deathmatch/deathmatch_mapping.dm
@@ -1,7 +1,7 @@
/area/deathmatch
name = "Deathmatch Arena"
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = UNIQUE_AREA | NOTELEPORT | EVENT_PROTECTED | QUIET_LOGS | NO_DEATH_MESSAGE | BINARY_JAMMING
/area/deathmatch/fullbright
diff --git a/code/modules/deathmatch/deathmatch_modifier.dm b/code/modules/deathmatch/deathmatch_modifier.dm
index 9671f19c92a33..edddbe7e267bc 100644
--- a/code/modules/deathmatch/deathmatch_modifier.dm
+++ b/code/modules/deathmatch/deathmatch_modifier.dm
@@ -82,7 +82,7 @@
description = "Unaffected by critical condition and pain"
/datum/deathmatch_modifier/tenacity/apply(mob/living/carbon/player, datum/deathmatch_lobby/lobby)
- player.add_traits(list(TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_ANALGESIA), DEATHMATCH_TRAIT)
+ player.add_traits(list(TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_ANALGESIA, TRAIT_NO_DAMAGE_OVERLAY), DEATHMATCH_TRAIT)
/datum/deathmatch_modifier/no_wounds
name = "No Wounds"
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index c81852958b4a8..59e2f0feb86b1 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -18,23 +18,13 @@
max_slots = 1,
max_specific_storage = WEIGHT_CLASS_NORMAL,
)
+ atom_storage.allow_quick_gather = TRUE
+ atom_storage.collection_mode = COLLECT_ONE
RegisterSignal(atom_storage, COMSIG_STORAGE_STORED_ITEM, PROC_REF(on_insert))
RegisterSignal(atom_storage, COMSIG_STORAGE_REMOVED_ITEM, PROC_REF(on_remove))
atom_storage.rustle_sound = 'sound/items/evidence_bag/evidence_bag_zip.ogg'
atom_storage.remove_rustle_sound = 'sound/items/evidence_bag/evidence_bag_unzip.ogg'
-/obj/item/evidencebag/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
- if(interacting_with == loc || !isitem(interacting_with) || HAS_TRAIT(interacting_with, TRAIT_COMBAT_MODE_SKIP_INTERACTION))
- return NONE
- if(atom_storage.attempt_insert(interacting_with, user))
- return ITEM_INTERACT_SUCCESS
- return NONE
-
-/obj/item/evidencebag/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
- if(atom_storage.attempt_insert(tool, user))
- return ITEM_INTERACT_SUCCESS
- return NONE
-
/obj/item/evidencebag/update_desc(updates)
. = ..()
if(!atom_storage.get_total_weight())
@@ -65,12 +55,15 @@
/obj/item/evidencebag/proc/on_insert(datum/storage/storage, obj/item/to_insert, mob/user, force)
SIGNAL_HANDLER
+
update_weight_class(to_insert.w_class)
/obj/item/evidencebag/proc/on_remove(datum/storage/storage, obj/item/to_remove, atom/remove_to_loc, silent)
SIGNAL_HANDLER
+
if(!atom_storage.get_total_weight())
return
+
update_weight_class(WEIGHT_CLASS_TINY)
/obj/item/evidencebag/attack_self(mob/user)
diff --git a/code/modules/escape_menu/details.dm b/code/modules/escape_menu/details.dm
index ab6ff05d3ea46..8f35781b8ab03 100644
--- a/code/modules/escape_menu/details.dm
+++ b/code/modules/escape_menu/details.dm
@@ -9,7 +9,7 @@ GLOBAL_DATUM(escape_menu_details, /atom/movable/screen/escape_menu/details)
return GLOB.escape_menu_details
/atom/movable/screen/escape_menu/details
- screen_loc = "EAST:-180,NORTH:-25"
+ screen_loc = "EAST:-180,NORTH:-34"
maptext_height = 100
maptext_width = 200
diff --git a/code/modules/escape_menu/escape_menu.dm b/code/modules/escape_menu/escape_menu.dm
index 57fe4b88813cc..38d456594de51 100644
--- a/code/modules/escape_menu/escape_menu.dm
+++ b/code/modules/escape_menu/escape_menu.dm
@@ -47,6 +47,10 @@ GLOBAL_LIST_EMPTY(escape_menus)
RegisterSignal(client, COMSIG_QDELETING, PROC_REF(on_client_qdel))
RegisterSignal(client, COMSIG_CLIENT_MOB_LOGIN, PROC_REF(on_client_mob_login))
+ SEND_SOUND(client, 'sound/misc/escape_menu/esc_open.ogg')
+ var/sound/esc_middle = sound('sound/misc/escape_menu/esc_middle.ogg', repeat = FALSE, channel = CHANNEL_ESCAPEMENU, volume = 80)
+ SEND_SOUND(client, esc_middle)
+
if (!isnull(ckey))
GLOB.escape_menus[ckey] = src
@@ -57,6 +61,10 @@ GLOBAL_LIST_EMPTY(escape_menus)
GLOB.escape_menus -= ckey
plane_master_controller.remove_filter("escape_menu_blur")
+ var/sound/esc_clear = sound(null, repeat = FALSE, channel = CHANNEL_ESCAPEMENU) //yes, I'm doing it like this with a null, no its absolutely intentional, cuts off the sound right as needed.
+ SEND_SOUND(client, esc_clear)
+ SEND_SOUND(client, 'sound/misc/escape_menu/esc_close.ogg')
+
return ..()
/datum/escape_menu/proc/on_client_qdel()
diff --git a/code/modules/escape_menu/leave_body.dm b/code/modules/escape_menu/leave_body.dm
index 428afe899dfcf..9bfb8b8a06910 100644
--- a/code/modules/escape_menu/leave_body.dm
+++ b/code/modules/escape_menu/leave_body.dm
@@ -9,7 +9,8 @@
stack_trace("The leave body menu was opened before the atoms SS. This shouldn't be possible, as the leave body menu should only be accessible when you have a body.")
page_holder.give_screen_object(new /atom/movable/screen/escape_menu/leave_body_button(
- src,
+ null,
+ /* hud_owner = */ null,
"Suicide",
"Perform a dramatic suicide in game",
/* pixel_offset = */ -105,
@@ -19,7 +20,8 @@
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/leave_body_button(
- src,
+ null,
+ /* hud_owner = */ null,
"Ghost",
"Exit quietly, leaving your body",
/* pixel_offset = */ 0,
@@ -30,7 +32,8 @@
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/leave_body_button(
- src,
+ null,
+ /* hud_owner = */ null,
"Back",
/* tooltip_text = */ null,
/* pixel_offset = */ 105,
@@ -84,6 +87,7 @@
/atom/movable/screen/escape_menu/leave_body_button/Initialize(
mapload,
+ datum/hud/hud_owner,
button_text,
tooltip_text,
pixel_offset,
diff --git a/code/modules/events/anomaly/anomaly_bioscrambler.dm b/code/modules/events/anomaly/anomaly_bioscrambler.dm
index 08afff8dd31c7..b67e70b2412c6 100644
--- a/code/modules/events/anomaly/anomaly_bioscrambler.dm
+++ b/code/modules/events/anomaly/anomaly_bioscrambler.dm
@@ -17,4 +17,4 @@
/datum/round_event/anomaly/anomaly_bioscrambler/announce(fake)
if(isnull(impact_area))
impact_area = placer.findValidArea()
- priority_announce("Biologic limb swapping agent detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name]. Wear biosuits or other protective gear to counter the effects. Calculated half-life of %9£$T$%F3 years.", "Anomaly Alert")
+ priority_announce("Biologic limb swapping agent detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name]. Wear biosuits or other protective gear to counter the effects.", "Anomaly Alert")
diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm
index dfd69a52f9f5e..7efd1eabbf9a8 100644
--- a/code/modules/events/disease_outbreak.dm
+++ b/code/modules/events/disease_outbreak.dm
@@ -111,6 +111,7 @@
/datum/disease/flu,
/datum/disease/fluspanish,
/datum/disease/magnitis,
+ /datum/disease/weightlessness,
/// And here are some that will never roll for real, just to mess around.
/datum/disease/death_sandwich_poisoning,
/datum/disease/dna_retrovirus,
@@ -138,7 +139,7 @@
virus_candidates += list(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish)
//The wacky ones
- virus_candidates += list(/datum/disease/magnitis, /datum/disease/anxiety)
+ virus_candidates += list(/datum/disease/magnitis, /datum/disease/anxiety, /datum/disease/weightlessness)
//The rest of the diseases either aren't conventional "diseases" or are too unique/extreme to be considered for a normal event
virus_type = pick(virus_candidates)
diff --git a/code/modules/events/immovable_rod/immovable_rod.dm b/code/modules/events/immovable_rod/immovable_rod.dm
index d73adf8ed756b..69e7883310aca 100644
--- a/code/modules/events/immovable_rod/immovable_rod.dm
+++ b/code/modules/events/immovable_rod/immovable_rod.dm
@@ -212,11 +212,8 @@
transform = transform.Scale(1.005, 1.005)
name = "[initial(name)] of sentient slaying +[num_sentient_mobs_hit]"
- if(iscarbon(smeared_mob))
- var/mob/living/carbon/smeared_carbon = smeared_mob
- smeared_carbon.adjustBruteLoss(100)
- var/obj/item/bodypart/penetrated_chest = smeared_carbon.get_bodypart(BODY_ZONE_CHEST)
- penetrated_chest?.receive_damage(60, wound_bonus = 20, sharpness=SHARP_POINTY)
+ smeared_mob.apply_damage(100, BRUTE, spread_damage = TRUE)
+ smeared_mob.apply_damage(60, BRUTE, BODY_ZONE_CHEST, wound_bonus = 20, sharpness = SHARP_POINTY)
if(smeared_mob.density || prob(10))
EX_ACT(smeared_mob, EXPLODE_HEAVY)
diff --git a/code/modules/events/tram_malfunction.dm b/code/modules/events/tram_malfunction.dm
index 600dfed805b2f..088285e4f17e2 100644
--- a/code/modules/events/tram_malfunction.dm
+++ b/code/modules/events/tram_malfunction.dm
@@ -42,7 +42,7 @@
/datum/round_event/tram_malfunction/end()
for(var/datum/transport_controller/linear/tram/malfunctioning_controller as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM])
- if(malfunctioning_controller.specific_transport_id == specific_transport_id && malfunctioning_controller.malf_active)
+ if(malfunctioning_controller.specific_transport_id == specific_transport_id && malfunctioning_controller.malf_active != TRANSPORT_SYSTEM_NORMAL)
malfunctioning_controller.end_malf_event()
return
diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm
index 685c24fcc2779..0284bef43724c 100644
--- a/code/modules/events/wormholes.dm
+++ b/code/modules/events/wormholes.dm
@@ -65,7 +65,7 @@ GLOBAL_LIST_EMPTY(all_wormholes) // So we can pick wormholes to teleport to
. = ..()
GLOB.all_wormholes -= src
-/obj/effect/portal/wormhole/teleport(atom/movable/M)
+/obj/effect/portal/wormhole/teleport(atom/movable/M, force = FALSE)
if(iseffect(M)) //sparks don't teleport
return
if(M.anchored)
diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm
index 4b4871e33f67d..b98ae843f7102 100644
--- a/code/modules/experisci/experiment/experiments.dm
+++ b/code/modules/experisci/experiment/experiments.dm
@@ -452,7 +452,7 @@
return
if (isandroid(check))
return TRUE
- if (check.organs < 6 || check.bodyparts < 6)
+ if (length(check.organs) < 6 || length(check.bodyparts) < 6)
return FALSE
var/static/list/augmented_organ_slots = list(
diff --git a/code/modules/experisci/experiment/physical_experiments.dm b/code/modules/experisci/experiment/physical_experiments.dm
index 6b88e19e4a3b6..60303814e44ef 100644
--- a/code/modules/experisci/experiment/physical_experiments.dm
+++ b/code/modules/experisci/experiment/physical_experiments.dm
@@ -21,9 +21,9 @@
/datum/experiment/physical/meat_wall_explosion/check_progress()
. += EXPERIMENT_PROG_BOOL("Fire an emitter at a tracked meat wall", is_complete())
-/datum/experiment/physical/meat_wall_explosion/proc/check_experiment(datum/source, obj/projectile/Proj)
+/datum/experiment/physical/meat_wall_explosion/proc/check_experiment(datum/source, obj/projectile/proj)
SIGNAL_HANDLER
- if(istype(Proj, /obj/projectile/beam/emitter))
+ if(istype(proj, /obj/projectile/beam/emitter))
finish_experiment(linked_experiment_handler)
/datum/experiment/physical/meat_wall_explosion/finish_experiment(datum/component/experiment_handler/experiment_handler)
diff --git a/code/modules/explorer_drone/loot.dm b/code/modules/explorer_drone/loot.dm
index b6aaa26c6c662..0609a05219df1 100644
--- a/code/modules/explorer_drone/loot.dm
+++ b/code/modules/explorer_drone/loot.dm
@@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(adventure_loot_generator_index,generate_generator_index())
var/datum/adventure_loot_generator/simple/cash/replacement = new
return replacement.generate()
var/chosen_pack_type = pick(still_locked_packs)
- return new /obj/item/trade_chip(null,chosen_pack_type)
+ return list(new /obj/item/trade_chip(null, chosen_pack_type))
/// Just picks and instatiates the path from the list
/datum/adventure_loot_generator/simple
@@ -107,7 +107,7 @@ GLOBAL_LIST_INIT(adventure_loot_generator_index,generate_generator_index())
var/chosen_pet_type = pick(possible_pets)
var/mob/living/basic/pet/pet = new chosen_pet_type()
carrier.add_occupant(pet)
- return carrier
+ return list(carrier)
/obj/item/antique
name = "antique"
diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm
index 7301f1a296e44..d83865497805c 100644
--- a/code/modules/fishing/aquarium/aquarium.dm
+++ b/code/modules/fishing/aquarium/aquarium.dm
@@ -1,14 +1,3 @@
-#define AQUARIUM_LAYER_STEP 0.01
-/// Aquarium content layer offsets
-#define AQUARIUM_MIN_OFFSET 0.02
-#define AQUARIUM_MAX_OFFSET 1
-/// The layer of the glass overlay
-#define AQUARIUM_GLASS_LAYER 0.01
-/// The layer of the aquarium pane borders
-#define AQUARIUM_BORDERS_LAYER AQUARIUM_MAX_OFFSET + AQUARIUM_LAYER_STEP
-/// Layer for stuff rendered below the glass overlay
-#define AQUARIUM_BELOW_GLASS_LAYER 0.01
-
/obj/structure/aquarium
name = "aquarium"
desc = "A vivarium in which aquatic fauna and flora are usually kept and displayed."
@@ -17,351 +6,75 @@
icon = 'icons/obj/aquarium/tanks.dmi'
icon_state = "aquarium_map"
+ base_icon_state = "aquarium"
integrity_failure = 0.3
- /// The icon state is used for mapping so mappers know what they're placing. This prefixes the real icon used in game.
- /// For an example, "aquarium" gives the base sprite of "aquarium_base", the glass is "aquarium_glass_water", and so on.
- var/icon_prefix = "aquarium"
-
- var/fluid_type = AQUARIUM_FLUID_FRESHWATER
- var/fluid_temp = DEFAULT_AQUARIUM_TEMP
- var/min_fluid_temp = MIN_AQUARIUM_TEMP
- var/max_fluid_temp = MAX_AQUARIUM_TEMP
-
- ///While the feed storage is not empty, this is the interval which the fish are fed.
- var/feeding_interval = 3 MINUTES
- ///The last time fishes were fed by the acquarium itsef.
- var/last_feeding
-
- /// Can fish reproduce in this quarium.
- var/reproduction_and_growth = TRUE
-
//This is the area where fish can swim
var/aquarium_zone_min_px = 2
var/aquarium_zone_max_px = 31
var/aquarium_zone_min_py = 10
var/aquarium_zone_max_py = 28
- var/list/fluid_types = list(AQUARIUM_FLUID_SALTWATER, AQUARIUM_FLUID_FRESHWATER, AQUARIUM_FLUID_SULPHWATEVER, AQUARIUM_FLUID_AIR)
-
- var/panel_open = FALSE
+ /// Default beauty of the aquarium, without anything inside it
+ var/default_beauty = 150
- ///Current layers in use by aquarium contents
- var/list/used_layers = list()
-
- /// /obj/item/fish in the aquarium, sorted by type - does not include things with aquarium visuals that are not fish
- var/list/tracked_fish_by_type
-
- /// Var used to keep track of the current beauty of the aquarium, which can be throughfully changed by aquarium content.
- var/current_beauty = 150
+ ///Tracks the fluid type of our aquarium component. Used for the icon suffix of some overlays and splashing water when broken.
+ var/fluid_type = AQUARIUM_FLUID_FRESHWATER
/obj/structure/aquarium/Initialize(mapload)
. = ..()
- update_appearance()
- RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(track_if_fish))
- AddElement(/datum/element/relay_attackers)
- RegisterSignal(src, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(on_attacked))
- create_reagents(6, SEALED_CONTAINER)
- RegisterSignal(reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed))
+ AddComponent(/datum/component/aquarium, aquarium_zone_min_px, aquarium_zone_max_px, aquarium_zone_min_py, aquarium_zone_max_py, default_beauty)
AddComponent(/datum/component/plumbing/aquarium, start = anchored)
- if(current_beauty)
- AddElement(/datum/element/beauty, current_beauty)
- ADD_KEEP_TOGETHER(src, INNATE_TRAIT)
-
-/obj/structure/aquarium/proc/track_if_fish(atom/source, atom/initialized)
- SIGNAL_HANDLER
- if(isfish(initialized))
- LAZYADDASSOCLIST(tracked_fish_by_type, initialized.type, initialized)
-
-/obj/structure/aquarium/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
- . = ..()
- if(isfish(arrived))
- LAZYADDASSOCLIST(tracked_fish_by_type, arrived.type, arrived)
-
-/obj/structure/aquarium/Exited(atom/movable/gone, direction)
- . = ..()
- LAZYREMOVEASSOC(tracked_fish_by_type, gone.type, gone)
-
-/obj/structure/aquarium/proc/start_autofeed(datum/source, new_reagent, amount, reagtemp, data, no_react)
- SIGNAL_HANDLER
- START_PROCESSING(SSobj, src)
- UnregisterSignal(reagents, COMSIG_REAGENTS_NEW_REAGENT)
-
-/obj/structure/aquarium/process(seconds_per_tick)
- if(!reagents.total_volume)
- RegisterSignal(reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed))
- return PROCESS_KILL
- if(world.time < last_feeding + feeding_interval)
- return
- last_feeding = world.time
- var/list/fishes = get_fishes()
- for(var/obj/item/fish/fish as anything in fishes)
- fish.feed(reagents)
-
-/// Returns tracked_fish_by_type but flattened and without the items in the blacklist, also shuffled if shuffle is TRUE.
-/obj/structure/aquarium/proc/get_fishes(shuffle = FALSE, blacklist)
- . = list()
- for(var/fish_type in tracked_fish_by_type)
- . += tracked_fish_by_type[fish_type]
- . -= blacklist
- if(shuffle)
- . = shuffle(.)
- return .
-
-/obj/structure/aquarium/proc/request_layer(layer_type)
- /**
- * base aq layer
- * min_offset = this value is returned on bottom layer mode
- * min_offset + 0.1 fish1
- * min_offset + 0.2 fish2
- * ... these layers are returned for auto layer mode and tracked by used_layers
- * min_offset + max_offset = this value is returned for top layer mode
- * min_offset + max_offset + 1 = this is used for glass overlay
- */
- //optional todo: hook up sending surface changed on aquarium changing layers
- switch(layer_type)
- if(AQUARIUM_LAYER_MODE_BEHIND_GLASS)
- return layer + AQUARIUM_BELOW_GLASS_LAYER
- if(AQUARIUM_LAYER_MODE_BOTTOM)
- return layer + AQUARIUM_MIN_OFFSET
- if(AQUARIUM_LAYER_MODE_TOP)
- return layer + AQUARIUM_MAX_OFFSET
- if(AQUARIUM_LAYER_MODE_AUTO)
- var/chosen_layer = AQUARIUM_MIN_OFFSET + AQUARIUM_LAYER_STEP
- while((chosen_layer in used_layers) && (chosen_layer <= AQUARIUM_MAX_OFFSET))
- chosen_layer += AQUARIUM_LAYER_STEP
- used_layers += chosen_layer
- return layer + chosen_layer
-
-/obj/structure/aquarium/proc/free_layer(value)
- used_layers -= value
-
-/obj/structure/aquarium/proc/get_surface_properties()
- . = list()
- .[AQUARIUM_PROPERTIES_PX_MIN] = aquarium_zone_min_px
- .[AQUARIUM_PROPERTIES_PX_MAX] = aquarium_zone_max_px
- .[AQUARIUM_PROPERTIES_PY_MIN] = aquarium_zone_min_py
- .[AQUARIUM_PROPERTIES_PY_MAX] = aquarium_zone_max_py
+ RegisterSignal(src, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_aquarium_liquid_changed))
+ update_appearance()
/obj/structure/aquarium/update_icon()
. = ..()
///"aquarium_map" is used for mapping, so mappers can tell what it's.
- icon_state = icon_prefix + "_base"
+ icon_state = base_icon_state + "_base"
+
+/obj/structure/aquarium/proc/on_aquarium_liquid_changed(datum/source, fluid_type)
+ SIGNAL_HANDLER
+ src.fluid_type = fluid_type
+ update_appearance()
/obj/structure/aquarium/update_overlays()
. = ..()
- if(panel_open)
- . += icon_prefix + "_panel"
+ if(HAS_TRAIT(src, TRAIT_AQUARIUM_PANEL_OPEN))
+ . += base_icon_state + "_panel"
+ var/icon_suffix = fluid_type == AQUARIUM_FLUID_AIR ? "air" : "water"
///The glass overlay
- var/suffix = fluid_type == AQUARIUM_FLUID_AIR ? "air" : "water"
if(broken)
- suffix += "_broken"
- . += mutable_appearance(icon, icon_prefix + "_glass_cracks", layer = layer + AQUARIUM_BORDERS_LAYER)
- . += mutable_appearance(icon, icon_prefix + "_glass_[suffix]", layer = layer + AQUARIUM_GLASS_LAYER)
- . += mutable_appearance(icon, icon_prefix + "_borders", layer = layer + AQUARIUM_BORDERS_LAYER)
-
-/obj/structure/aquarium/examine(mob/user)
- . = ..()
- . += span_notice("Alt-click to [panel_open ? "close" : "open"] the control and feed panel.")
- if(panel_open && reagents.total_volume)
- . += span_notice("You can use a plunger to empty the feed storage.")
-
-/obj/structure/aquarium/click_alt(mob/living/user)
- panel_open = !panel_open
- balloon_alert(user, "panel [panel_open ? "open" : "closed"]")
- if(panel_open)
- reagents.flags |= TRANSPARENT|REFILLABLE
- else
- reagents.flags &= ~(TRANSPARENT|REFILLABLE)
- update_appearance()
- return CLICK_ACTION_SUCCESS
+ icon_suffix += "_broken"
+ . += mutable_appearance(icon, base_icon_state + "_glass_cracks", layer = layer + AQUARIUM_BORDERS_LAYER)
+ . += mutable_appearance(icon, base_icon_state + "_glass_[icon_suffix]", layer = layer + AQUARIUM_GLASS_LAYER)
+ . += mutable_appearance(icon, base_icon_state + "_borders", layer = layer + AQUARIUM_BORDERS_LAYER)
/obj/structure/aquarium/wrench_act(mob/living/user, obj/item/tool)
. = ..()
default_unfasten_wrench(user, tool)
return ITEM_INTERACT_SUCCESS
-/obj/structure/aquarium/plunger_act(obj/item/plunger/P, mob/living/user, reinforced)
- if(!panel_open)
- return
- user.balloon_alert_to_viewers("plunging...")
- if(do_after(user, 3 SECONDS, target = src))
- user.balloon_alert_to_viewers("finished plunging")
- reagents.expose(get_turf(src), TOUCH) //splash on the floor
- reagents.clear_reagents()
-
-/obj/structure/aquarium/attackby(obj/item/item, mob/living/user, params)
- if(broken)
- var/obj/item/stack/sheet/glass/glass = item
- if(istype(glass))
- if(glass.get_amount() < 2)
- balloon_alert(user, "it needs two sheets!")
- return
- balloon_alert(user, "fixing the aquarium...")
- if(do_after(user, 2 SECONDS, target = src))
- glass.use(2)
- broken = FALSE
- atom_integrity = max_integrity
- update_appearance()
- return TRUE
- else
- var/insert_attempt = SEND_SIGNAL(item, COMSIG_TRY_INSERTING_IN_AQUARIUM, src)
- switch(insert_attempt)
- if(COMSIG_CAN_INSERT_IN_AQUARIUM)
- if(!user.transferItemToLoc(item, src))
- user.balloon_alert(user, "stuck to your hand!")
- return TRUE
- balloon_alert(user, "added to aquarium")
- update_appearance()
- return TRUE
- if(COMSIG_CANNOT_INSERT_IN_AQUARIUM)
- balloon_alert(user, "cannot add to aquarium!")
- return TRUE
-
- if(istype(item, /obj/item/reagent_containers/cup/fish_feed) && !panel_open)
- if(!item.reagents.total_volume)
- balloon_alert(user, "[item] is empty!")
- return TRUE
- var/list/fishes = get_fishes()
- if(!length(fishes))
- balloon_alert(user, "no fish to feed!")
- return TRUE
- for(var/obj/item/fish/fish as anything in fishes)
- fish.feed(item.reagents)
- balloon_alert(user, "fed the fish")
- return TRUE
- if(istype(item, /obj/item/aquarium_upgrade))
- var/obj/item/aquarium_upgrade/upgrade = item
- if(upgrade.upgrade_from_type != type)
- balloon_alert(user, "wrong kind of aquarium!")
- return
- balloon_alert(user, "upgrading...")
- if(!do_after(user, 5 SECONDS, src))
- return
- var/obj/structure/aquarium/upgraded_aquarium = new upgrade.upgrade_to_type(loc)
- for(var/atom/movable/moving in contents)
- moving.forceMove(upgraded_aquarium)
- balloon_alert(user, "upgraded")
- qdel(upgrade)
- qdel(src)
- return
- return ..()
-
-/obj/structure/aquarium/proc/on_attacked(datum/source, mob/attacker, attack_flags)
- var/list/fishes = get_fishes()
- //I wish this were an aquarium signal, but the aquarium_content component got in the way.
- for(var/obj/item/fish/fish as anything in fishes)
- SEND_SIGNAL(fish, COMSIG_FISH_STIRRED)
-
-/obj/structure/aquarium/interact(mob/user)
- if(panel_open)
- return ..() //call base ui_interact
- else
- admire(user)
-
-///Apply mood bonus depending on aquarium status
-/obj/structure/aquarium/proc/admire(mob/living/user)
- user.balloon_alert(user, "admiring aquarium...")
- if(!do_after(user, 5 SECONDS, target = src))
- return
- var/alive_fish = 0
- var/dead_fish = 0
- var/list/tracked_fish = get_fishes()
- for(var/obj/item/fish/fish in tracked_fish)
- if(fish.status == FISH_ALIVE)
- alive_fish++
- else
- dead_fish++
-
- var/morb = HAS_MIND_TRAIT(user, TRAIT_MORBID)
- //Check if there are live fish - good mood
- //All fish dead - bad mood.
- //No fish - nothing.
- if(alive_fish > 0)
- user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_bad : /datum/mood_event/aquarium_positive)
- else if(dead_fish > 0)
- user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_good : /datum/mood_event/aquarium_negative)
- // Could maybe scale power of this mood with number/types of fish
-
-/obj/structure/aquarium/ui_data(mob/user)
- . = ..()
- .["fluidType"] = fluid_type
- .["temperature"] = fluid_temp
- .["allowBreeding"] = reproduction_and_growth
- .["fishData"] = list()
- .["feedingInterval"] = feeding_interval / (1 MINUTES)
- .["propData"] = list()
- for(var/atom/movable/item in contents)
- if(isfish(item))
- var/obj/item/fish/fish = item
- .["fishData"] += list(list(
- "fish_ref" = REF(fish),
- "fish_name" = uppertext(fish.name),
- "fish_happiness" = fish.get_happiness_value(),
- "fish_icon" = fish::icon,
- "fish_icon_state" = fish::icon_state,
- "fish_health" = fish.health,
- ))
- continue
- .["propData"] += list(list(
- "prop_ref" = REF(item),
- "prop_name" = item.name,
- "prop_icon" = item::icon,
- "prop_icon_state" = item::icon_state,
- ))
-
-/obj/structure/aquarium/ui_static_data(mob/user)
- . = ..()
- //I guess these should depend on the fluid so lava critters can get high or stuff below water freezing point but let's keep it simple for now.
- .["minTemperature"] = min_fluid_temp
- .["maxTemperature"] = max_fluid_temp
- .["fluidTypes"] = fluid_types
- .["heartIcon"] = 'icons/effects/effects.dmi'
-
-/obj/structure/aquarium/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
- . = ..()
- if(.)
+/obj/structure/aquarium/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if(!istype(tool, /obj/item/stack/sheet/glass))
return
- var/mob/user = usr
- switch(action)
- if("temperature")
- var/temperature = params["temperature"]
- if(isnum(temperature))
- fluid_temp = clamp(temperature, min_fluid_temp, max_fluid_temp)
- . = TRUE
- if("fluid")
- if(params["fluid"] in fluid_types)
- fluid_type = params["fluid"]
- SEND_SIGNAL(src, COMSIG_AQUARIUM_FLUID_CHANGED, fluid_type)
- . = TRUE
- if("allow_breeding")
- reproduction_and_growth = !reproduction_and_growth
- . = TRUE
- if("feeding_interval")
- feeding_interval = params["feeding_interval"] MINUTES
- . = TRUE
- if("pet_fish")
- var/obj/item/fish/fish = locate(params["fish_reference"]) in contents
- fish?.pet_fish(user)
- if("remove_item")
- var/atom/movable/item = locate(params["item_reference"]) in contents
- item?.forceMove(drop_location())
- to_chat(user, span_notice("You take out [item] from [src]."))
- if("rename_fish")
- var/new_name = sanitize_name(params["chosen_name"])
- var/atom/movable/fish = locate(params["fish_reference"]) in contents
- if(!fish || !new_name || new_name == fish.name)
- return
- fish.AddComponent(/datum/component/rename, new_name, fish.desc)
-
-/obj/structure/aquarium/ui_interact(mob/user, datum/tgui/ui)
- . = ..()
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "Aquarium", name)
- ui.open()
+ if(!broken)
+ balloon_alert(user, "aquarium not broken!")
+ return ITEM_INTERACT_BLOCKING
+ var/obj/item/stack/sheet/glass/glass = tool
+ if(glass.get_amount() < 2)
+ balloon_alert(user, "it needs two sheets!")
+ return ITEM_INTERACT_BLOCKING
+ balloon_alert(user, "fixing the aquarium...")
+ if(!do_after(user, 2 SECONDS, target = src))
+ return ITEM_INTERACT_BLOCKING
+ glass.use(2)
+ broken = FALSE
+ atom_integrity = max_integrity
+ update_appearance()
+ return ITEM_INTERACT_SUCCESS
/obj/structure/aquarium/atom_break(damage_flag)
. = ..()
@@ -377,50 +90,172 @@
else
possible_destinations_for_fish = list(droploc)
playsound(src, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
- for(var/atom/movable/fish in contents)
- fish.forceMove(pick(possible_destinations_for_fish))
+ for(var/atom/movable/content as anything in contents)
+ content.forceMove(pick(possible_destinations_for_fish))
if(fluid_type != AQUARIUM_FLUID_AIR)
var/datum/reagents/reagent_splash = new()
reagent_splash.add_reagent(/datum/reagent/water, 30)
chem_splash(droploc, null, 3, list(reagent_splash))
update_appearance()
-#undef AQUARIUM_LAYER_STEP
-#undef AQUARIUM_MIN_OFFSET
-#undef AQUARIUM_MAX_OFFSET
-#undef AQUARIUM_GLASS_LAYER
-#undef AQUARIUM_BORDERS_LAYER
-#undef AQUARIUM_BELOW_GLASS_LAYER
-
-/obj/structure/aquarium/lawyer
+/obj/structure/aquarium/prefilled
anchored = TRUE
-/obj/structure/aquarium/lawyer/Initialize(mapload)
+/obj/structure/aquarium/prefilled/Initialize(mapload)
. = ..()
+ ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) //start with safe mode on
+
new /obj/item/aquarium_prop/sand(src)
new /obj/item/aquarium_prop/seaweed(src)
- if(prob(85))
- new /obj/item/fish/goldfish/gill(src)
- reagents.add_reagent(/datum/reagent/consumable/nutriment, 2)
+ new /obj/item/fish/goldfish(src)
+ new /obj/item/fish/angelfish(src)
+ new /obj/item/fish/guppy(src)
+
+ //They'll be alive for about 30 minutes with this amount.
+ reagents.add_reagent(/datum/reagent/consumable/nutriment, 3)
+
+/obj/item/fish_tank
+ name = "fish tank"
+ desc = "A more portable sort of aquarium to store various fishes in, unless they're too big or there're too many of them."
+ icon = 'icons/obj/aquarium/tanks.dmi'
+ icon_state = "fish_tank_map"
+ base_icon_state = "fish_tank"
+ force = 5
+ throwforce = 5
+ throw_range = 3
+ w_class = WEIGHT_CLASS_BULKY
+ item_flags = SLOWS_WHILE_IN_HAND
+
+ custom_price = PAYCHECK_CREW * 9
+
+ ///Tracks the fluid type of our aquarium component. Used for overlays
+ var/fluid_type = AQUARIUM_FLUID_FRESHWATER
+
+ ///Fish which size exceed this value cannot be inserted
+ var/maximum_relative_size = 100
+ ///Fish cannot be inserted if the sum of the size of all fish in this tank exceeds this value.
+ var/max_total_size = 220
+ ///Tracks the sum of the size of all fish in this tank
+ var/current_summed_size = 0
+ ///Tracks the sum of the weight of all fish in this tank
+ var/current_summed_weight = 0
+
+ var/slowdown_coeff = 1
+
+ ///The minimum fluid temperature of this fish tank
+ var/min_fluid_temp = MIN_AQUARIUM_TEMP + 12
+ ///The maximum fluid temperature of this fish tank
+ var/max_fluid_temp = MAX_AQUARIUM_TEMP - 32
+ ///The reagent capacity of this fish tank
+ var/reagent_size = 4
+
+/obj/item/fish_tank/Initialize(mapload)
+ . = ..()
+ update_appearance()
+ AddComponent(\
+ /datum/component/aquarium,\
+ min_px = 6,\
+ max_px = 26,\
+ min_py = 6,\
+ max_py = 24,\
+ default_beauty = 100,\
+ reagents_size = src.reagent_size,\
+ min_fluid_temp = src.min_fluid_temp,\
+ max_fluid_temp = src.max_fluid_temp,\
+ )
+ AddComponent(/datum/component/plumbing/aquarium, start = anchored)
+ RegisterSignal(src, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_aquarium_liquid_changed))
+ RegisterSignal(src, COMSIG_AQUARIUM_CAN_INSERT, PROC_REF(can_insert))
+ RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(on_new_fish))
+
+/obj/item/fish_tank/update_icon()
+ . = ..()
+ ///"aquarium_map" is used for mapping, so mappers can tell what it's.
+ icon_state = base_icon_state
+
+/obj/item/fish_tank/proc/on_aquarium_liquid_changed(datum/source, fluid_type)
+ SIGNAL_HANDLER
+ src.fluid_type = fluid_type
+ update_appearance()
+
+/obj/item/fish_tank/update_overlays()
+ . = ..()
+ . += "[base_icon_state]_panel[HAS_TRAIT(src, TRAIT_AQUARIUM_PANEL_OPEN) ? "_open" : ""]"
+ . += mutable_appearance(icon, "[base_icon_state]_[fluid_type == AQUARIUM_FLUID_AIR ? "air" : "water"]", layer = layer + AQUARIUM_GLASS_LAYER)
+ . += mutable_appearance(icon, "[base_icon_state]_borders", layer = layer + AQUARIUM_BORDERS_LAYER)
+
+/obj/item/fish_tank/proc/can_insert(atom/movable/source, obj/item/item, mob/living/user)
+ SIGNAL_HANDLER
+ if(!isfish(item))
+ return
+ var/obj/item/fish/fish = item
+ if(fish.size > maximum_relative_size)
+ balloon_alert(user, "fish is too big!")
+ return COMSIG_CANNOT_INSERT_IN_AQUARIUM
+ if(current_summed_size > max_total_size)
+ balloon_alert(user, "fish tank is full!")
+ return COMSIG_CANNOT_INSERT_IN_AQUARIUM
+ return COMSIG_CAN_INSERT_IN_AQUARIUM
+
+/obj/item/fish_tank/Entered(atom/movable/entered)
+ . = ..()
+ on_new_fish(src, entered)
+
+/obj/item/fish_tank/proc/on_new_fish(datum/source, atom/movable/movable)
+ SIGNAL_HANDLER
+ if(!isfish(movable))
+ return
+ var/obj/item/fish/fish = movable
+ change_size_weight(fish.size, fish.weight)
+ RegisterSignal(fish, COMSIG_FISH_UPDATE_SIZE_AND_WEIGHT, PROC_REF(on_fish_size_weight_updated))
+
+/obj/item/fish_tank/proc/on_fish_size_weight_updated(obj/item/fish/source, new_size, new_weight)
+ SIGNAL_HANDLER
+ change_size_weight(new_size - source.size, new_weight - source.weight)
+
+/obj/item/fish_tank/Exited(atom/movable/gone)
+ if(isfish(gone))
+ var/obj/item/fish/fish = gone
+ change_size_weight(-fish.size, -fish.weight)
+ UnregisterSignal(fish, COMSIG_FISH_UPDATE_SIZE_AND_WEIGHT)
+ return ..()
+
+/obj/item/fish_tank/proc/change_size_weight(size_change, weight_change)
+ current_summed_size += size_change
+ current_summed_weight += weight_change
+ if(current_summed_size > max_total_size)
+ ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, INNATE_TRAIT)
else
- new /obj/item/fish/goldfish/three_eyes/gill(src)
- reagents.add_reagent(/datum/reagent/toxin/mutagen, 2) //three eyes goldfish feed on mutagen.
+ REMOVE_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, INNATE_TRAIT)
+ if(HAS_TRAIT(src, TRAIT_SPEED_POTIONED) || current_summed_weight < FISH_WEIGHT_SLOWDOWN)
+ slowdown = 0
+ drag_slowdown = 0
+ else
+ slowdown = GET_FISH_SLOWDOWN(current_summed_weight) * slowdown_coeff
+ drag_slowdown = slowdown * 0.5
+ if(ismob(loc))
+ var/mob/mob = loc
+ mob.update_equipment_speed_mods()
+ force = min(2 + (GET_FISH_WEIGHT_RANK(current_summed_weight) * 3), 21)
+ throwforce = force
-/obj/structure/aquarium/prefilled
- anchored = TRUE
+///The lawyer's own pet goldfish's fish tank. It used to be an aquarium, but now it can be held and carried around.
+/obj/item/fish_tank/lawyer
-/obj/structure/aquarium/prefilled/Initialize(mapload)
+/obj/item/fish_tank/lawyer/Initialize(mapload)
. = ..()
+ ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) //start with safe mode on
+
new /obj/item/aquarium_prop/sand(src)
new /obj/item/aquarium_prop/seaweed(src)
- new /obj/item/fish/goldfish(src)
- new /obj/item/fish/angelfish(src)
- new /obj/item/fish/guppy(src)
-
- //They'll be alive for about 30 minutes with this amount.
- reagents.add_reagent(/datum/reagent/consumable/nutriment, 3)
+ if(prob(85))
+ new /obj/item/fish/goldfish/gill(src)
+ reagents.add_reagent(/datum/reagent/consumable/nutriment, 3)
+ else
+ new /obj/item/fish/goldfish/three_eyes/gill(src)
+ reagents.add_reagent(/datum/reagent/toxin/mutagen, 3) //three eyes goldfish feed on mutagen.
diff --git a/code/modules/fishing/aquarium/aquarium_kit.dm b/code/modules/fishing/aquarium/aquarium_kit.dm
index 17dd518710d9d..f18f67b931370 100644
--- a/code/modules/fishing/aquarium/aquarium_kit.dm
+++ b/code/modules/fishing/aquarium/aquarium_kit.dm
@@ -117,20 +117,20 @@
/obj/item/aquarium_kit
name = "DIY Aquarium Construction Kit"
- desc = "Everything you need to build your own aquarium. Raw materials sold separately."
+ desc = "Everything you need to build your own aquarium or fish tank. Raw materials sold separately."
icon = 'icons/obj/aquarium/supplies.dmi'
icon_state = "construction_kit"
w_class = WEIGHT_CLASS_TINY
/obj/item/aquarium_kit/Initialize(mapload)
. = ..()
- var/static/list/recipes = list(/datum/crafting_recipe/aquarium)
+ var/static/list/recipes = list(/datum/crafting_recipe/aquarium, /datum/crafting_recipe/fish_tank)
AddElement(/datum/element/slapcrafting, recipes)
/obj/item/aquarium_prop
name = "generic aquarium prop"
desc = "very boring"
- icon = 'icons/obj/aquarium/supplies.dmi'
+ icon = 'icons/obj/aquarium/tanks.dmi'
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/plastic = COIN_MATERIAL_AMOUNT)
@@ -141,15 +141,21 @@
. = ..()
//It's important that we register the signals before the component is attached.
RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, PROC_REF(generate_aquarium_appearance))
- AddComponent(/datum/component/aquarium_content, beauty = beauty)
+ AddComponent(/datum/component/aquarium_content)
ADD_TRAIT(src, TRAIT_UNIQUE_AQUARIUM_CONTENT, INNATE_TRAIT)
-/obj/item/aquarium_prop/proc/generate_aquarium_appearance(datum/source, obj/effect/aquarium/visual)
+ RegisterSignal(src, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, PROC_REF(get_aquarium_beauty))
+
+/obj/item/aquarium_prop/proc/generate_aquarium_appearance(datum/source, obj/effect/aquarium/visual, atom/movable/aquarium)
SIGNAL_HANDLER
- visual.icon = icon
- visual.icon_state = icon_state
+ visual.icon = aquarium.icon
+ visual.icon_state = "[icon_state][isitem(aquarium) ? "_fish_tank" : ""]"
visual.layer_mode = layer_mode
+/obj/item/aquarium_prop/proc/get_aquarium_beauty(datum/source, list/beauty_holder)
+ SIGNAL_HANDLER
+ beauty_holder += beauty
+
/obj/item/aquarium_prop/rocks
name = "decorative rocks"
desc = "A bunch of tiny plastic rocks for decorating an aquarium. Surely you could have just used real pebbles?"
diff --git a/code/modules/fishing/aquarium/aquarium_upgrades.dm b/code/modules/fishing/aquarium/aquarium_upgrades.dm
index c73e6e9d230ae..042074500afb0 100644
--- a/code/modules/fishing/aquarium/aquarium_upgrades.dm
+++ b/code/modules/fishing/aquarium/aquarium_upgrades.dm
@@ -11,8 +11,25 @@
/// typepath of the new aquarium subtype created.
var/upgrade_to_type = /obj/structure/aquarium
+/obj/item/aquarium_upgrade/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
+ if(!HAS_TRAIT(interacting_with, TRAIT_IS_AQUARIUM))
+ return NONE
+ if(upgrade_from_type != interacting_with.type)
+ interacting_with.balloon_alert(user, "wrong kind of aquarium!")
+ return ITEM_INTERACT_BLOCKING
+ interacting_with.balloon_alert(user, "upgrading...")
+ if(!PERFORM_ALL_TESTS(aquarium_upgrade) && !do_after(user, 5 SECONDS, interacting_with))
+ return ITEM_INTERACT_BLOCKING
+ var/atom/movable/upgraded_aquarium = new upgrade_to_type(interacting_with.drop_location())
+ //This should transfer all the fish, reagents and settings from the aquarium component
+ interacting_with.TransferComponents(upgraded_aquarium)
+ upgraded_aquarium.balloon_alert(user, "upgraded")
+ qdel(src)
+ qdel(interacting_with)
+ return ITEM_INTERACT_SUCCESS
+
/obj/item/aquarium_upgrade/bioelec_gen
- name = "Aquarium Bioelectricity Kit"
+ name = "aquarium bioelectricity kit"
desc = "All the required components to allow an aquarium to harness energy bioelectric fish."
icon_state = "bioelec_kit"
upgrade_to_type = /obj/structure/aquarium/bioelec_gen
@@ -22,9 +39,13 @@
desc = "An unconventional type of generator that boosts and harvests the energy produced by bioelectric fish."
icon_state = "bioelec_map"
- icon_prefix = "bioelec"
+ base_icon_state = "bioelec"
+
+ default_beauty = 0
- current_beauty = 0
+/obj/structure/aquarium/bioelec_gen/Initialize(mapload)
+ . = ..()
+ ADD_TRAIT(src, TRAIT_BIOELECTRIC_GENERATOR, INNATE_TRAIT)
/obj/structure/aquarium/bioelec_gen/zap_act(power, zap_flags)
var/explosive = zap_flags & ZAP_MACHINE_EXPLOSIVE
@@ -37,3 +58,23 @@
. += span_boldwarning("WARNING! WARNING! WARNING!")
. += span_warning("The bioelectric potential of the fish inside is magnified to dangerous levels by the generator.")
. += span_notice("Tesla coils are required to collect this magnified energy... and you'll want a grounding rod to protect yourself as well.")
+
+/obj/item/aquarium_upgrade/bluespace_tank
+ name = "bluespace fish tank kit"
+ desc = "The required components to upgrade your portable fish tank into bottomless, handheld aquarium."
+ icon_state = "bluespace_kit"
+ upgrade_from_type = /obj/item/fish_tank
+ upgrade_to_type = /obj/item/fish_tank/bluespace
+
+/obj/item/fish_tank/bluespace
+ name = "bluespace fish tank"
+ desc = "All the capacity of a bulky room aquarium, squeezed in a bag-sized rectangular cuboid."
+ icon_state = "fish_tank_bluespace_map"
+ base_icon_state = "fish_tank_bluespace"
+ w_class = WEIGHT_CLASS_NORMAL
+ maximum_relative_size = INFINITY
+ max_total_size = 2000
+ slowdown_coeff = 0.15
+ min_fluid_temp = MIN_AQUARIUM_TEMP
+ max_fluid_temp = MAX_AQUARIUM_TEMP
+ reagent_size = 6
diff --git a/code/modules/fishing/aquarium/fish_analyzer.dm b/code/modules/fishing/aquarium/fish_analyzer.dm
index 617d8b600baaa..3df28e326ac3f 100644
--- a/code/modules/fishing/aquarium/fish_analyzer.dm
+++ b/code/modules/fishing/aquarium/fish_analyzer.dm
@@ -59,18 +59,15 @@
. += emissive_appearance(icon, "fish_analyzer_emissive", src)
/obj/item/fish_analyzer/interact_with_atom(atom/target, mob/living/user, list/modifiers)
- if(!isfish(target) && !isaquarium(target))
+ if(!isfish(target) && !HAS_TRAIT(target, TRAIT_IS_AQUARIUM))
return NONE
if(!user.can_read(src) || user.is_blind())
return ITEM_INTERACT_BLOCKING
- if(isfish(target) || istype(target, /obj/structure/aquarium))
- scanned_item = WEAKREF(target)
- SEND_SIGNAL(src, COMSIG_FISH_ANALYZER_ANALYZE_STATUS, target, user)
- ui_interact(user)
- return ITEM_INTERACT_SUCCESS
-
- return NONE
+ scanned_item = WEAKREF(target)
+ SEND_SIGNAL(src, COMSIG_FISH_ANALYZER_ANALYZE_STATUS, target, user)
+ ui_interact(user)
+ return ITEM_INTERACT_SUCCESS
/obj/item/fish_analyzer/ui_interact(mob/user, datum/tgui/ui)
if(isnull(scanned_item?.resolve()))
@@ -92,13 +89,13 @@
data["fish_scanned"] = TRUE
return extract_fish_info(data, scanned_object)
- var/obj/structure/aquarium/aquarium = scanned_object
+ var/atom/movable/aquarium = scanned_object
for(var/obj/item/fish/fishie in aquarium)
- extract_fish_info(data, fishie, aquarium)
+ extract_fish_info(data, fishie)
return data
-/obj/item/fish_analyzer/proc/extract_fish_info(list/data, obj/item/fish/fishie, obj/structure/aquarium/aquarium)
+/obj/item/fish_analyzer/proc/extract_fish_info(list/data, obj/item/fish/fishie)
var/list/fish_traits = list()
var/list/fish_evolutions = list()
@@ -129,12 +126,12 @@
"fish_min_temp" = fishie.required_temperature_min,
"fish_max_temp" = fishie.required_temperature_max,
"fish_hunger" = HAS_TRAIT(fishie, TRAIT_FISH_NO_HUNGER) ? 0 : 1 - fishie.get_hunger(),
- "fish_fluid_compatible" = aquarium ? compatible_fluid_type(fishie.required_fluid_type, aquarium.fluid_type) : null,
+ "fish_fluid_compatible" = fishie.fish_flags & FISH_FLAG_SAFE_FLUID,
"fish_fluid_type" = fishie.required_fluid_type,
"fish_breed_timer" = round(max(fishie.breeding_wait - world.time, 0) / 10),
"fish_traits" = fish_traits,
"fish_evolutions" = fish_evolutions,
- "fish_suitable_temp" = aquarium ? ISINRANGE(aquarium.fluid_temp, fishie.required_temperature_min, fishie.required_temperature_max) : null
+ "fish_suitable_temp" = fishie.fish_flags & FISH_FLAG_SAFE_TEMPERATURE,
))
return data
diff --git a/code/modules/fishing/bait.dm b/code/modules/fishing/bait.dm
index aad7a8d3d1d89..50cb6ef09b163 100644
--- a/code/modules/fishing/bait.dm
+++ b/code/modules/fishing/bait.dm
@@ -63,7 +63,7 @@
/obj/item/fishing_lure
name = "artificial minnow"
- desc = "A fishing lure meant to attract smaller omnivore fish."
+ desc = "A fishing lure that may attract small fish. Too tiny, too large, or too picky prey won't be interested in it, though."
icon = 'icons/obj/fishing.dmi'
icon_state = "minnow"
w_class = WEIGHT_CLASS_SMALL
@@ -88,13 +88,11 @@
rod.spin_frequency = null
///Called for every fish subtype by the fishing subsystem when initializing, to populate the list of fish that can be catched with this lure.
-/obj/item/fishing_lure/proc/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/avg_size = initial(fish_type.average_size)
+/obj/item/fishing_lure/proc/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
var/intermediate_size = FISH_SIZE_SMALL_MAX + (FISH_SIZE_NORMAL_MAX - FISH_SIZE_SMALL_MAX)
- if(!ISINRANGE(avg_size, FISH_SIZE_TINY_MAX * 0.5, intermediate_size))
+ if(!ISINRANGE(fish.size, FISH_SIZE_TINY_MAX * 0.5, intermediate_size))
return FALSE
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits))
+ if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits))
return FALSE
return TRUE
@@ -120,25 +118,28 @@
. += span_info("You can catch the following fish with this lure: [english_list(known_fishes)].")
///Check if the fish is in the list of catchable fish for this fishing lure. Return value is a multiplier.
-/obj/item/fishing_lure/check_bait(obj/item/fish/fish_type)
+/obj/item/fishing_lure/check_bait(obj/item/fish/fish)
var/multiplier = 0
- if(is_type_in_list(/obj/item/fishing_lure, SSfishing.fish_properties[fish_type][FISH_PROPERTIES_FAV_BAIT]))
+ var/is_instance = istype(fish)
+ var/list/fish_properties = SSfishing.fish_properties[is_instance ? fish.type : fish]
+ if(is_type_in_list(/obj/item/fishing_lure, fish_properties[FISH_PROPERTIES_FAV_BAIT]))
multiplier += 2
- if(fish_type in SSfishing.lure_catchables[type])
+ if(is_instance)
+ if(is_catchable_fish(fish, fish_properties))
+ multiplier += 10
+ else if(fish in SSfishing.lure_catchables[type])
multiplier += 10
return multiplier
/obj/item/fishing_lure/plug
- name = "big plug lure"
- desc = "A fishing lure used to catch larger omnivore fish."
+ name = "artificial plug lure"
+ desc = "A bigger fishing lure that may attract larger fish. Tiny or picky prey will remain uninterested."
icon_state = "plug"
-/obj/item/fishing_lure/plug/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/avg_size = initial(fish_type.average_size)
- if(avg_size <= FISH_SIZE_SMALL_MAX)
+/obj/item/fishing_lure/plug/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(fish.size <= FISH_SIZE_SMALL_MAX)
return FALSE
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits))
+ if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits))
return FALSE
return TRUE
@@ -148,55 +149,52 @@
icon_state = "dropping"
spin_frequency = list(1.5 SECONDS, 2.8 SECONDS)
-/obj/item/fishing_lure/dropping/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
+/obj/item/fishing_lure/dropping/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
var/list/sources = list(/datum/fish_source/toilet, /datum/fish_source/moisture_trap)
for(var/datum/fish_source/source as anything in sources)
var/datum/fish_source/instance = GLOB.preset_fish_sources[/datum/fish_source/toilet]
- if(fish_type in instance.fish_table)
+ if(fish.type in instance.fish_table)
return TRUE
var/list/fav_baits = fish_properties[FISH_PROPERTIES_FAV_BAIT]
for(var/list/identifier in fav_baits)
if(identifier[FISH_BAIT_TYPE] == FISH_BAIT_FOODTYPE && (identifier[FISH_BAIT_VALUE] & (JUNKFOOD|GROSS|TOXIC)))
return TRUE
- if(initial(fish_type.beauty) <= FISH_BEAUTY_DISGUSTING)
+ if(fish.beauty <= FISH_BEAUTY_DISGUSTING)
return TRUE
return FALSE
/obj/item/fishing_lure/spoon
name = "\improper Indy spoon lure"
- desc = "A lustrous piece of metal mimicking the scales of a fish. Good for catching small to medium freshwater omnivore fish."
+ desc = "A lustrous piece of metal mimicking the scales of a fish. It specializes in catching small-to-medium-sized fish that live in freshwater."
icon_state = "spoon"
spin_frequency = list(1.25 SECONDS, 2.25 SECONDS)
-/obj/item/fishing_lure/spoon/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/avg_size = initial(fish_type.average_size)
- if(!ISINRANGE(avg_size, FISH_SIZE_TINY_MAX + 1, FISH_SIZE_NORMAL_MAX))
+/obj/item/fishing_lure/spoon/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(!ISINRANGE(fish.size, FISH_SIZE_TINY_MAX + 1, FISH_SIZE_NORMAL_MAX))
return FALSE
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits))
+ if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits))
return FALSE
- var/fluid_type = initial(fish_type.required_fluid_type)
+ var/fluid_type = fish.required_fluid_type
if(fluid_type == AQUARIUM_FLUID_FRESHWATER || fluid_type == AQUARIUM_FLUID_ANADROMOUS || fluid_type == AQUARIUM_FLUID_ANY_WATER)
return TRUE
- if((/datum/fish_trait/amphibious in fish_traits) && fluid_type == AQUARIUM_FLUID_AIR)
+ if((/datum/fish_trait/amphibious in fish.fish_traits) && fluid_type == AQUARIUM_FLUID_AIR)
return TRUE
return FALSE
/obj/item/fishing_lure/artificial_fly
name = "\improper Silkbuzz artificial fly"
- desc = "A fishing lure resembling a large wooly fly. Good for catching all sort of picky fish."
+ desc = "A fishing lure resembling a large wooly fly. Unlike most other lures, it's fancy enough to catch the interest of picky fish, but only those."
icon_state = "artificial_fly"
spin_frequency = list(1.1 SECONDS, 2 SECONDS)
-/obj/item/fishing_lure/artificial_fly/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(/datum/fish_trait/picky_eater in fish_traits)
+/obj/item/fishing_lure/artificial_fly/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(/datum/fish_trait/picky_eater in fish.fish_traits)
return TRUE
return FALSE
/obj/item/fishing_lure/led
name = "\improper LED fishing lure"
- desc = "A heavy, waterproof and fish-looking LED stick, used to catch abyssal and demersal fish alike."
+ desc = "A heavy, waterproof and fish-looking LED stick, specialized to catch only nocturnal and deep-dwelling fish."
icon_state = "led"
spin_frequency = list(3 SECONDS, 3.8 SECONDS)
@@ -216,15 +214,14 @@
. = ..()
REMOVE_TRAIT(rod, TRAIT_ROD_IGNORE_ENVIRONMENT, type)
-/obj/item/fishing_lure/led/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(length(list(/datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits))
+/obj/item/fishing_lure/led/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(length(list(/datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits))
return TRUE
return FALSE
/obj/item/fishing_lure/lucky_coin
name = "\improper Maneki-Coin lure"
- desc = "A faux-gold lure used to attract shiny-loving fish."
+ desc = "A faux-gold lure. Catches the attention of fishies that love shinies. Not nearly tasty-looking enough for anything else."
icon_state = "lucky_coin"
spin_frequency = list(1.5 SECONDS, 2.7 SECONDS)
@@ -236,78 +233,72 @@
. = ..()
REMOVE_TRAIT(rod, TRAIT_ROD_ATTRACT_SHINY_LOVERS, REF(src))
-/obj/item/fishing_lure/lucky_coin/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(/datum/fish_trait/shiny_lover in fish_traits)
+/obj/item/fishing_lure/lucky_coin/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(/datum/fish_trait/shiny_lover in fish.fish_traits)
return TRUE
return FALSE
/obj/item/fishing_lure/algae
name = "plastic algae lure"
- desc = "A soft clump of fake algae used to attract herbivore water critters."
+ desc = "A soft clump of fake algae. Herbivores love it. Nothing else does, not even omnivores."
icon_state = "algae"
spin_frequency = list(3 SECONDS, 5 SECONDS)
-/obj/item/fishing_lure/algae/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(/datum/fish_trait/vegan in fish_traits)
+/obj/item/fishing_lure/algae/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(/datum/fish_trait/vegan in fish.fish_traits)
return TRUE
return FALSE
/obj/item/fishing_lure/grub
name = "\improper Twister Worm lure"
- desc = "A soft plastic lure with the body of a grub and a twisting tail. Good for panfish and other small omnivore fish."
+ desc = "A soft plastic lure with the body of a grub and a twisting tail. Specialized for catching small fish, as long as they aren't herbivores, picky, or picky herbivores."
icon_state = "grub"
spin_frequency = list(1 SECONDS, 2.7 SECONDS)
-/obj/item/fishing_lure/grub/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- if(initial(fish_type.average_size) >= FISH_SIZE_SMALL_MAX)
+/obj/item/fishing_lure/grub/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(fish.size >= FISH_SIZE_SMALL_MAX)
return FALSE
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater) & fish_traits))
+ if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater) & fish.fish_traits))
return FALSE
return TRUE
/obj/item/fishing_lure/buzzbait
name = "\improper Electric-Buzz lure"
- desc = "A metallic, colored clanked attached to a series of cables that somehow attract shock-worthy fish."
+ desc = "A metallic, colored clanker attached to a series of cables that somehow attract shock-worthy fish."
icon_state = "buzzbait"
spin_frequency = list(0.8 SECONDS, 1.7 SECONDS)
-/obj/item/fishing_lure/buzzbait/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(/datum/fish_trait/electrogenesis in fish_traits)
+/obj/item/fishing_lure/buzzbait/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(HAS_TRAIT(fish, TRAIT_FISH_ELECTROGENESIS))
return TRUE
return FALSE
/obj/item/fishing_lure/spinnerbait
name = "spinnerbait lure"
- desc = "A versatile lure, good for catching all sort of predatory freshwater fish."
+ desc = "A spinny, vulnerable lure, great for attracting freshwater predators, though omnivores won't be interested in it."
icon_state = "spinnerbait"
spin_frequency = list(2 SECONDS, 4 SECONDS)
-/obj/item/fishing_lure/spinnerbait/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(!(/datum/fish_trait/predator in fish_traits))
+/obj/item/fishing_lure/spinnerbait/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(!(/datum/fish_trait/predator in fish.fish_traits))
return FALSE
- var/init_fluid_type = initial(fish_type.required_fluid_type)
+ var/init_fluid_type = fish.required_fluid_type
if(init_fluid_type == AQUARIUM_FLUID_FRESHWATER || init_fluid_type == AQUARIUM_FLUID_ANADROMOUS || init_fluid_type == AQUARIUM_FLUID_ANY_WATER)
return TRUE
- if((/datum/fish_trait/amphibious in fish_traits) && init_fluid_type == AQUARIUM_FLUID_AIR) //fluid type is changed to freshwater on init
+ if((/datum/fish_trait/amphibious in fish.fish_traits) && init_fluid_type == AQUARIUM_FLUID_AIR) //fluid type is changed to freshwater on init
return TRUE
return FALSE
/obj/item/fishing_lure/daisy_chain
name = "daisy chain lure"
- desc = "A lure resembling a small school of fish, good for catching several saltwater predators."
+ desc = "A lure resembling a small school of fish. Saltwater predators love it, but not much else will."
icon_state = "daisy_chain"
spin_frequency = list(2 SECONDS, 4 SECONDS)
-/obj/item/fishing_lure/daisy_chain/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties)
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
- if(!(/datum/fish_trait/predator in fish_traits))
+/obj/item/fishing_lure/daisy_chain/is_catchable_fish(obj/item/fish/fish, list/fish_properties)
+ if(!(/datum/fish_trait/predator in fish.fish_traits))
return FALSE
- var/init_fluid_type = initial(fish_type.required_fluid_type)
+ var/init_fluid_type = fish.required_fluid_type
if(init_fluid_type == AQUARIUM_FLUID_SALTWATER || init_fluid_type == AQUARIUM_FLUID_ANADROMOUS || init_fluid_type == AQUARIUM_FLUID_ANY_WATER)
return TRUE
return FALSE
diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm
index 8eee6f1663503..0c09afb90cd2d 100644
--- a/code/modules/fishing/fish/_fish.dm
+++ b/code/modules/fishing/fish/_fish.dm
@@ -170,16 +170,21 @@
* Once set, the value shouldn't be changed, so don't make typos.
*/
var/fish_id
+ ///Used to redirect to another fish path so that catching this fish unlocks its entry instead.
+ var/obj/item/fish/fish_id_redirect_path
+ /// only used in the suicide for comedic value
+ var/suicide_slap_text = "*SLAP!*"
/obj/item/fish/Initialize(mapload, apply_qualities = TRUE)
. = ..()
base_icon_state = icon_state
//It's important that we register the signals before the component is attached.
RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_DO_ANIMATION, PROC_REF(update_aquarium_animation))
- RegisterSignal(src, AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position))
+ RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position))
RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, PROC_REF(update_aquarium_appearance))
- AddComponent(/datum/component/aquarium_content, list(COMSIG_FISH_STIRRED), beauty)
+ AddComponent(/datum/component/aquarium_content, list(COMSIG_ATOM_WAS_ATTACKED))
+ RegisterSignal(src, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, PROC_REF(get_aquarium_beauty))
RegisterSignal(src, COMSIG_ATOM_ON_LAZARUS_INJECTOR, PROC_REF(use_lazarus))
if(fish_flags & FISH_DO_FLOP_ANIM)
RegisterSignal(src, COMSIG_ATOM_TEMPORARY_ANIMATION_START, PROC_REF(on_temp_animation))
@@ -188,6 +193,9 @@
ADD_TRAIT(src, TRAIT_UNCOMPOSTABLE, REF(src)) //Composting a food that is not real food wouldn't work anyway.
START_PROCESSING(SSobj, src)
+ RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FISH_STASIS), PROC_REF(enter_stasis))
+ RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FISH_STASIS), PROC_REF(exit_stasis))
+
//Adding this because not all fish have the gore foodtype that makes them automatically eligible for dna infusion.
ADD_TRAIT(src, TRAIT_VALID_DNA_INFUSION, INNATE_TRAIT)
@@ -202,6 +210,26 @@
register_context()
register_item_context()
+/obj/item/fish/suicide_act(mob/living/user)
+ if(force == 0)
+ user.visible_message(span_suicide("[user] slaps [user.p_them()]self with [src], but nothing happens!"))
+ return SHAME
+ user.visible_message(span_suicide("[user] starts rapidly slapping [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
+ user.set_combat_mode(TRUE)
+ ADD_TRAIT(user, TRAIT_COMBAT_MODE_LOCK, REF(src))
+ slapperoni(user, iteration = 1)
+ return MANUAL_SUICIDE
+
+/obj/item/fish/proc/slapperoni(mob/living/user, iteration)
+ stoplag(0.1 SECONDS)
+ user.visible_message(span_bolddanger(suicide_slap_text))
+ user.attackby(src, user)
+ if(user.stat > SOFT_CRIT || (iteration > 100))
+ REMOVE_TRAIT(user, TRAIT_COMBAT_MODE_LOCK, REF(src))
+ user.gib(DROP_ORGANS|DROP_BODYPARTS|DROP_ITEMS)
+ return
+ slapperoni(user, iteration++)
+
/obj/item/fish/add_item_context(atom/source, list/context, obj/item/held_item, mob/user)
if(HAS_TRAIT(source, TRAIT_CATCH_AND_RELEASE))
context[SCREENTIP_CONTEXT_RMB] = "Release"
@@ -218,8 +246,26 @@
if(istype(held_item, /obj/item/fish_analyzer))
context[SCREENTIP_CONTEXT_LMB] = "Scan"
return CONTEXTUAL_SCREENTIP_SET
+ if(istype(held_item, /obj/item/clothing/neck/stethoscope))
+ context[SCREENTIP_CONTEXT_LMB] = "Check Pulse"
+ return CONTEXTUAL_SCREENTIP_SET
return NONE
+/obj/item/fish/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if(!istype(tool, /obj/item/clothing/neck/stethoscope))
+ return NONE
+ user.balloon_alert_to_viewers("checking pulse")
+ if(!do_after(user, 2.5 SECONDS, src))
+ return ITEM_INTERACT_FAILURE
+ // Sir... I'm afraid your fish is dying.
+ user.visible_message(span_notice("[user] checks the pulse of [src] with [tool]."), span_notice("You check the pulse of [src] with [tool]."))
+ var/warns = get_health_warnings(user, always_deep = TRUE)
+ if(!warns)
+ to_chat(user, span_notice("[src] appears to be perfectly healthy!"))
+ return ITEM_INTERACT_SUCCESS
+ to_chat(user, warns)
+ return ITEM_INTERACT_SUCCESS
+
/obj/item/fish/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
if(!HAS_TRAIT(interacting_with, TRAIT_CATCH_AND_RELEASE))
return NONE
@@ -237,7 +283,7 @@
span_notice("You release [src] into [interacting_with]. [goodbye_text]"), \
span_notice("You hear a splash."))
playsound(interacting_with, 'sound/effects/splash.ogg', 50)
- SEND_SIGNAL(interacting_with, COMSIG_FISH_RELEASED_INTO, src)
+ SEND_SIGNAL(interacting_with, COMSIG_FISH_RELEASED_INTO, src, user)
qdel(src)
return ITEM_INTERACT_SUCCESS
@@ -433,27 +479,46 @@
/obj/item/fish/examine(mob/user)
. = ..()
- if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH))
- if(status == FISH_DEAD)
- . += span_deadsay("It's [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "taking the big snooze" : "dead"].")
- else
- var/list/warnings = list()
- if(is_starving())
- warnings += "starving"
- if(!HAS_TRAIT(src, TRAIT_FISH_STASIS) && !proper_environment())
- warnings += "drowning"
- if(health < initial(health) * 0.6)
- warnings += "sick"
- if(length(warnings))
- . += span_warning("It's [english_list(warnings)].")
if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISH))
. += span_notice("It's [size] cm long.")
. += span_notice("It weighs [weight] g.")
- if(HAS_TRAIT(src, TRAIT_FISHING_BAIT))
- . += span_smallnoticeital("It can be used as a fishing bait.")
+
+ . += get_health_warnings(user, always_deep = FALSE)
+
+ if(HAS_TRAIT(src, TRAIT_FISHING_BAIT))
+ . += span_smallnoticeital("It can be used as a fishing bait.")
+
if(bites_amount)
. += span_warning("It's been bitten by someone.")
+/obj/item/fish/proc/get_health_warnings(mob/user, always_deep = FALSE)
+ if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH) && !always_deep)
+ return
+ if(status == FISH_DEAD)
+ return span_deadsay("It's [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "taking the big snooze" : "dead"].")
+
+ var/list/warnings = list()
+ if(get_starvation_mult())
+ warnings += "starving"
+ if(!HAS_TRAIT(src, TRAIT_FISH_STASIS) && !proper_environment())
+ warnings += "drowning"
+
+ var/health_ratio = health / initial(health)
+ switch(health_ratio)
+ if(0 to 0.25)
+ warnings += "dying"
+ if(0.25 to 0.5)
+ warnings += "very unhealthy"
+ if(0.5 to 0.75)
+ warnings += "unhealthy"
+ if(0.75 to 0.9)
+ warnings += "mostly healthy"
+
+ if(length(warnings))
+ . += span_warning("It's [english_list(warnings)].")
+
+ return .
+
/**
* This proc takes a base size, base weight and deviation arguments to generate new size and weight through a gaussian distribution (bell curve)
* Mainly used to determinate the size and weight of caught fish.
@@ -474,7 +539,7 @@
if(!maximum_size)
maximum_size = min(base_size * 2, average_size * MAX_FISH_DEVIATION_COEFF)
if(!maximum_weight)
- maximum_weight = min(base_weight * 2, average_size * MAX_FISH_DEVIATION_COEFF)
+ maximum_weight = min(base_weight * 2, average_weight * MAX_FISH_DEVIATION_COEFF)
///Updates weight and size, along with weight class, number of fillets you can get and grind results.
/obj/item/fish/proc/update_size_and_weight(new_size = average_size, new_weight = average_weight, update_materials = TRUE)
@@ -549,7 +614,7 @@
make_edible()
if(weight >= FISH_WEIGHT_SLOWDOWN && !HAS_TRAIT(src, TRAIT_SPEED_POTIONED))
- slowdown = round(((weight/FISH_WEIGHT_SLOWDOWN_DIVISOR)**FISH_WEIGHT_SLOWDOWN_EXPONENT)-1.3, 0.1)
+ slowdown = GET_FISH_SLOWDOWN(weight)
drag_slowdown = round(slowdown * 0.5, 1)
else
slowdown = 0
@@ -592,14 +657,6 @@
AddElement(/datum/element/processable, TOOL_KNIFE, fillet_type, amount, time, screentip_verb = "Cut")
return amount //checked by a unit test
-/**
- * Weight, unlike size, is a bit more exponential, but the world isn't perfect, so isn't my code.
- * Anyway, this returns a gross estimate of the "rank" of "category" for our fish weight, based on how
- * weight generaly scales up (250, 500, 1000, 2000, 4000 etc...)
- */
-/obj/item/fish/proc/get_weight_rank()
- return max(round(1 + log(2, weight/FISH_WEIGHT_FORCE_DIVISOR), 1), 1)
-
///Reset weapon-related variables of this items and recalculates those values based on the fish weight and size.
/obj/item/fish/proc/update_fish_force()
if(force >= 15 && hitsound == SFX_ALT_FISH_SLAP)
@@ -619,7 +676,7 @@
bare_wound_bonus = initial(bare_wound_bonus)
toolspeed = initial(toolspeed)
- var/weight_rank = get_weight_rank()
+ var/weight_rank = GET_FISH_WEIGHT_RANK(weight)
throw_range -= weight_rank
get_force_rank()
@@ -765,25 +822,29 @@
. = ..()
check_flopping()
-/obj/item/fish/proc/enter_stasis()
- ADD_TRAIT(src, TRAIT_FISH_STASIS, INNATE_TRAIT)
- // Stop processing until inserted into aquarium again.
+/// Stop processing once the stasis trait is added
+/obj/item/fish/proc/enter_stasis(datum/source)
+ SIGNAL_HANDLER
stop_flopping()
STOP_PROCESSING(SSobj, src)
-/obj/item/fish/proc/exit_stasis()
- REMOVE_TRAIT(src, TRAIT_FISH_STASIS, INNATE_TRAIT)
- if(status != FISH_DEAD)
- START_PROCESSING(SSobj, src)
+/// Start processing again when the stasis trait is removed
+/obj/item/fish/proc/exit_stasis(datum/source)
+ SIGNAL_HANDLER
+ if(status == FISH_DEAD)
+ return
+ START_PROCESSING(SSobj, src)
+ check_flopping()
-///Returns the 0-1 value for hunger
-/obj/item/fish/proc/get_hunger()
- . = CLAMP01((world.time - last_feeding) / feeding_frequency)
+///Returns the value for hunger ranging from 0 to the cap (by default 1)
+/obj/item/fish/proc/get_hunger(cap = 1)
+ . = clamp((world.time - last_feeding) / feeding_frequency, 0, cap)
if(HAS_TRAIT(src, TRAIT_FISH_NO_HUNGER))
return min(., 0.2)
-/obj/item/fish/proc/is_starving()
- return get_hunger() >= 1
+/obj/item/fish/proc/get_starvation_mult()
+ var/hunger = get_hunger(cap = 2)
+ return hunger >= 1 ? hunger : 0
///Feed the fishes with the contents of the fish feed
/obj/item/fish/proc/feed(datum/reagents/fed_reagents)
@@ -816,33 +877,21 @@
return
fed_reagents.remove_reagent(wrong_reagent.type, 0.1)
-/**
- * Base multiplier of the difference between current size and weight and their maximum value
- * Used to calculate how much fish grow each time they're fed, alongside with the current hunger,
- * and the current size and weight, meaning bigger fish naturally tend to grow way more slowly
- * Growth peaks at 45% hunger but very rapidly wanes past that.
- */
-#define FISH_GROWTH_MULT 0.38
-#define FISH_GROWTH_PEAK 0.45
-#define FISH_SIZE_WEIGHT_GROWTH_MALUS 0.5
-
///Proc that should be called when the fish is fed. By default, it grows the fish depending on various variables.
/obj/item/fish/proc/sate_hunger()
- if(isaquarium(loc))
- var/obj/structure/aquarium/aquarium = loc
- if(!aquarium.reproduction_and_growth)
- last_feeding = world.time
- return
- var/hunger = get_hunger()
- if(hunger < 0.05) //don't bother growing for very small amounts.
+ if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH))
last_feeding = world.time
return
+ var/hunger = get_hunger()
last_feeding = world.time
+ if(hunger < 0.05) //don't bother growing for very small amounts.
+ return
+
var/new_size = size
var/new_weight = weight
var/hunger_mult
- if(hunger < FISH_GROWTH_PEAK)
- hunger_mult = hunger * (1/FISH_GROWTH_PEAK)
+ if(hunger <= FISH_GROWTH_PEAK)
+ hunger_mult = hunger / FISH_GROWTH_PEAK
else
hunger_mult = 1 - (hunger - FISH_GROWTH_PEAK) * 4
if(hunger_mult <= 0)
@@ -854,15 +903,11 @@
new_size += CEILING((maximum_size - size) * base_mult / (w_class * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1)
new_size = min(new_size, maximum_size)
if(weight < maximum_weight)
- new_weight += CEILING((maximum_weight - weight) * base_mult / (get_weight_rank() * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1)
+ new_weight += CEILING((maximum_weight - weight) * base_mult / (GET_FISH_WEIGHT_RANK(weight) * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1)
new_weight = min(new_weight, maximum_weight)
if(new_size != size || new_weight != weight)
update_size_and_weight(new_size, new_weight)
-#undef FISH_SIZE_WEIGHT_GROWTH_MALUS
-#undef FISH_GROWTH_MULT
-#undef FISH_GROWTH_PEAK
-
/obj/item/fish/proc/check_flopping()
if(QDELETED(src)) //we don't care anymore
return
@@ -871,9 +916,8 @@
return
// Do additional stuff
- var/in_aquarium = isaquarium(loc)
// Start flopping if outside of fish container
- var/should_be_flopping = status == FISH_ALIVE && !HAS_TRAIT(src, TRAIT_FISH_STASIS) && !in_aquarium
+ var/should_be_flopping = status == FISH_ALIVE && !HAS_TRAIT(src, TRAIT_FISH_STASIS) && loc && !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)
if(should_be_flopping)
start_flopping()
@@ -884,12 +928,17 @@
if(HAS_TRAIT(src, TRAIT_FISH_STASIS) || status != FISH_ALIVE)
return
- process_health(seconds_per_tick)
- if(ready_to_reproduce())
- try_to_reproduce()
+ //safe mode, don't do much except a few things that don't involve growing or reproducing.
+ if(loc && HAS_TRAIT_FROM(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT))
+ last_feeding += seconds_per_tick SECONDS
+ breeding_wait += seconds_per_tick SECONDS
+ else
+ process_health(seconds_per_tick)
+ if(ready_to_reproduce())
+ try_to_reproduce()
- if(HAS_TRAIT(src, TRAIT_FISH_ELECTROGENESIS) && COOLDOWN_FINISHED(src, electrogenesis_cooldown))
- try_electrogenesis()
+ if(HAS_TRAIT(src, TRAIT_FISH_ELECTROGENESIS) && COOLDOWN_FINISHED(src, electrogenesis_cooldown))
+ try_electrogenesis()
SEND_SIGNAL(src, COMSIG_FISH_LIFE, seconds_per_tick)
@@ -912,7 +961,7 @@
stop_flopping()
if(!silent)
var/message = span_notice(replacetext(death_text, "%SRC", "[src]"))
- if(isaquarium(loc))
+ if(loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM))
loc.visible_message(message)
else
visible_message(message)
@@ -972,7 +1021,7 @@
var/datum/reagent/medicine/strange_reagent/revival = locate() in reagents
if(!revival)
return
- if(reagents[revival] >= 2 * w_class)
+ if(reagents[revival] >= 2 * w_class && revival.pre_rez_check(src))
set_status(FISH_ALIVE)
else
balloon_alert_to_viewers("twitches for a moment!")
@@ -997,47 +1046,44 @@
visual.icon_state = dedicated_in_aquarium_icon_state || "[initial(icon_state)]_small"
visual.color = aquarium_vc_color
-/obj/item/fish/proc/randomize_aquarium_position(datum/source, obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual)
+/obj/item/fish/proc/randomize_aquarium_position(datum/source, atom/movable/current_aquarium, obj/effect/aquarium/visual)
SIGNAL_HANDLER
- var/list/aq_properties = current_aquarium.get_surface_properties()
var/avg_width = round(sprite_width * 0.5)
var/avg_height = round(sprite_height * 0.5)
- var/px_min = aq_properties[AQUARIUM_PROPERTIES_PX_MIN] + avg_width - 16
- var/px_max = aq_properties[AQUARIUM_PROPERTIES_PX_MAX] - avg_width - 16
- var/py_min = aq_properties[AQUARIUM_PROPERTIES_PY_MIN] + avg_height - 16
- var/py_max = aq_properties[AQUARIUM_PROPERTIES_PY_MAX] - avg_height - 16
+ var/px_min = visual.aquarium_zone_min_px + avg_width - 16
+ var/px_max = visual.aquarium_zone_max_px - avg_width - 16
+ var/py_min = visual.aquarium_zone_min_py + avg_height - 16
+ var/py_max = visual.aquarium_zone_max_py - avg_height - 16
visual.pixel_x = visual.base_pixel_x = rand(px_min,px_max)
visual.pixel_y = visual.base_pixel_y = rand(py_min,py_max)
-/obj/item/fish/proc/get_aquarium_animation()
- var/obj/structure/aquarium/aquarium = loc
- if(!istype(aquarium) || aquarium.fluid_type == AQUARIUM_FLUID_AIR || status == FISH_DEAD)
- return AQUARIUM_ANIMATION_FISH_DEAD
- else
- return AQUARIUM_ANIMATION_FISH_SWIM
-
-/obj/item/fish/proc/update_aquarium_animation(datum/source, current_animation, obj/structure/current_aquarium, obj/effect/visual)
+/obj/item/fish/proc/update_aquarium_animation(datum/source, current_animation, obj/effect/visual, fluid_type)
SIGNAL_HANDLER
- var/animation = get_aquarium_animation()
+ var/animation = get_aquarium_animation(fluid_type)
if(animation == current_animation)
return
switch(animation)
if(AQUARIUM_ANIMATION_FISH_SWIM)
- swim_animation(current_aquarium, visual)
+ swim_animation(visual)
if(AQUARIUM_ANIMATION_FISH_DEAD)
- dead_animation(current_aquarium, visual)
+ dead_animation(visual)
+
+/obj/item/fish/proc/get_aquarium_animation(fluid_type)
+ if(fluid_type == AQUARIUM_FLUID_AIR || status == FISH_DEAD)
+ return AQUARIUM_ANIMATION_FISH_DEAD
+ else
+ return AQUARIUM_ANIMATION_FISH_SWIM
/// Create looping random path animation, pixel offsets parameters include offsets already
-/obj/item/fish/proc/swim_animation(obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual)
+/obj/item/fish/proc/swim_animation(obj/effect/aquarium/visual)
var/avg_width = round(sprite_width / 2)
var/avg_height = round(sprite_height / 2)
- var/list/aq_properties = current_aquarium.get_surface_properties()
- var/px_min = aq_properties[AQUARIUM_PROPERTIES_PX_MIN] + avg_width - 16
- var/px_max = aq_properties[AQUARIUM_PROPERTIES_PX_MAX] - avg_width - 16
- var/py_min = aq_properties[AQUARIUM_PROPERTIES_PY_MIN] + avg_height - 16
- var/py_max = aq_properties[AQUARIUM_PROPERTIES_PY_MAX] - avg_width - 16
+ var/px_min = visual.aquarium_zone_min_px + avg_width - 16
+ var/px_max = visual.aquarium_zone_max_px - avg_width - 16
+ var/py_min = visual.aquarium_zone_min_py + avg_height - 16
+ var/py_max = visual.aquarium_zone_max_py - avg_width - 16
var/origin_x = visual.base_pixel_x
var/origin_y = visual.base_pixel_y
@@ -1062,22 +1108,36 @@
animate(transform = dir_mx, time = 0, loop = -1)
animate(pixel_x = target_x, pixel_y = target_y, time = eyeballed_time, loop = -1)
-/obj/item/fish/proc/dead_animation(obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual)
+/obj/item/fish/proc/dead_animation(obj/effect/aquarium/visual)
//Set base_pixel_y to lowest possible value
var/avg_height = round(sprite_height / 2)
- var/list/aq_properties = current_aquarium.get_surface_properties()
- var/py_min = aq_properties[AQUARIUM_PROPERTIES_PY_MIN] + avg_height - 16
+ var/py_min = visual.aquarium_zone_min_py + avg_height - 16
visual.base_pixel_y = py_min
animate(visual, pixel_y = py_min, time = 1) //flop to bottom and end current animation.
+///Malus to the beauty value if the fish content is dead
+#define DEAD_FISH_BEAUTY -500
+///Prevents more impressive fishes from providing a positive beauty even when dead.
+#define MAX_DEAD_FISH_BEAUTY -200
+///Some fish are already so ugly, they can't get much worse when dead
+#define MIN_DEAD_FISH_BEAUTY -600
+
+/obj/item/fish/proc/get_aquarium_beauty(datum/source, list/beauty_holder)
+ SIGNAL_HANDLER
+ var/actual_beauty = beauty
+ if(status == FISH_DEAD)
+ actual_beauty = clamp(beauty + DEAD_FISH_BEAUTY, MIN_DEAD_FISH_BEAUTY, MAX_DEAD_FISH_BEAUTY)
+
+ beauty_holder += actual_beauty
+
+#undef DEAD_FISH_BEAUTY
+#undef MIN_DEAD_FISH_BEAUTY
+#undef MAX_DEAD_FISH_BEAUTY
+
/// Checks if our current environment lets us live.
/obj/item/fish/proc/proper_environment(temp_range_min = required_temperature_min, temp_range_max = required_temperature_max)
- var/obj/structure/aquarium/aquarium = loc
- if(istype(aquarium))
- if(!compatible_fluid_type(required_fluid_type, aquarium.fluid_type))
- if(aquarium.fluid_type != AQUARIUM_FLUID_AIR || !HAS_TRAIT(src, TRAIT_FISH_AMPHIBIOUS))
- return FALSE
- if(!ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max))
+ if(loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM))
+ if(!(fish_flags & FISH_FLAG_SAFE_TEMPERATURE) || !(fish_flags & FISH_FLAG_SAFE_FLUID))
return FALSE
return TRUE
@@ -1098,13 +1158,14 @@
/obj/item/fish/proc/process_health(seconds_per_tick)
var/health_change_per_second = 0
if(!proper_environment())
- health_change_per_second -= 3 //Dying here
- if(is_starving())
- health_change_per_second -= 0.5 //Starving
+ health_change_per_second -= 2.5 //Dying here
+ var/starvation_mult = get_starvation_mult()
+ if(starvation_mult)
+ health_change_per_second -= 0.25 * starvation_mult //Starving
else
health_change_per_second += 0.5 //Slowly healing
if(HAS_TRAIT(src, TRAIT_FISH_ON_TESLIUM))
- health_change_per_second -= 0.65 //This becomes - 0.15 if safe and not starving.
+ health_change_per_second -= 0.65
adjust_health(health + health_change_per_second * seconds_per_tick)
@@ -1131,54 +1192,48 @@
bites_amount -= amount
generate_fish_reagents(amount)
+/// Returns tracked_fish_by_type but flattened and without the items in the blacklist, also shuffled if shuffle is TRUE.
+/obj/item/fish/proc/get_aquarium_fishes(shuffle = FALSE, blacklist)
+ . = list()
+ for(var/obj/item/fish/fish in loc)
+ . += fish
+ . -= blacklist
+ if(shuffle)
+ . = shuffle(.)
+ return .
+
/obj/item/fish/proc/ready_to_reproduce(being_targeted = FALSE)
- var/obj/structure/aquarium/aquarium = loc
- if(!istype(aquarium))
+ if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM))
return FALSE
if(being_targeted && HAS_TRAIT(src, TRAIT_FISH_NO_MATING))
return FALSE
- if(!being_targeted && length(aquarium.get_fishes()) >= AQUARIUM_MAX_BREEDING_POPULATION)
+ if(!being_targeted && length(get_aquarium_fishes()) >= AQUARIUM_MAX_BREEDING_POPULATION)
return FALSE
- return aquarium.reproduction_and_growth && health >= initial(health) * 0.8 && stable_population >= 1 && world.time >= breeding_wait
+ return !HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH) && health >= initial(health) * 0.8 && stable_population >= 1 && world.time >= breeding_wait
/obj/item/fish/proc/try_to_reproduce()
- var/obj/structure/aquarium/aquarium = loc
- if(!istype(aquarium))
+ if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM))
return FALSE
var/obj/item/fish/second_fish
- /**
- * Fishes with this trait cannot mate, but could still reproduce asexually, so don't early return.
- * Also mating takes priority over that.
- */
+ ///Fishes with this trait cannot mate, but could still reproduce asexually, so don't early return.
if(!HAS_TRAIT(src, TRAIT_FISH_NO_MATING))
var/list/available_fishes = list()
- var/types_to_mate_with = aquarium.tracked_fish_by_type
- if(!HAS_TRAIT(src, TRAIT_FISH_CROSSBREEDER))
- var/list/types_to_check = list(type)
- if(compatible_types)
- types_to_check |= compatible_types
- types_to_mate_with = types_to_mate_with & types_to_check
-
- for(var/obj/item/fish/fish_type as anything in types_to_mate_with)
- var/list/type_fishes = types_to_mate_with[fish_type]
- if(length(type_fishes) >= initial(fish_type.stable_population))
- continue
- available_fishes += type_fishes
-
- available_fishes -= src //no self-mating.
+ SEND_SIGNAL(loc, COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES, src, available_fishes)
if(length(available_fishes))
- for(var/obj/item/fish/other_fish as anything in shuffle(available_fishes))
+ //make sure we check if the fish can reproduce with itself last, since that should've lower priority
+ available_fishes = shuffle(available_fishes) - src
+ available_fishes += src
+ for(var/obj/item/fish/other_fish as anything in available_fishes)
if(other_fish.ready_to_reproduce(TRUE))
second_fish = other_fish
break
- if(!second_fish)
+ if(!second_fish || second_fish == src) //check if the fish can self-reproduce in these cases.
if(!HAS_TRAIT(src, TRAIT_FISH_SELF_REPRODUCE))
return FALSE
- if(length(aquarium.tracked_fish_by_type[type]) >= stable_population)
- return FALSE
+ second_fish = null //set it to null, since this will make the following operations a bit easier
if(PERFORM_ALL_TESTS(fish_breeding) && second_fish && !length(evolution_types))
return create_offspring(second_fish.type, second_fish)
@@ -1188,13 +1243,13 @@
var/list/possible_evolutions = list()
for(var/evolution_type in evolution_types)
var/datum/fish_evolution/evolution = GLOB.fish_evolutions[evolution_type]
- if(evolution.check_conditions(src, second_fish, aquarium))
+ if(evolution.check_conditions(src, second_fish, loc))
possible_evolutions += evolution
if(second_fish?.evolution_types)
var/secondary_evolutions = (second_fish.evolution_types - evolution_types)
for(var/evolution_type in secondary_evolutions)
var/datum/fish_evolution/evolution = GLOB.fish_evolutions[evolution_type]
- if(evolution.check_conditions(second_fish, src, aquarium))
+ if(evolution.check_conditions(second_fish, src, loc))
possible_evolutions += evolution
var/list/types = spawn_types || list(type)
@@ -1205,7 +1260,7 @@
var/list/second_fish_types = second_fish.spawn_types || list(second_fish.type)
var/recessive = HAS_TRAIT(src, TRAIT_FISH_RECESSIVE)
var/recessive_partner = HAS_TRAIT(second_fish, TRAIT_FISH_RECESSIVE)
- if(length(aquarium.tracked_fish_by_type[type]) >= stable_population)
+ if(fish_flags & FISH_FLAG_OVERPOPULATED)
if(recessive_partner && !recessive)
return FALSE
chosen_type = pick(second_fish_types)
@@ -1329,13 +1384,13 @@
flop_animation()
/obj/item/fish/proc/try_electrogenesis()
- if(status == FISH_DEAD || is_starving())
+ if(status == FISH_DEAD || get_starvation_mult())
return
COOLDOWN_START(src, electrogenesis_cooldown, ELECTROGENESIS_DURATION + ELECTROGENESIS_VARIANCE)
var/fish_zap_range = 1
var/fish_zap_power = 1 KILO JOULES // ~5 damage, just a little friendly "yeeeouch!"
var/fish_zap_flags = ZAP_MOB_DAMAGE
- if(istype(loc, /obj/structure/aquarium/bioelec_gen))
+ if(HAS_TRAIT(loc, TRAIT_BIOELECTRIC_GENERATOR))
fish_zap_range = 5
fish_zap_power = GET_FISH_ELECTROGENESIS(src)
if(HAS_TRAIT(src, TRAIT_FISH_ON_TESLIUM))
@@ -1378,13 +1433,13 @@
happiness_value++
if(get_hunger() < 0.5)
happiness_value++
- var/obj/structure/aquarium/aquarium = loc
- if(!istype(aquarium))
- return happiness_value
- if(compatible_fluid_type(required_fluid_type, aquarium.fluid_type))
- happiness_value++
- if(ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max))
- happiness_value++
+ if(loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM))
+ if(fish_flags & FISH_FLAG_SAFE_FLUID)
+ happiness_value++
+ if(fish_flags & FISH_FLAG_SAFE_TEMPERATURE)
+ happiness_value++
+ else if(proper_environment())
+ happiness_value += 2
if(bites_amount) // ouch
happiness_value -= 2
if(health < initial(health) * 0.6)
@@ -1396,7 +1451,7 @@
pet_fish(user)
/obj/item/fish/proc/pet_fish(mob/living/user)
- var/in_aquarium = isaquarium(loc)
+ var/in_aquarium = loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)
if(status == FISH_DEAD)
to_chat(user, span_warning("You try to pet [src], but [p_theyre()] motionless!"))
return FALSE
@@ -1413,7 +1468,7 @@
user.electrocute_act(5, src) //was it all worth it?
fish_flags |= FISH_FLAG_PETTED
new /obj/effect/temp_visual/heart(get_turf(src))
- if((/datum/fish_trait/aggressive in fish_traits) && prob(50))
+ if((/datum/fish_trait/predator in fish_traits) && prob(50))
if(!in_aquarium)
user.visible_message(
span_warning("[src] dances around before biting [user]!"),
diff --git a/code/modules/fishing/fish/chasm_detritus.dm b/code/modules/fishing/fish/chasm_detritus.dm
index 9595c552e18d2..05db957100470 100644
--- a/code/modules/fishing/fish/chasm_detritus.dm
+++ b/code/modules/fishing/fish/chasm_detritus.dm
@@ -43,11 +43,11 @@ GLOBAL_LIST_INIT_TYPED(chasm_detritus_types, /datum/chasm_detritus, init_chasm_d
),
)
-/datum/chasm_detritus/proc/dispense_detritus(atom/spawn_location, turf/fishing_spot)
+/datum/chasm_detritus/proc/dispense_detritus(atom/spawn_location, atom/fishing_spot)
if(prob(default_contents_chance))
var/default_spawn = pick(default_contents[default_contents_key])
return new default_spawn(spawn_location)
- return find_chasm_contents(fishing_spot, spawn_location)
+ return find_chasm_contents(get_turf(fishing_spot), spawn_location)
/// Returns the chosen detritus from the given list of things to choose from
/datum/chasm_detritus/proc/determine_detritus(list/chasm_stuff)
@@ -61,7 +61,9 @@ GLOBAL_LIST_INIT_TYPED(chasm_detritus_types, /datum/chasm_detritus, init_chasm_d
var/default_spawn = pick(default_contents[default_contents_key])
return new default_spawn(fisher_turf)
- return determine_detritus(chasm_contents)
+ var/atom/movable/detritus = determine_detritus(chasm_contents)
+ detritus.forceMove(fisher_turf)
+ return detritus
/datum/chasm_detritus/proc/get_chasm_contents(turf/fishing_spot)
. = list()
diff --git a/code/modules/fishing/fish/fish_evolution.dm b/code/modules/fishing/fish/fish_evolution.dm
index a9261b091c9eb..1e4135b6ec12b 100644
--- a/code/modules/fishing/fish/fish_evolution.dm
+++ b/code/modules/fishing/fish/fish_evolution.dm
@@ -43,20 +43,14 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
* Keep in mind the mate and aquarium arguments may be null if
* the fish is self-reproducing or this evolution is a result of a fish_growth component
*/
-/datum/fish_evolution/proc/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+/datum/fish_evolution/proc/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium)
SHOULD_CALL_PARENT(TRUE)
- if(aquarium)
- //chances are halved if only one parent has this evolution.
- var/real_probability = (mate && (type in mate.evolution_types)) ? probability : probability/2
- if(HAS_TRAIT(source, TRAIT_FISH_MUTAGENIC) || (mate && HAS_TRAIT(mate, TRAIT_FISH_MUTAGENIC)))
- real_probability *= 3
- if(!prob(real_probability))
- return FALSE
- if(!ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max))
- return FALSE
- else if(!source.proper_environment(required_temperature_min, required_temperature_max))
- return FALSE
- return TRUE
+ //the fish don't reproduce outside of aquariums but can still grow there, so we just check if the temperature is right.
+ if(!aquarium)
+ return source.proper_environment(required_temperature_min, required_temperature_max)
+ if(SEND_SIGNAL(aquarium, COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS, source, mate, src) & COMPONENT_ALLOW_EVOLUTION)
+ return TRUE
+ return FALSE
///This is called when the evolution is set as the result type of a fish_growth component
/datum/fish_evolution/proc/growth_checks(obj/item/fish/source, seconds_per_tick, growth)
@@ -66,20 +60,24 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
return COMPONENT_DONT_GROW
if(source.get_hunger() >= 0.5) //too hungry to grow
return COMPONENT_DONT_GROW
- var/obj/structure/aquarium/aquarium = source.loc
- if(istype(aquarium) && !aquarium.reproduction_and_growth) //the aquarium has breeding disabled
+ if(HAS_TRAIT(source.loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled
return COMPONENT_DONT_GROW
- else
- aquarium = null
- if(!check_conditions(source, aquarium = aquarium))
+ if(!check_conditions(source))
return COMPONENT_DONT_GROW
///Called by the fish analyzer right click function. Returns a text string used as tooltip.
/datum/fish_evolution/proc/get_evolution_tooltip()
. = ""
if(required_temperature_min > 0 || required_temperature_max < INFINITY)
- var/max_temp = required_temperature_max < INFINITY ? " and [required_temperature_max]" : ""
- . = "An aquarium temperature between [required_temperature_min][max_temp] is required."
+ var/temp_reqs = ""
+ if(required_temperature_min == 0)
+ temp_reqs = "below [required_temperature_max]"
+ else if(required_temperature_max == INFINITY)
+ temp_reqs = "above [required_temperature_min]"
+ else
+ temp_reqs = "of [required_temperature_min] to [required_temperature_max]"
+ . = "An aquarium temperature [temp_reqs]K is required."
+
if(conditions_note)
. += " [conditions_note]"
return .
@@ -90,7 +88,7 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
new_traits = list(/datum/fish_trait/lubed)
conditions_note = "The fish must be fed lube beforehand."
-/datum/fish_evolution/lubefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+/datum/fish_evolution/lubefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium)
if(!HAS_TRAIT(source, TRAIT_FISH_FED_LUBE))
return FALSE
return ..()
@@ -105,11 +103,11 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
name = "???" //The resulting fish is not shown on the catalog.
probability = 40
new_fish_type = /obj/item/fish/mastodon
- new_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/predator, /datum/fish_trait/aggressive)
+ new_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/predator, /datum/fish_trait/territorial)
conditions_note = "The fish (and its mate) needs to be unusually big both in size and weight."
show_result_on_wiki = FALSE
-/datum/fish_evolution/mastodon/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+/datum/fish_evolution/mastodon/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium)
if((source.size < 120 || source.weight < 3000) || (mate && (mate.size < 120 || mate.weight < 3000)))
return FALSE
return ..()
@@ -134,13 +132,13 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
/datum/fish_evolution/chainsawfish
probability = 30
new_fish_type = /obj/item/fish/chainsawfish
- new_traits = list(/datum/fish_trait/predator, /datum/fish_trait/aggressive)
- conditions_note = "The fish needs to be unusually big and aggressive"
+ new_traits = list(/datum/fish_trait/predator, /datum/fish_trait/territorial)
+ conditions_note = "The fish needs to be unusually big and territorial"
-/datum/fish_evolution/chainsawfish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+/datum/fish_evolution/chainsawfish/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium)
var/double_avg_size = /obj/item/fish/goldfish::average_size * 2
var/double_avg_weight = /obj/item/fish/goldfish::average_weight * 2
- if(source.size >= double_avg_size && source.weight >= double_avg_weight && (/datum/fish_trait/aggressive in source.fish_traits))
+ if(source.size >= double_avg_size && source.weight >= double_avg_weight && (/datum/fish_trait/territorial in source.fish_traits))
return ..()
return FALSE
@@ -149,7 +147,7 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
new_fish_type = /obj/item/fish/pike/armored
conditions_note = "The fish needs to have the stinger trait"
-/datum/fish_evolution/armored_pike/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+/datum/fish_evolution/armored_pike/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium)
if(HAS_TRAIT(source, TRAIT_FISH_STINGER))
return ..()
return FALSE
@@ -165,7 +163,7 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
conditions_note = "The final stage of fritterfish growth. It gotta be big!"
show_result_on_wiki = FALSE
-/datum/fish_evolution/nessiefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+/datum/fish_evolution/nessiefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium)
if(source.size >= (/obj/item/fish/fryish/fritterish::average_size * 1.5) && source.size >= (/obj/item/fish/fryish/fritterish::average_weight * 1.5))
return ..()
return FALSE
@@ -177,10 +175,10 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
/datum/fish_evolution/moonfish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
if(source.size < (/obj/item/fish/moonfish/dwarf::average_size * 1.5) && source.size < (/obj/item/fish/moonfish/dwarf::average_weight * 1.5))
- return ..()
+ return FALSE
if(mate && (mate.size < (/obj/item/fish/moonfish::average_size * 1.3) && mate.size < (/obj/item/fish/moonfish::average_weight * 1.3)))
return FALSE
- return FALSE
+ return ..()
/datum/fish_evolution/dwarf_moonfish
probability = 200 //guaranteed if the conditions are met
@@ -194,3 +192,12 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
return FALSE
return ..()
+/datum/fish_evolution/lavaloop
+ probability = 85
+ new_fish_type = /obj/item/fish/lavaloop
+ required_temperature_min = MIN_AQUARIUM_TEMP + 60
+
+/datum/fish_evolution/plasmaloop
+ probability = 85
+ new_fish_type = /obj/item/fish/lavaloop/plasma_river
+ required_temperature_max = MIN_AQUARIUM_TEMP + 60
diff --git a/code/modules/fishing/fish/fish_traits.dm b/code/modules/fishing/fish/fish_traits.dm
index 90a0aa2e75772..7211041915418 100644
--- a/code/modules/fishing/fish/fish_traits.dm
+++ b/code/modules/fishing/fish/fish_traits.dm
@@ -184,11 +184,12 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
/datum/fish_trait/nocturnal/proc/check_light(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(isturf(source.loc) || isaquarium(source))
- var/turf/turf = get_turf(source)
- var/light_amount = turf.get_lumcount()
- if(light_amount > SHADOW_SPECIES_LIGHT_THRESHOLD)
- source.adjust_health(source.health - 0.5 * seconds_per_tick)
+ if(!source.loc || (!HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM) && !isturf(source.loc)))
+ return
+ var/turf/turf = get_turf(source)
+ var/light_amount = turf.get_lumcount()
+ if(light_amount > SHADOW_SPECIES_LIGHT_THRESHOLD)
+ source.adjust_health(source.health - 0.5 * seconds_per_tick)
/datum/fish_trait/nocturnal/apply_to_mob(mob/living/basic/mob)
. = ..()
@@ -293,7 +294,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
/datum/fish_trait/emulsijack/proc/emulsify(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(!isaquarium(source.loc))
+ if(!source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM))
return
var/emulsified = FALSE
for(var/obj/item/fish/victim in source.loc)
@@ -332,7 +333,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
/datum/fish_trait/necrophage/proc/eat_dead_fishes(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(source.get_hunger() > 0.75 || !isaquarium(source.loc))
+ if(source.get_hunger() > 0.75 || !source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM))
return
for(var/obj/item/fish/victim in source.loc)
if(victim.status != FISH_DEAD || victim == source || HAS_TRAIT(victim, TRAIT_YUCKY_FISH))
@@ -400,7 +401,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
return
source.set_status(FISH_ALIVE)
var/message = span_nicegreen("[source] twitches. It's alive!")
- if(isaquarium(source.loc))
+ if(source.loc && HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM))
source.loc.visible_message(message)
else
source.visible_message(message)
@@ -425,10 +426,9 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
/datum/fish_trait/predator/proc/eat_fishes(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(source.get_hunger() > 0.75 || !isaquarium(source.loc))
+ if(source.get_hunger() > 0.75 || !source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM))
return
- var/obj/structure/aquarium/aquarium = source.loc
- for(var/obj/item/fish/victim in aquarium.get_fishes(TRUE, source))
+ for(var/obj/item/fish/victim as anything in source.get_aquarium_fishes(TRUE, source))
if(victim.size < source.size * 0.7) // It's a big fish eat small fish world
continue
if(victim.status != FISH_ALIVE || victim == source || HAS_TRAIT(victim, TRAIT_YUCKY_FISH) || SPT_PROB(80, seconds_per_tick))
@@ -519,25 +519,27 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
. = ..()
ADD_TRAIT(fish, TRAIT_FISH_CROSSBREEDER, FISH_TRAIT_DATUM)
-/datum/fish_trait/aggressive
- name = "Aggressive"
+/datum/fish_trait/territorial
+ name = "Territorial"
inheritability = 80
diff_traits_inheritability = 40
- catalog_description = "This fish is aggressively territorial, and may attack fish that come close to it."
+ catalog_description = "This fish will start attacking other fish if the aquarium has five or more."
-/datum/fish_trait/aggressive/apply_to_fish(obj/item/fish/fish)
+/datum/fish_trait/territorial/apply_to_fish(obj/item/fish/fish)
. = ..()
RegisterSignal(fish, COMSIG_FISH_LIFE, PROC_REF(try_attack_fish))
-/datum/fish_trait/aggressive/proc/try_attack_fish(obj/item/fish/source, seconds_per_tick)
+/datum/fish_trait/territorial/proc/try_attack_fish(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(!isaquarium(source.loc) || !SPT_PROB(1, seconds_per_tick))
+ if(!source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM) || !SPT_PROB(1, seconds_per_tick))
+ return
+ var/list/fishes = source.get_aquarium_fishes(TRUE, source)
+ if(length(fishes) < 5)
return
- var/obj/structure/aquarium/aquarium = source.loc
- for(var/obj/item/fish/victim in aquarium.get_fishes(TRUE, source))
+ for(var/obj/item/fish/victim as anything in source.get_aquarium_fishes(TRUE, source))
if(victim.status != FISH_ALIVE)
continue
- aquarium.visible_message(span_warning("[source] violently [pick("whips", "bites", "attacks", "slams")] [victim]"))
+ source.loc.visible_message(span_warning("[source] violently [pick("whips", "bites", "attacks", "slams")] [victim]"))
var/damage = round(rand(4, 20) * (source.size / victim.size)) //smaller fishes take extra damage.
victim.adjust_health(victim.health - damage)
return
@@ -598,6 +600,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
diff_traits_inheritability = 25
catalog_description = "This fish will invert the gravity of the bait at random. May fall upward outside after being caught."
added_difficulty = 20
+ reagents_to_add = list(/datum/reagent/gravitum = 2.3)
/datum/fish_trait/antigrav/minigame_mod(obj/item/fishing_rod/rod, mob/fisherman, datum/fishing_challenge/minigame)
minigame.special_effects |= FISHING_MINIGAME_RULE_ANTIGRAV
@@ -806,4 +809,4 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
return
var/init_alpha = initial(source.alpha)
if(init_alpha != source.alpha)
- animate(source.alpha, alpha = init_alpha, time = 1.2 SECONDS, easing = CIRCULAR_EASING|EASE_OUT)
+ animate(source, alpha = init_alpha, time = 1.2 SECONDS, easing = CIRCULAR_EASING|EASE_OUT)
diff --git a/code/modules/fishing/fish/types/air_space.dm b/code/modules/fishing/fish/types/air_space.dm
index c60fc7a36ef43..e25a3d7819b2e 100644
--- a/code/modules/fishing/fish/types/air_space.dm
+++ b/code/modules/fishing/fish/types/air_space.dm
@@ -104,6 +104,16 @@
/obj/item/fish/starfish/flop_animation()
DO_FLOATING_ANIM(src)
+/obj/item/fish/starfish/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src], and looks upwards..."))
+ user.say("I must go. My people need me.", forced = "starfish suicide")
+ addtimer(CALLBACK(src, PROC_REF(ascension), user), 1 SECONDS)
+ return MANUAL_SUICIDE
+
+/obj/item/fish/starfish/proc/ascension(mob/living/user)
+ user.apply_status_effect(/datum/status_effect/go_away/deluxe)
+ qdel(src)
+
/obj/item/fish/baby_carp
name = "baby space carp"
fish_id = "baby_carp"
@@ -122,7 +132,7 @@
fillet_type = /obj/item/food/fishmeat/carp/no_tox
fish_traits = list(
/datum/fish_trait/carnivore,
- /datum/fish_trait/aggressive,
+ /datum/fish_trait/territorial,
/datum/fish_trait/predator,
/datum/fish_trait/necrophage,
/datum/fish_trait/no_mating,
@@ -149,6 +159,37 @@
RegisterSignal(src, COMSIG_FISH_FINISH_GROWING, PROC_REF(on_growth))
update_appearance(UPDATE_OVERLAYS)
+/obj/item/fish/baby_carp/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src] whole!"))
+ src.forceMove(user)
+ if(status == FISH_DEAD)
+ user.emote("gasp")
+ user.visible_message(span_suicide("[user] chokes on [src] and dies!"))
+ return OXYLOSS
+
+ // the fish grows
+ addtimer(CALLBACK(src, PROC_REF(gestation), user), 20 SECONDS)
+ user.visible_message(span_suicide("[user] starts growing unnaturally..."))
+
+ var/matrix/M = matrix()
+ M.Scale(1.8, 1.2)
+ animate(user, time = 20 SECONDS, transform = M, easing = SINE_EASING)
+ return MANUAL_SUICIDE
+
+/obj/item/fish/baby_carp/proc/gestation(mob/living/user)
+ if(QDELETED(user) || QDELETED(src))
+ return
+ // carp grow big and strong inside the nutritious innards of the human
+ var/mob/living/basic/carp/mega/babby = new(get_turf(user))
+ babby.name = user.name + " Jr."
+
+ var/obj/item/bodypart/chest = user.get_bodypart(BODY_ZONE_CHEST)
+ if(chest)
+ babby.set_greyscale(chest.species_color) // this isn't working. why isnt this working
+
+ user.gib()
+ qdel(src)
+
/obj/item/fish/baby_carp/update_overlays()
. = ..()
var/mutable_appearance/eyes = mutable_appearance(icon, "baby_carp_eyes")
@@ -173,13 +214,12 @@
if(health <= initial(health) * 0.6 || hunger >= 0.6) //if too hurt or hungry, don't grow.
return COMPONENT_DONT_GROW
- if(!isaquarium(loc))
+ if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM))
return
- var/obj/structure/aquarium/aquarium = loc
- if(!aquarium.reproduction_and_growth) //the aquarium has breeding disabled
+ if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled
return COMPONENT_DONT_GROW
- if(length(aquarium.get_fishes()) > AQUARIUM_MAX_BREEDING_POPULATION * 0.5) //check if there's enough room to maturate.
+ if(length(get_aquarium_fishes()) > AQUARIUM_MAX_BREEDING_POPULATION * 0.5) //check if there's enough room to maturate.
return COMPONENT_DONT_GROW
/obj/item/fish/baby_carp/proc/on_growth(datum/source, mob/living/basic/carp/result)
diff --git a/code/modules/fishing/fish/types/anadromous.dm b/code/modules/fishing/fish/types/anadromous.dm
index 7f9e6b4d2e26c..02d126bb30183 100644
--- a/code/modules/fishing/fish/types/anadromous.dm
+++ b/code/modules/fishing/fish/types/anadromous.dm
@@ -55,7 +55,7 @@
fishing_difficulty_modifier = 10
required_temperature_min = MIN_AQUARIUM_TEMP+12
required_temperature_max = MIN_AQUARIUM_TEMP+27
- fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive)
+ fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/territorial)
evolution_types = list(/datum/fish_evolution/armored_pike)
compatible_types = list(/obj/item/fish/pike/armored)
favorite_bait = list(
diff --git a/code/modules/fishing/fish/types/freshwater.dm b/code/modules/fishing/fish/types/freshwater.dm
index 660a406183cfa..8f39d7aa2c86a 100644
--- a/code/modules/fishing/fish/types/freshwater.dm
+++ b/code/modules/fishing/fish/types/freshwater.dm
@@ -25,6 +25,7 @@
/obj/item/fish/goldfish/gill
name = "McGill"
desc = "A great rubber duck tool for Lawyers who can't get a grasp over their case."
+ fish_id_redirect_path = /obj/item/fish/goldfish
stable_population = 1
random_case_rarity = FISH_RARITY_NOPE
fish_flags = parent_type::fish_flags & ~FISH_FLAG_SHOW_IN_CATALOG
@@ -61,6 +62,7 @@
/obj/item/fish/goldfish/three_eyes/gill
name = "McGill"
desc = "A great rubber duck tool for Lawyers who can't get a grasp over their case. It looks kinda different today..."
+ fish_id_redirect_path = /obj/item/fish/goldfish/three_eyes
compatible_types = list(/obj/item/fish/goldfish, /obj/item/fish/goldfish/three_eyes)
beauty = FISH_BEAUTY_GREAT
fish_flags = parent_type::fish_flags & ~FISH_FLAG_SHOW_IN_CATALOG
@@ -80,7 +82,7 @@
average_size = 30
average_weight = 500
stable_population = 3
- fish_traits = list(/datum/fish_trait/aggressive)
+ fish_traits = list(/datum/fish_trait/territorial)
required_temperature_min = MIN_AQUARIUM_TEMP+22
required_temperature_max = MIN_AQUARIUM_TEMP+30
@@ -106,12 +108,16 @@
icon_state = "plastetra"
sprite_width = 4
sprite_height = 2
- average_size = 30
- average_weight = 500
+ average_size = 20
+ average_weight = 180
stable_population = 3
required_temperature_min = MIN_AQUARIUM_TEMP+20
required_temperature_max = MIN_AQUARIUM_TEMP+28
+/obj/item/fish/plasmatetra/Initialize(mapload, apply_qualities = TRUE)
+ . = ..()
+ add_traits(list(TRAIT_FISHING_BAIT, TRAIT_GOOD_QUALITY_BAIT), INNATE_TRAIT)
+
/obj/item/fish/catfish
name = "catfish"
fish_id = "catfish"
@@ -157,12 +163,25 @@
//anxiety naturally limits the amount of zipzaps per tank, so they are stronger alone
electrogenesis_power = 6.7 MEGA JOULES
beauty = FISH_BEAUTY_GOOD
+ suicide_slap_text = "*ZAP!*"
/obj/item/fish/zipzap/get_fish_taste()
return list("raw fish" = 2, "anxiety" = 1)
+/obj/item/fish/zipzap/suicide_act(mob/living/user)
+ if(!electrocute_mob(user, power_source = get_area(src), source = src, siemens_coeff = 1, dist_check = FALSE))
+ user.visible_message(span_suicide("[user] tries to slap [user.p_them()]self with [src], but they're immune to electricity!"))
+ return SHAME
+ return ..()
+
+// real suicide handled by og fish proc
+/obj/item/fish/zipzap/slapperoni(mob/living/user, iteration)
+ electrocute_mob(user, power_source = get_area(src), source = src, siemens_coeff = 1, dist_check = FALSE) // how do i make this use electrogenesis_power
+ return ..()
+
/obj/item/fish/tadpole
name = "tadpole"
+ fish_id = "tadpole"
desc = "The larval spawn of an amphibian. A very minuscle, round creature with a long tail it uses to swim around."
icon_state = "tadpole"
average_size = 3
@@ -201,8 +220,7 @@
var/hunger = get_hunger()
if(hunger >= 0.7) //too hungry to grow
return COMPONENT_DONT_GROW
- var/obj/structure/aquarium/aquarium = loc
- if(istype(aquarium) && !aquarium.reproduction_and_growth) //the aquarium has breeding disabled
+ if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled
return COMPONENT_DONT_GROW
/obj/item/fish/tadpole/proc/on_growth(datum/source, mob/living/basic/frog/result)
@@ -212,6 +230,25 @@
/obj/item/fish/tadpole/get_export_price(price, elasticity_percent)
return 2 //two credits. Tadpoles aren't really that valueable.
+/obj/item/fish/tadpole/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src] whole!"))
+ src.forceMove(user)
+ if(status == FISH_DEAD)
+ user.emote("gasp")
+ user.visible_message(span_suicide("[user] croaks!"))
+ return OXYLOSS
+
+ // the frogg grows
+ addtimer(CALLBACK(src, PROC_REF(gestation), user), 5 SECONDS)
+ return MANUAL_SUICIDE
+
+/obj/item/fish/tadpole/proc/gestation(mob/living/user)
+ if(QDELETED(user) || QDELETED(src))
+ return
+ new /mob/living/basic/frog(user)
+ user.gib()
+ qdel(src)
+
/obj/item/fish/perch
name = "perch"
fish_id = "perch"
diff --git a/code/modules/fishing/fish/types/holographic.dm b/code/modules/fishing/fish/types/holographic.dm
index 4dc304cb0ca04..96664f1496594 100644
--- a/code/modules/fishing/fish/types/holographic.dm
+++ b/code/modules/fishing/fish/types/holographic.dm
@@ -36,6 +36,15 @@
animate(src, alpha = 0, 3 SECONDS, easing = SINE_EASING)
QDEL_IN(src, 3 SECONDS)
+/obj/item/fish/holo/suicide_act(mob/living/user)
+ visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to derez [user.p_them()]selves!"))
+ var/area/station/holodeck/holo_area = get_area(src)
+ if(!istype(holo_area))
+ user.dust(just_ash = TRUE, drop_items = FALSE)
+ return MANUAL_SUICIDE
+ holo_area.linked.add_to_spawned(user) // oh no
+ return MANUAL_SUICIDE_NONLETHAL
+
/obj/item/fish/holo/crab
name = "holographic crab"
fish_id = "holocrab"
@@ -102,6 +111,20 @@
sprite_height = 3
beauty = FISH_BEAUTY_NULL
+/obj/item/fish/holo/checkered/suicide_act(mob/living/carbon/user)
+
+ if(!iscarbon(user))
+ return ..()
+
+ for(var/obj/item/bodypart/limb in user.bodyparts)
+ limb.add_bodypart_overlay(new /datum/bodypart_overlay/texture/checkered)
+
+ var/obj/item/bodypart/head/head = user.get_bodypart(BODY_ZONE_HEAD)
+ if(!isnull(head))
+ head.head_flags &= ~HEAD_EYESPRITES
+
+ return ..()
+
/obj/item/fish/holo/halffish
name = "holographic half-fish"
fish_id = "halffish"
diff --git a/code/modules/fishing/fish/types/mining.dm b/code/modules/fishing/fish/types/mining.dm
index 53c1b89673ce7..bc515d6674581 100644
--- a/code/modules/fishing/fish/types/mining.dm
+++ b/code/modules/fishing/fish/types/mining.dm
@@ -78,15 +78,14 @@
if(hunger >= 0.4) //I'm hungry and angry
anger += growth * 0.6
- if(!isaquarium(loc))
+ if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM))
return
- var/obj/structure/aquarium/aquarium = loc
- if(!aquarium.reproduction_and_growth) //the aquarium has breeding disabled
+ if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled
return COMPONENT_DONT_GROW
- if(!locate(/obj/item/aquarium_prop) in aquarium) //the aquarium deco is quite barren
+ if(!locate(/obj/item/aquarium_prop) in loc) //the aquarium deco is quite barren
anger += growth * 0.25
- var/fish_count = length(aquarium.get_fishes())
+ var/fish_count = length(get_aquarium_fishes())
if(!ISINRANGE(fish_count, 3, AQUARIUM_MAX_BREEDING_POPULATION * 0.5)) //too lonely or overcrowded
anger += growth * 0.3
if(fish_count > AQUARIUM_MAX_BREEDING_POPULATION * 0.5) //check if there's enough room to maturate.
@@ -144,8 +143,28 @@
/obj/item/fish/boned/make_edible(weight_val)
return //it's all bones and no meat.
+/obj/item/fish/boned/get_health_warnings(mob/user, always_deep = FALSE)
+ return list(span_deadsay("It's bones."))
+
+/obj/item/fish/boned/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit suicide!"))
+ forceMove(user)
+ addtimer(CALLBACK(src, PROC_REF(skeleton_appears), user), 2 SECONDS)
+ return MANUAL_SUICIDE_NONLETHAL // chance not to die
+
+/obj/item/fish/boned/proc/skeleton_appears(mob/living/user)
+ user.visible_message(span_warning("[user]'s skin melts off!"), span_boldwarning("Your skin melts off!"))
+ user.spawn_gibs()
+ user.drop_everything(del_on_drop = FALSE, force = FALSE, del_if_nodrop = FALSE)
+ user.set_species(/datum/species/skeleton)
+ user.say("AAAAAAAAAAAAHHHHHHHHHH!!!!!!!!!!!!!!", forced = "bone fish suicide")
+ if(prob(90))
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, death)), 3 SECONDS)
+ user.set_suicide(TRUE)
+ qdel(src)
+
/obj/item/fish/lavaloop
- name = "lavaloop fish"
+ name = "lavaloop"
fish_id = "lavaloop"
desc = "Due to its curvature, it can be used as make-shift boomerang."
icon_state = "lava_loop"
@@ -157,13 +176,14 @@
required_fluid_type = AQUARIUM_FLUID_ANY_WATER //if we can survive hot lava and freezing plasrivers, we can survive anything
fish_movement_type = /datum/fish_movement/zippy
min_pressure = HAZARD_LOW_PRESSURE
- required_temperature_min = MIN_AQUARIUM_TEMP+30
- required_temperature_max = MIN_AQUARIUM_TEMP+35
+ required_temperature_min = MIN_AQUARIUM_TEMP+40
+ required_temperature_max = MAX_AQUARIUM_TEMP+900
fish_traits = list(
/datum/fish_trait/carnivore,
/datum/fish_trait/heavy,
)
compatible_types = list(/obj/item/fish/lavaloop/plasma_river)
+ evolution_types = list(/datum/fish_evolution/plasmaloop)
hitsound = null
throwforce = 5
beauty = FISH_BEAUTY_GOOD
@@ -189,7 +209,7 @@
return list("chewy fish" = 2)
/obj/item/fish/lavaloop/get_food_types()
- return SEAFOOD|MEAT|GORE //Well-cooked in lava
+ return SEAFOOD|MEAT|GORE //Well-cooked in lava/plasma
/obj/item/fish/lavaloop/proc/explode_on_user(mob/living/user)
var/obj/item/bodypart/arm/active_arm = user.get_active_hand()
@@ -205,8 +225,15 @@
return (target.mob_size >= MOB_SIZE_LARGE)
/obj/item/fish/lavaloop/plasma_river
+ name = "plasmaloop"
+ desc = "A lavaloop that has evolved to survive in cold liquid plasma. Can be used as make-shift boomerang."
fish_id = "plasma_lavaloop"
+ icon_state = "plasma_loop"
+ dedicated_in_aquarium_icon_state = /obj/item/fish/lavaloop::icon_state + "_small"
+ required_temperature_min = MIN_AQUARIUM_TEMP - 100
+ required_temperature_max = MIN_AQUARIUM_TEMP+80
compatible_types = list(/obj/item/fish/lavaloop)
+ evolution_types = list(/datum/fish_evolution/lavaloop)
maximum_bonus = 30
/obj/item/fish/lavaloop/plasma_river/explode_on_user(mob/living/user)
diff --git a/code/modules/fishing/fish/types/ruins.dm b/code/modules/fishing/fish/types/ruins.dm
index a9a7148986775..42a84be3248c1 100644
--- a/code/modules/fishing/fish/types/ruins.dm
+++ b/code/modules/fishing/fish/types/ruins.dm
@@ -24,7 +24,7 @@
average_size = 180
average_weight = 5000
death_text = "%SRC stops moving."
- fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/revival, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive)
+ fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/revival, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/territorial)
beauty = FISH_BEAUTY_BAD
/obj/item/fish/mastodon/Initialize(mapload, apply_qualities = TRUE)
@@ -37,6 +37,28 @@
/obj/item/fish/mastodon/get_export_price(price, elasticity_percent)
return ..() * 1.2 //This should push its soft-capped (it's pretty big) price a bit above the rest
+/obj/item/fish/mastodon/get_health_warnings(mob/user, always_deep = FALSE)
+ return list(span_deadsay("It's bones."))
+
+/obj/item/fish/mastodon/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src] whole (somehow)! It looks like user.p_theyre()] trying to commit suicide!"))
+ forceMove(user)
+ user.update_transform(1.25) // become BIG from eating BIG fish
+ addtimer(CALLBACK(src, PROC_REF(skeleton_appears), user), 2 SECONDS)
+ return MANUAL_SUICIDE_NONLETHAL // chance not to die
+
+/obj/item/fish/mastodon/proc/skeleton_appears(mob/living/user)
+ user.visible_message(span_warning("[user]'s skin melts off!"), span_boldwarning("Your skin melts off!"))
+ user.spawn_gibs()
+ user.drop_everything(del_on_drop = FALSE, force = FALSE, del_if_nodrop = FALSE)
+ user.set_species(/datum/species/skeleton)
+ user.say("AAAAAAAAAAAAHHHHHHHHHH!!!!!!!!!!!!!!", forced = "mastodon fish suicide")
+ user.AddComponent(/datum/component/omen) // the curse of the fish
+ if(prob(75)) // rare so less likely (the curse keeps you alive)
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, death)), 3 SECONDS)
+ user.set_suicide(TRUE)
+ qdel(src)
+
///From the cursed spring
/obj/item/fish/soul
name = "soulfish"
@@ -71,6 +93,41 @@
/obj/item/fish/soul/get_fish_taste_cooked()
return list("cooked meat" = 2)
+/obj/item/fish/soul/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit soulcide!"))
+ src.forceMove(user)
+ addtimer(CALLBACK(src, PROC_REF(good_ending), user), 2.5 SECONDS)
+ for(var/i in 1 to 7)
+ addtimer(CALLBACK(src, PROC_REF(soul_attack), user, i), 0.2 SECONDS * i)
+ return MANUAL_SUICIDE
+
+/obj/item/fish/soul/proc/good_ending(mob/living/user)
+ var/mob/living/basic/spaceman/soulman = new(get_turf(user))
+ if(prob(80)) // the percentage is important.
+ soulman.ckey = user.ckey
+ to_chat(soulman, span_notice("You finally feel at peace."))
+ user.gib()
+ qdel(src)
+
+/obj/item/fish/soul/proc/soul_attack(mob/user, iteration)
+ var/obj/item/storage/toolbox/mechanical/old/soulbox = pick(/obj/item/storage/toolbox/mechanical/old, /obj/item/storage/toolbox/mechanical/old/cleaner)
+ soulbox = new soulbox(get_turf(user))
+ var/yeet_direction = pick(GLOB.alldirs)
+ var/yeet_distance = rand(1, 7)
+ if(ishuman(user))
+ var/mob/living/carbon/human/human_user = user
+ human_user.setDir(yeet_direction)
+ human_user.vomit(distance = yeet_distance)
+ soulbox.throw_at(get_edge_target_turf(get_turf(user), yeet_direction), yeet_distance, 2, user, spin = TRUE)
+ soulbox.AddElement(/datum/element/haunted, haunt_color = "#124CD5")
+ if(prob(86)) // 1 in 7 chance to stay
+ addtimer(CALLBACK(src, PROC_REF(soul_gone), soulbox), 1 SECONDS * iteration)
+
+/obj/item/fish/soul/proc/soul_gone(obj/soulbox)
+ soulbox.visible_message("[soulbox] disappears, as if it was never there to begin with...")
+ new /obj/effect/temp_visual/mook_dust(get_turf(soulbox))
+ qdel(soulbox)
+
///From the cursed spring
/obj/item/fish/skin_crab
name = "skin crab"
@@ -98,3 +155,30 @@
/obj/item/fish/skin_crab/get_fish_taste_cooked()
return list("cooked crab" = 2)
+
+/obj/item/fish/skin_crab/suicide_act(mob/living/carbon/human/user)
+ user.visible_message(span_suicide("[user] puts [user.p_their()] hand on [src] and focuses intently! It looks like [user.p_theyre()] trying to transfer [user.p_their()] skin to [src]!"))
+ if(!ishuman(user) || HAS_TRAIT(user, TRAIT_UNHUSKABLE))
+ user.visible_message(span_suicide("[user] has no skin! How embarrassing!"))
+ return SHAME
+
+ if(status == FISH_DEAD)
+ user.visible_message(span_suicide("[src] is dead! [user] just looks like a doofus!"))
+ return SHAME
+
+ var/skin_tone
+ for(var/obj/item/bodypart/to_wound as anything in user.bodyparts)
+ if(to_wound == user.get_bodypart(BODY_ZONE_CHEST))
+ skin_tone = to_wound.species_color || skintone2hex(to_wound.skin_tone)
+ user.cause_wound_of_type_and_severity(WOUND_SLASH, to_wound, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_CRITICAL)
+ user.cause_wound_of_type_and_severity(WOUND_PIERCE, to_wound, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_CRITICAL)
+ user.cause_wound_of_type_and_severity(WOUND_BLUNT, to_wound, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_CRITICAL)
+ user.become_husk(REF(src))
+ to_wound.skin_tone = COLOR_RED // skin is gone. (if they somehow get revived, don't worry - death from loss of skin takes longer than dehydration, so it's still realistic)
+
+ // skin crab grows powerful
+ color = skin_tone //skintone2hex(skin_tone) //wait til smartkar's recolorwork
+ visible_message(span_danger("[user] starts glowing eerily..."))
+ AddElement(/datum/element/haunted, haunt_color = skin_tone)
+
+ return BRUTELOSS
diff --git a/code/modules/fishing/fish/types/saltwater.dm b/code/modules/fishing/fish/types/saltwater.dm
index a28ad497f5319..2b1cc4afdf29b 100644
--- a/code/modules/fishing/fish/types/saltwater.dm
+++ b/code/modules/fishing/fish/types/saltwater.dm
@@ -31,6 +31,14 @@
fishing_difficulty_modifier = 5
beauty = FISH_BEAUTY_GREAT
+// become lubeman. but you suicide
+/obj/item/fish/clownfish/lube/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] covers themselves in [src]'s residue, then swallows it whole! It looks like [user.p_theyre()] trying to commit lubide!"))
+ user.AddComponent(/datum/component/slippery, 8 SECONDS, SLIDE|GALOSHES_DONT_HELP)
+ user.AddElement(/datum/element/lube_walking)
+ qdel(src)
+ return OXYLOSS
+
/obj/item/fish/cardinal
name = "cardinalfish"
fish_id = "cardinal"
@@ -95,6 +103,10 @@
fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/toxic)
beauty = FISH_BEAUTY_GOOD
+/obj/item/fish/pufferfish/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] bites into [src] and starts sucking on it! It looks like [user.p_theyre()] trying to commit suicide!"))
+ return TOXLOSS
+
/obj/item/fish/lanternfish
name = "lanternfish"
fish_id = "lanternfish"
@@ -240,6 +252,31 @@
required_temperature_max = MIN_AQUARIUM_TEMP+26
fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/ink, /datum/fish_trait/camouflage, /datum/fish_trait/wary)
+/obj/item/fish/squid/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] points [src]'s ink glands at their face and presses INCREDIBLY hard! It looks like [user.p_theyre()] trying to commit squidcide!"))
+
+ // No head? Bozo.
+ var/obj/item/bodypart/head = user.get_bodypart(BODY_ZONE_HEAD)
+ if(isnull(head))
+ user.visible_message(span_suicide("[user] has no head! The ink goes flying by!"))
+ return SHAME
+
+ // get inked.
+ user.visible_message(span_warning("[user] is inked by [src]!"), span_userdanger("You've been inked by [src]!"))
+ user.AddComponent(/datum/component/face_decal/splat, \
+ color = COLOR_NEARLY_ALL_BLACK, \
+ memory_type = /datum/memory/witnessed_inking, \
+ mood_event_type = /datum/mood_event/inked, \
+ )
+ playsound(user, SFX_DESECRATION, 50, TRUE)
+
+ if(!HAS_TRAIT(user, TRAIT_STRENGTH) && !HAS_TRAIT(user, TRAIT_HULK))
+ return OXYLOSS
+
+ head.dismember(silent = FALSE)
+ user.visible_message(span_suicide("[user]'s head goes FLYING OFF from the overpressurized ink jet!"))
+ return MANUAL_SUICIDE
+
/obj/item/fish/squid/get_fish_taste()
return list("raw mollusk" = 2)
diff --git a/code/modules/fishing/fish/types/station.dm b/code/modules/fishing/fish/types/station.dm
index 8d958303bf319..ca7306038a60f 100644
--- a/code/modules/fishing/fish/types/station.dm
+++ b/code/modules/fishing/fish/types/station.dm
@@ -64,6 +64,7 @@
/obj/item/fish/sludgefish/purple
name = "purple sludgefish"
+ fish_id = "purple_sludgefish"
desc = "A misshapen, fragile, loosely fish-like living goop. This one has developed sexual reproduction mechanisms, and a purple tint to boot."
icon_state = "sludgefish_purple"
random_case_rarity = FISH_RARITY_NOPE
@@ -150,6 +151,12 @@
add_traits(list(TRAIT_FISHING_BAIT, TRAIT_GREAT_QUALITY_BAIT), INNATE_TRAIT)
ADD_TRAIT(src, TRAIT_FISH_SURVIVE_COOKING, INNATE_TRAIT)
+/obj/item/fish/fryish/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit suicide!"))
+ user.say("Mmmm! Delicious!", forced = "fryfish suicide")
+ qdel(src)
+ return OXYLOSS
+
/obj/item/fish/fryish/update_size_and_weight(new_size = average_size, new_weight = average_weight, update_materials = TRUE)
. = ..()
if(!next_type)
diff --git a/code/modules/fishing/fish/types/syndicate.dm b/code/modules/fishing/fish/types/syndicate.dm
index 81366c2ba8f75..a1c32830f44ed 100644
--- a/code/modules/fishing/fish/types/syndicate.dm
+++ b/code/modules/fishing/fish/types/syndicate.dm
@@ -32,6 +32,18 @@
required_temperature_max = MIN_AQUARIUM_TEMP+28
beauty = FISH_BEAUTY_EXCELLENT
+/obj/item/fish/donkfish/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit suicide!"))
+ if(!ishuman(user))
+ return TOXLOSS
+
+ var/mob/living/carbon/human/human_user = user
+ for(var/i in 1 to rand(5, 15))
+ human_user.dir = pick(GLOB.alldirs)
+ human_user.vomit(vomit_flags = pick(VOMIT_CATEGORY_DEFAULT, VOMIT_CATEGORY_BLOOD), distance = rand(1, 7))
+ qdel(src)
+ return TOXLOSS
+
/obj/item/fish/jumpercable
name = "monocloning jumpercable"
fish_id = "jumpercable"
@@ -59,6 +71,13 @@
//without this, they'd sell for over 6000 each, minimum. That's a lot for a fish that requires no maintance nor partner to farm.
return ..() * 0.4
+/obj/item/fish/jumpercable/suicide_act(mob/living/user)
+ user.visible_message(span_suicide("[user] hooks both ends of [src] to their chest! It looks like [user.p_theyre()] trying to commit suicide!"))
+ electrocute_mob(user, power_source = get_area(src), source = src, siemens_coeff = 1, dist_check = FALSE)
+ tesla_zap(source = user, zap_range = 4, power = electrogenesis_power, cutoff = 1e3, zap_flags = ZAP_LOW_POWER_GEN|ZAP_MOB_DAMAGE)
+ playsound(user, 'sound/items/weapons/zapbang.ogg', 75)
+ return OXYLOSS
+
/obj/item/fish/chainsawfish
name = "chainsawfish"
fish_id = "chainsawfish"
@@ -97,7 +116,7 @@
FISH_BAIT_VALUE = GORE,
),
)
- fish_traits = list(/datum/fish_trait/aggressive, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/stinger)
+ fish_traits = list(/datum/fish_trait/territorial, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/stinger)
required_temperature_min = MIN_AQUARIUM_TEMP+18
required_temperature_max = MIN_AQUARIUM_TEMP+26
@@ -181,6 +200,20 @@
block_chance += bonus_malus * 2
toolspeed -= bonus_malus * 0.1
+// you suicide like a real chainsaw
+/obj/item/fish/chainsawfish/suicide_act(mob/living/carbon/user)
+ if(status == FISH_DEAD)
+ user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!"))
+ playsound(src, 'sound/items/weapons/genhit1.ogg', 100, TRUE)
+ return BRUTELOSS
+
+ user.visible_message(span_suicide("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
+ playsound(src, 'sound/items/weapons/chainsawhit.ogg', 100, TRUE)
+ var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
+ if(myhead)
+ myhead.dismember()
+ return BRUTELOSS
+
/obj/item/fish/pike/armored
name = "armored pike"
fish_id = "armored_pike"
@@ -207,7 +240,7 @@
random_case_rarity = FISH_RARITY_GOOD_LUCK_FINDING_THIS
beauty = FISH_BEAUTY_GREAT
fishing_difficulty_modifier = 20
- fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive, /datum/fish_trait/picky_eater, /datum/fish_trait/stinger)
+ fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/territorial, /datum/fish_trait/picky_eater, /datum/fish_trait/stinger)
evolution_types = null
compatible_types = list(/obj/item/fish/pike)
favorite_bait = list(
diff --git a/code/modules/fishing/fish/types/tiziran.dm b/code/modules/fishing/fish/types/tiziran.dm
index 7cc3ea94e6862..fdfbd578083c0 100644
--- a/code/modules/fishing/fish/types/tiziran.dm
+++ b/code/modules/fishing/fish/types/tiziran.dm
@@ -37,7 +37,7 @@
/obj/item/fish/moonfish/proc/egg_checks(datum/source, seconds_per_tick, growth, result_path)
if(result_path != /obj/item/food/moonfish_eggs) //Don't stop the growth of the dwarf subtype.
return
- if(!proper_environment() || is_starving())
+ if(!proper_environment() || get_starvation_mult())
return COMPONENT_DONT_GROW
var/count = 0
for(var/obj/item/food/moonfish_eggs/egg in loc)
diff --git a/code/modules/fishing/fishing_equipment.dm b/code/modules/fishing/fishing_equipment.dm
index 1b589e18be3da..37aea262426bb 100644
--- a/code/modules/fishing/fishing_equipment.dm
+++ b/code/modules/fishing/fishing_equipment.dm
@@ -12,8 +12,8 @@
icon = 'icons/obj/fishing.dmi'
icon_state = "reel_blue"
w_class = WEIGHT_CLASS_SMALL
- ///A list of traits that this fishing line has, checked by fish traits and the minigame.
- var/list/fishing_line_traits
+ ///A bitfield of traits that this fishing line has, checked by fish traits and the minigame.
+ var/fishing_line_traits
/// Color of the fishing line
var/line_color = COLOR_GRAY
///The description given to the autowiki
@@ -146,11 +146,11 @@
icon_state = "hook"
w_class = WEIGHT_CLASS_TINY
- /// A list of traits that this fishing hook has, checked by fish traits and the minigame
- var/list/fishing_hook_traits
+ /// A bitfield of traits that this fishing hook has, checked by fish traits and the minigame
+ var/fishing_hook_traits
/// icon state added to main rod icon when this hook is equipped
var/rod_overlay_icon_state = "hook_overlay"
- /// What subtype of `/obj/item/chasm_detritus` do we fish out of chasms? Defaults to `/obj/item/chasm_detritus`.
+ /// What subtype of `/datum/chasm_detritus` do we fish out of chasms? Defaults to `/datum/chasm_detritus`.
var/chasm_detritus_type = /datum/chasm_detritus
///The description given to the autowiki
var/wiki_desc = "A generic fishing hook. You won't be able to fish without one. "
@@ -174,6 +174,9 @@
///Check if tha target can be caught by the hook
/obj/item/fishing_hook/proc/can_be_hooked(atom/target)
+ if(isliving(target))
+ var/mob/living/mob = target
+ return (mob.mob_biotypes & MOB_AQUATIC)
return isitem(target)
///Any special effect when hooking a target that's not managed by the fishing rod.
@@ -212,8 +215,8 @@
SIGNAL_HANDLER
REMOVE_TRAIT(rod, TRAIT_ROD_REMOVE_FISHING_DUD, REF(src))
-/obj/item/fishing_hook/magnet/get_hook_bonus_multiplicative(fish_type, datum/fish_source/source)
- if(fish_type == FISHING_DUD || ispath(fish_type, /obj/item/fish))
+/obj/item/fishing_hook/magnet/get_hook_bonus_multiplicative(fish_type)
+ if(fish_type == FISHING_DUD || ispath(fish_type, /obj/item/fish) || isfish(fish_type))
return ..()
// We multiply the odds by five for everything that's not a fish nor a dud
@@ -272,9 +275,9 @@
return "The hook on your fishing rod wasn't meant for traditional fishing, rendering it useless at doing so!"
-/obj/item/fishing_hook/rescue/get_hook_bonus_multiplicative(fish_type, datum/fish_source/source)
+/obj/item/fishing_hook/rescue/get_hook_bonus_multiplicative(fish_type)
// Sorry, you won't catch fish with this.
- if(ispath(fish_type, /obj/item/fish))
+ if(ispath(fish_type, /obj/item/fish) || isfish(fish_type))
return RESCUE_HOOK_FISH_MULTIPLIER
return ..()
@@ -430,12 +433,12 @@
///From the fishing mystery box. It's basically a lazarus and a few bottles of strange reagents.
/obj/item/storage/box/fish_revival_kit
name = "fish revival kit"
- desc = "Become a fish doctor today."
+ desc = "Become a fish doctor today. A label on the side indicates that fish require two to ten reagent units to be splashed onto them for revival, depending on size."
illustration = "fish"
/obj/item/storage/box/fish_revival_kit/PopulateContents()
new /obj/item/lazarus_injector(src)
- new /obj/item/reagent_containers/cup/bottle/strange_reagent(src)
+ new /obj/item/reagent_containers/cup/bottle/fishy_reagent(src)
new /obj/item/reagent_containers/cup(src) //to splash the reagents on the fish.
new /obj/item/storage/fish_case(src)
new /obj/item/storage/fish_case(src)
diff --git a/code/modules/fishing/fishing_minigame.dm b/code/modules/fishing/fishing_minigame.dm
index a3e9f255e1667..75cd0043d2274 100644
--- a/code/modules/fishing/fishing_minigame.dm
+++ b/code/modules/fishing/fishing_minigame.dm
@@ -49,11 +49,13 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
var/reward_path = FISHING_DUD
/// Minigame difficulty
var/difficulty = FISHING_DEFAULT_DIFFICULTY
- // Current phase
+ /// Current phase
var/phase = WAIT_PHASE
- // Timer for the next phase
+ /// Timer for the next phase
var/next_phase_timer
- // The last time we clicked during the baiting phase
+ /// The lower and upper bounds of the waiting phase timer
+ var/list/wait_time_range = list(3 SECONDS, 25 SECONDS)
+ /// The last time we clicked during the baiting phase
var/last_baiting_click
/// Fishing mob
var/mob/user
@@ -126,6 +128,10 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
RegisterSignal(fish_source, COMSIG_FISHING_SOURCE_INTERRUPT_CHALLENGE, PROC_REF(interrupt_challenge))
fish_source.RegisterSignal(user, COMSIG_MOB_COMPLETE_FISHING, TYPE_PROC_REF(/datum/fish_source, on_challenge_completed))
background = comp.fish_source.background
+ if(comp.fish_source.wait_time_range)
+ wait_time_range = comp.fish_source.wait_time_range
+ if(float.spin_frequency) //Using a fishing lure narrows the range a bit, for better or worse.
+ wait_time_range = list(wait_time_range[1] + 8 SECONDS, wait_time_range[2] - 8 SECONDS)
SEND_SIGNAL(user, COMSIG_MOB_BEGIN_FISHING, src)
SEND_SIGNAL(rod, COMSIG_ROD_BEGIN_FISHING, src)
GLOB.fishing_challenges_by_user[user] = src
@@ -209,7 +215,7 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
/datum/fishing_challenge/proc/start(mob/living/user)
/// Create fishing line visuals
if(!used_rod.internal)
- fishing_line = used_rod.create_fishing_line(float, user, target_py = 5)
+ fishing_line = used_rod.create_fishing_line(float, user, target_py = float.pixel_y + 4)
if(isnull(fishing_line)) //couldn't create a fishing line, probably because we don't have a good line of sight.
qdel(src)
return
@@ -351,11 +357,12 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
if(win)
if(reward_path != FISHING_DUD)
playsound(location, 'sound/effects/bigsplash.ogg', 100)
- if(ispath(reward_path, /obj/item/fish))
+ if(ispath(reward_path, /obj/item/fish) || isfish(reward_path))
var/obj/item/fish/fish_reward = reward_path
- var/fish_id = initial(fish_reward.fish_id)
+ var/obj/item/fish/redirect_path = initial(fish_reward.fish_id_redirect_path)
+ var/fish_id = ispath(redirect_path, /obj/item/fish) ? initial(redirect_path.fish_id) : initial(fish_reward.fish_id)
if(fish_id)
- user.client?.give_award(/datum/award/score/progress/fish, user, initial(fish_reward.fish_id))
+ user.client?.give_award(/datum/award/score/progress/fish, user, fish_id)
SEND_SIGNAL(user, COMSIG_MOB_COMPLETE_FISHING, src, win)
if(!QDELETED(src))
qdel(src)
@@ -369,7 +376,7 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
if(penalty)
wait_time = min(timeleft(next_phase_timer) + rand(3 SECONDS, 5 SECONDS), 30 SECONDS)
else
- wait_time = float.spin_frequency ? rand(11 SECONDS, 17 SECONDS) : rand(3 SECONDS, 25 SECONDS)
+ wait_time = rand(wait_time_range[1], wait_time_range[2])
if(special_effects & FISHING_MINIGAME_AUTOREEL && wait_time >= 15 SECONDS)
wait_time = max(wait_time - 7.5 SECONDS, 15 SECONDS)
deltimer(next_phase_timer)
@@ -391,7 +398,13 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
playsound(location, 'sound/effects/fish_splash.ogg', 100)
if(HAS_MIND_TRAIT(user, TRAIT_REVEAL_FISH))
- fish_icon = GLOB.specific_fish_icons[reward_path] || FISH_ICON_DEF
+ var/possible_icon
+ if(isatom(reward_path))
+ var/atom/reward = reward_path
+ possible_icon = GLOB.specific_fish_icons[reward.type]
+ else
+ possible_icon = GLOB.specific_fish_icons[reward_path]
+ fish_icon = possible_icon || FISH_ICON_DEF
switch(fish_icon)
if(FISH_ICON_DEF)
send_alert("fish!!!")
@@ -423,6 +436,8 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
send_alert("seed!!!")
if(FISH_ICON_BOTTLE)
send_alert("bottle!!!")
+ if(FISH_ICON_ORGAN)
+ send_alert("organ!!!")
else
send_alert("!!!")
animate(float, pixel_y = 3, time = 5, loop = -1, flags = ANIMATION_RELATIVE)
@@ -447,11 +462,22 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
SIGNAL_HANDLER
interrupt()
+/datum/fishing_challenge/proc/on_reward_removed(datum/source)
+ SIGNAL_HANDLER
+ send_alert("reward gone!")
+ interrupt()
+
+/datum/fishing_challenge/proc/on_fish_death(obj/item/fish/source)
+ SIGNAL_HANDLER
+ if(source.status == FISH_DEAD)
+ win_anyway()
+
/datum/fishing_challenge/proc/win_anyway()
- if(!completed)
- //winning by timeout or idling around shouldn't give as much experience.
- experience_multiplier *= 0.5
- complete(TRUE)
+ if(completed)
+ return
+ //winning by timeout / fish death shouldn't give as much experience.
+ experience_multiplier *= 0.5
+ complete(TRUE)
/datum/fishing_challenge/proc/hurt_fish(datum/source, obj/item/fish/reward)
SIGNAL_HANDLER
@@ -498,13 +524,15 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
if(difficulty > FISHING_DEFAULT_DIFFICULTY)
completion -= MAX_FISH_COMPLETION_MALUS * (difficulty * 0.01)
+ var/is_fish_instance = isfish(reward_path)
+
/// Fish minigame properties
- if(ispath(reward_path,/obj/item/fish))
+ if(ispath(reward_path,/obj/item/fish) || is_fish_instance)
var/obj/item/fish/fish = reward_path
var/movement_path = initial(fish.fish_movement_type)
mover = new movement_path(src)
// Apply fish trait modifiers
- var/list/fish_traits = SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS]
+ var/list/fish_traits = is_fish_instance ? fish.fish_traits : SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS]
for(var/fish_trait in fish_traits)
var/datum/fish_trait/trait = GLOB.fish_traits[fish_trait]
trait.minigame_mod(used_rod, user, src)
@@ -544,6 +572,11 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
var/obj/item/fish/fish = reward_path
var/wait_time = (initial(fish.health) / FISH_DAMAGE_PER_SECOND) SECONDS
addtimer(CALLBACK(src, PROC_REF(win_anyway)), wait_time, TIMER_DELETE_ME)
+ else if(ismovable(reward_path))
+ var/atom/movable/reward = reward_path
+ RegisterSignal(reward, COMSIG_MOVABLE_MOVED, PROC_REF(on_reward_removed))
+ if(is_fish_instance)
+ RegisterSignal(reward, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_death))
start_time = world.time
///Throws a stack with prefixed text.
diff --git a/code/modules/fishing/fishing_portal_machine.dm b/code/modules/fishing/fishing_portal_machine.dm
index 8b2f1a34e93f7..ad63703155633 100644
--- a/code/modules/fishing/fishing_portal_machine.dm
+++ b/code/modules/fishing/fishing_portal_machine.dm
@@ -19,6 +19,8 @@
var/long_range_link = FALSE
/// contains ALL fishing destinations.
var/all_destinations = FALSE
+ /// If the current active fishing spot is from multitool linkage, this value is the atom it would originally belong to.
+ var/atom/current_linked_atom
/obj/machinery/fishing_portal_generator/Initialize(mapload)
. = ..()
@@ -202,7 +204,7 @@
if(machine_stat & NOPOWER)
balloon_alert(user, "no power!")
return ITEM_INTERACT_BLOCKING
- if(!istype(selected_source, /datum/fish_source/portal)) //likely from a linked fishing spot
+ if(!all_destinations && !istype(selected_source, /datum/fish_source/portal)) //likely from a linked fishing spot
var/abort = TRUE
for(var/atom/spot as anything in linked_fishing_spots)
if(linked_fishing_spots[spot] != selected_source)
@@ -215,6 +217,7 @@
abort = FALSE
if(!abort)
RegisterSignal(spot, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_fishing_spot_z_level_changed))
+ current_linked_atom = spot
break
if(abort && !all_destinations)
balloon_alert(user, "cannot reach linked!")
@@ -233,6 +236,7 @@
for(var/atom/spot as anything in linked_fishing_spots)
if(linked_fishing_spots[spot] == active.fish_source)
UnregisterSignal(spot, COMSIG_MOVABLE_Z_CHANGED)
+ current_linked_atom = null
QDEL_NULL(active)
REMOVE_TRAIT(src, TRAIT_CATCH_AND_RELEASE, INNATE_TRAIT)
diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm
index 4bd045616b3e8..9fc26ee10ae15 100644
--- a/code/modules/fishing/fishing_rod.dm
+++ b/code/modules/fishing/fishing_rod.dm
@@ -140,7 +140,7 @@
var/list/block = list()
var/get_percent = HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH)
block += span_info("You think you can cast it up to [get_cast_range()] tiles away.")
- block += get_stat_info(get_percent, difficulty_modifier, "Fishing will be", "easier", "harder", "with this fishing rod")
+ block += get_stat_info(get_percent, difficulty_modifier * 0.01, "Fishing will be", "easier", "harder", "with this fishing rod", offset = 0)
block += get_stat_info(get_percent, experience_multiplier, "You will gain experience", "faster", "slower")
block += get_stat_info(get_percent, completion_speed_mult, "You should complete the minigame", "faster", "slower")
block += get_stat_info(get_percent, bait_speed_mult, "Reeling is", "faster", "slower")
@@ -148,6 +148,7 @@
block += get_stat_info(get_percent, bounciness_mult, "This fishing rod is ", "bouncier", "less bouncy", "than a normal one", less_is_better = TRUE)
block += get_stat_info(get_percent, gravity_mult, "The lure will sink", "faster", "slower", span_info = TRUE)
+ list_clear_nulls(block)
. += examine_block(block.Join("\n"))
if(get_percent && (material_flags & MATERIAL_EFFECTS) && length(custom_materials))
@@ -172,15 +173,16 @@
. += examine_block(block.Join("\n"))
///Used in examine_more to reduce all the copypasta when getting more information about the various stats of the fishing rod.
-/obj/item/fishing_rod/proc/get_stat_info(get_percent, value, prefix, easier, harder, suffix = "with this fishing rod", span_info = FALSE, less_is_better = FALSE)
+/obj/item/fishing_rod/proc/get_stat_info(get_percent, value, prefix, easier, harder, suffix = "with this fishing rod", span_info = FALSE, less_is_better = FALSE, offset = 1)
if(value == 1)
return
- var/percent = get_percent ? "[abs(value)]% " : ""
- var/harder_easier = value > 1 ? easier : harder
+ value -= offset
+ var/percent = get_percent ? "[abs(value * 100)]% " : ""
+ var/harder_easier = value > 0 ? easier : harder
. = "[prefix] [percent][harder_easier] [suffix]."
if(span_info)
return span_info(.)
- if(less_is_better ? value < 1 : value > 1)
+ if(less_is_better ? value < 0 : value > 0)
return span_nicegreen(.)
return span_danger(.)
@@ -332,7 +334,7 @@
QDEL_NULL(fishing_line)
var/beam_color = line?.line_color || default_line_color
fishing_line = new(firer, target, icon_state = "fishing_line", beam_color = beam_color, emissive = FALSE, override_target_pixel_y = target_py)
- fishing_line.lefthand = firer.get_held_index_of_item(src) % 2 == 1
+ fishing_line.lefthand = IS_LEFT_INDEX(firer.get_held_index_of_item(src))
RegisterSignal(fishing_line, COMSIG_BEAM_BEFORE_DRAW, PROC_REF(check_los))
RegisterSignal(fishing_line, COMSIG_QDELETING, PROC_REF(clear_line))
INVOKE_ASYNC(fishing_line, TYPE_PROC_REF(/datum/beam/, Start))
@@ -425,13 +427,13 @@
casting = TRUE
var/obj/projectile/fishing_cast/cast_projectile = new(get_turf(src))
cast_projectile.range = get_cast_range(user)
- cast_projectile.decayedRange = get_cast_range(user)
+ cast_projectile.maximum_range = get_cast_range(user)
cast_projectile.owner = src
cast_projectile.original = target
cast_projectile.fired_from = src
cast_projectile.firer = user
cast_projectile.impacted = list(WEAKREF(user) = TRUE)
- cast_projectile.preparePixelProjectile(target, user)
+ cast_projectile.aim_projectile(target, user)
cast_projectile.fire()
COOLDOWN_START(src, casting_cd, 1 SECONDS)
@@ -830,11 +832,12 @@
/obj/projectile/fishing_cast
name = "fishing hook"
icon = 'icons/obj/fishing.dmi'
- icon_state = "hook_projectile"
+ icon_state = "hook"
damage = 0
range = 5
suppressed = SUPPRESSED_VERY
can_hit_turfs = TRUE
+ projectile_angle = 180
var/obj/item/fishing_rod/owner
var/datum/beam/our_line
@@ -842,7 +845,6 @@
/obj/projectile/fishing_cast/fire(angle, atom/direct_target)
if(owner.hook)
icon_state = owner.hook.icon_state
- transform = transform.Scale(1, -1)
. = ..()
if(!QDELETED(src))
our_line = owner.create_fishing_line(src, firer)
diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm
index 09ef60c1ff632..abf3a298462cb 100644
--- a/code/modules/fishing/sources/_fish_source.dm
+++ b/code/modules/fishing/sources/_fish_source.dm
@@ -1,4 +1,4 @@
-GLOBAL_LIST_INIT(preset_fish_sources, init_subtypes_w_path_keys(/datum/fish_source, list()))
+GLOBAL_LIST_INIT_TYPED(preset_fish_sources, /datum/fish_source, init_subtypes_w_path_keys(/datum/fish_source, list()))
/**
* When adding new fishable rewards to a table/counts, you can specify an icon to show in place of the
@@ -60,6 +60,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
))
return_list[FISHING_RANDOM_SEED] = FISH_ICON_SEED
+ return_list[FISHING_RANDOM_ORGAN] = FISH_ICON_ORGAN
return return_list
/**
@@ -87,12 +88,14 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
/// Background image name from /datum/asset/simple/fishing_minigame
var/background = "background_default"
var/fish_source_flags = NONE
- /// If FISH_SOURCE_FLAG_EXPLOSIVE_MALUS is set, this will be used to keep track of the turfs where an explosion happened for when we'll spawn the loot.
- var/list/exploded_turfs
+ /// If FISH_SOURCE_FLAG_EXPLOSIVE_MALUS is set, this will track of how much we're "exhausting" the system by bombing it repeatedly.
+ var/explosive_fishing_score = 0
///When linked to a fishing portal, this will be the icon_state of this option in the radial menu
var/radial_state = "default"
///When selected by the fishing portal, this will be the icon_state of the overlay shown on the machine.
var/overlay_state = "portal_aquarium"
+ ///If set, this overrides the upper and lower bounds of how long you should wait during the waiting phase of the minigame.
+ var/list/wait_time_range
/// Mindless mobs that can fish will never pull up items on this list
var/static/list/profound_fisher_blacklist = typecacheof(list(
@@ -119,9 +122,12 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
for(var/path in fish_counts)
if(!(path in fish_table))
stack_trace("path [path] found in the 'fish_counts' list but not in the 'fish_table'")
+ if(wait_time_range && length(wait_time_range) != 2)
+ stack_trace("wait_time_range for [type] is set but has length different than two")
/datum/fish_source/Destroy()
- exploded_turfs = null
+ if(explosive_fishing_score)
+ STOP_PROCESSING(SSprocessing, src)
return ..()
///Called when src is set as the fish source of a fishing spot component
@@ -174,16 +180,20 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
// Difficulty modifier added by the rod
. += rod.difficulty_modifier
- if(!ispath(result,/obj/item/fish))
+ var/is_fish_instance = isfish(result)
+ if(!ispath(result,/obj/item/fish) && !is_fish_instance)
// In the future non-fish rewards can have variable difficulty calculated here
return
var/obj/item/fish/caught_fish = result
- var/list/fish_properties = SSfishing.fish_properties[caught_fish]
+
+ //Just to clarify when we should use the path instead of the fish, which can be both a path and an instance.
+ var/result_path = is_fish_instance ? caught_fish.type : result
+
// Baseline fish difficulty
. += initial(caught_fish.fishing_difficulty_modifier)
-
+ var/list/fish_properties = SSfishing.fish_properties[result_path]
if(rod.bait)
var/obj/item/bait = rod.bait
//Fav bait makes it easier
@@ -198,7 +208,11 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
. += DISLIKED_BAIT_DIFFICULTY_MOD
// Matching/not matching fish traits and equipment
- var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
+ var/list/fish_traits
+ if(is_fish_instance)
+ fish_traits = caught_fish.fish_traits
+ else
+ fish_traits = fish_properties[FISH_PROPERTIES_TRAITS]
var/additive_mod = 0
var/multiplicative_mod = 1
@@ -211,6 +225,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
. += additive_mod
. *= multiplicative_mod
+
///Comsig proc from the fishing minigame for 'roll_reward'
/datum/fish_source/proc/roll_reward_minigame(datum/source, obj/item/fishing_rod/rod, mob/fisherman, atom/location, list/rewards)
SIGNAL_HANDLER
@@ -242,15 +257,14 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
UnregisterSignal(user, COMSIG_MOB_COMPLETE_FISHING)
if(!success)
return
- var/turf/fishing_spot = get_turf(challenge.float)
- var/atom/movable/reward = dispense_reward(challenge.reward_path, user, fishing_spot)
+ var/atom/movable/reward = dispense_reward(challenge.reward_path, user, challenge.location)
if(reward)
user.add_mob_memory(/datum/memory/caught_fish, protagonist = user, deuteragonist = reward.name)
SEND_SIGNAL(challenge.used_rod, COMSIG_FISHING_ROD_CAUGHT_FISH, reward, user)
challenge.used_rod.on_reward_caught(reward, user)
/// Gives out the reward if possible
-/datum/fish_source/proc/dispense_reward(reward_path, mob/fisherman, turf/fishing_spot)
+/datum/fish_source/proc/dispense_reward(reward_path, mob/fisherman, atom/fishing_spot)
var/atom/movable/reward = simple_dispense_reward(reward_path, get_turf(fisherman), fishing_spot)
if(!reward) //balloon alert instead
fisherman.balloon_alert(fisherman, pick(duds))
@@ -260,14 +274,12 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
else if(istype(reward, /obj/effect/spawner)) // Do not attempt to forceMove() a spawner. It will break things, and the spawned item should already be at the mob's turf by now.
fisherman.balloon_alert(fisherman, "caught something!")
return
- else // for fishing things like corpses, move them to the turf of the fisherman
- INVOKE_ASYNC(reward, TYPE_PROC_REF(/atom/movable, forceMove), get_turf(fisherman))
fisherman.balloon_alert(fisherman, "caught [reward]!")
return reward
///Simplified version of dispense_reward that doesn't need a fisherman.
-/datum/fish_source/proc/simple_dispense_reward(reward_path, atom/spawn_location, turf/fishing_spot)
+/datum/fish_source/proc/simple_dispense_reward(reward_path, atom/spawn_location, atom/fishing_spot)
if(isnull(reward_path))
return null
var/area/area = get_area(fishing_spot)
@@ -298,9 +310,13 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
addtimer(CALLBACK(src, PROC_REF(regen_count), reward_path), regen_time)
/// Spawns a reward from a atom path right where the fisherman is. Part of the dispense_reward() logic.
-/datum/fish_source/proc/spawn_reward(reward_path, atom/spawn_location, turf/fishing_spot)
+/datum/fish_source/proc/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot)
if(reward_path == FISHING_DUD)
return
+ if(ismovable(reward_path))
+ var/atom/movable/reward = reward_path
+ reward.forceMove(spawn_location)
+ return reward
if(ispath(reward_path, /datum/chasm_detritus))
return GLOB.chasm_detritus_types[reward_path].dispense_detritus(spawn_location, fishing_spot)
if(!ispath(reward_path, /atom/movable))
@@ -312,7 +328,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
return reward
/// Returns the fish table, with with the unavailable items from fish_counts removed.
-/datum/fish_source/proc/get_fish_table(from_explosion = FALSE)
+/datum/fish_source/proc/get_fish_table(atom/location, from_explosion = FALSE)
var/list/table = fish_table.Copy()
//message bottles cannot spawn from explosions. They're meant to be one-time messages (rarely) and photos from past rounds
//and it would suck if the pool of bottle messages were constantly being emptied by explosive fishing.
@@ -331,8 +347,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
///Multiplier used to make fishes more common compared to everything else.
var/result_multiplier = 1
-
- var/list/final_table = get_fish_table()
+ var/list/final_table = get_fish_table(location)
if(bait)
for(var/trait in weight_result_multiplier)
@@ -352,7 +367,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
final_table[result] *= rod.hook.get_hook_bonus_multiplicative(result)
final_table[result] += rod.hook.get_hook_bonus_additive(result)//Decide on order here so it can be multiplicative
- if(ispath(result, /obj/item/fish))
+ if(ispath(result, /obj/item/fish) || isfish(result))
if(bait)
final_table[result] = round(final_table[result] * result_multiplier, 1)
var/mult = bait.check_bait(result)
@@ -379,7 +394,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
var/highest_fish_weight
var/list/collected_fish_weights = list()
for(var/fishable in table)
- if(ispath(fishable, /obj/item/fish))
+ if(ispath(fishable, /obj/item/fish) || isfish(fishable))
var/fish_weight = table[fishable]
collected_fish_weights[fishable] = fish_weight
if(fish_weight > highest_fish_weight)
@@ -392,30 +407,38 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
table[fish] += round(difference**exponent, 1)
/datum/fish_source/proc/get_fish_trait_catch_mods(weight, obj/item/fish/fish, obj/item/fishing_rod/rod, mob/user, atom/location)
- if(!ispath(fish, /obj/item/fish))
+ var/is_fish_instance = isfish(fish)
+ if(!ispath(fish, /obj/item/fish) && !is_fish_instance)
return weight
var/multiplier = 1
- for(var/fish_trait in SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS])
+ var/list/fish_traits
+ if(is_fish_instance)
+ fish_traits = fish.fish_traits
+ else
+ fish_traits = SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS]
+ for(var/fish_trait in fish_traits)
var/datum/fish_trait/trait = GLOB.fish_traits[fish_trait]
- var/list/mod = trait.catch_weight_mod(rod, user, location, fish)
+ var/list/mod = trait.catch_weight_mod(rod, user, location, is_fish_instance ? fish.type : fish)
weight += mod[ADDITIVE_FISHING_MOD]
multiplier *= mod[MULTIPLICATIVE_FISHING_MOD]
return round(weight * multiplier, 1)
///returns true if this fishing spot has fish that are shown in the catalog.
-/datum/fish_source/proc/has_known_fishes()
- for(var/reward in fish_table)
- if(!ispath(reward, /obj/item/fish))
+/datum/fish_source/proc/has_known_fishes(atom/location)
+ var/show_anyway = fish_source_flags & FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG
+ for(var/reward in get_fish_table(location))
+ if(!ispath(reward, /obj/item/fish) && !isfish(reward))
continue
var/obj/item/fish/prototype = reward
- if(initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG)
+ if(!show_anyway && initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG)
return TRUE
return FALSE
///Add a string with the names of catchable fishes to the examine text.
/datum/fish_source/proc/get_catchable_fish_names(mob/user, atom/location, list/examine_text)
var/list/known_fishes = list()
+ var/show_anyway = fish_source_flags & FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG
var/obj/item/fishing_rod/rod = user.get_active_held_item()
var/list/final_table
@@ -428,17 +451,18 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
var/list/rodless_weights = list()
var/total_rod_weight = 0
var/list/rod_weights = list()
- for(var/reward in fish_table)
- var/weight = fish_table[reward]
+ var/list/table = get_fish_table(location)
+ for(var/reward in table)
+ var/weight = table[reward]
var/final_weight
if(rod)
total_weight += weight
final_weight = final_table[reward]
total_rod_weight += final_weight
- if(!ispath(reward, /obj/item/fish))
+ if(!ispath(reward, /obj/item/fish) && !isfish(reward))
continue
var/obj/item/fish/prototype = reward
- if(!(initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG))
+ if(!show_anyway && !(initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG))
continue
if(rod)
rodless_weights[reward] = weight
@@ -467,32 +491,30 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
var/info = "You can catch the following fish here"
if(rod)
- info = span_tooltip("boldened are the fish you're more likely to catch with your current setup. The opposite is true for smaller names", info)
+ info = span_tooltip("In bold are fish you're more likely to catch with the current setup. The opposite is true for the smaller font", info)
examine_text += span_info("[info]: [english_list(known_fishes)].")
+///How much the explosive_fishing_score impacts explosive fishing. The higher the value, the stronger the malus for repeated calls
+#define EXPLOSIVE_FISHING_MALUS_EXPONENT 0.55
+///How much the explosive_fishing_score is reduced each second.
+#define EXPLOSIVE_FISHING_RECOVERY_RATE 0.18
+
/datum/fish_source/proc/spawn_reward_from_explosion(atom/location, severity)
- if(!(fish_source_flags & FISH_SOURCE_FLAG_EXPLOSIVE_MALUS))
- explosive_spawn(isturf(location) ? location : location.drop_location(), severity)
- return
- if(isnull(exploded_turfs))
- exploded_turfs = list()
- addtimer(CALLBACK(src, PROC_REF(post_explosion_spawn)), 1) //run this the next tick.
- var/turf/turf = get_turf(location)
- var/peak_severity = max(exploded_turfs[turf], severity)
- exploded_turfs[turf] = peak_severity
-
-/datum/fish_source/proc/post_explosion_spawn()
- var/multiplier = 1/(length(exploded_turfs)**0.5)
- for(var/turf/turf as anything in exploded_turfs)
- explosive_spawn(turf, exploded_turfs[turf], multiplier)
- exploded_turfs = null
-
-/datum/fish_source/proc/explosive_spawn(atom/location, severity, multiplier = 1)
+ SIGNAL_HANDLER
+ var/multiplier = 1
+ if(fish_source_flags & FISH_SOURCE_FLAG_EXPLOSIVE_MALUS)
+ if(explosive_fishing_score <= 0)
+ explosive_fishing_score = 1
+ START_PROCESSING(SSprocessing, src)
+ else
+ explosive_fishing_score++
+ multiplier = explosive_fishing_score**-EXPLOSIVE_FISHING_MALUS_EXPONENT
for(var/i in 1 to (severity + 2))
if(!prob((100 + 100 * severity)/i * multiplier))
continue
- var/reward_loot = pick_weight(get_fish_table(from_explosion = TRUE))
- var/atom/movable/reward = simple_dispense_reward(reward_loot, location, location)
+ var/reward_loot = pick_weight(get_fish_table(location, from_explosion = TRUE))
+ var/atom/spawn_location = isturf(location) ? location : location.drop_location()
+ var/atom/movable/reward = simple_dispense_reward(reward_loot, spawn_location, location)
if(isnull(reward))
continue
if(isfish(reward))
@@ -504,6 +526,15 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
if(severity >= EXPLODE_DEVASTATE)
reward.ex_act(EXPLODE_LIGHT)
+/datum/fish_source/process(seconds_per_tick)
+ explosive_fishing_score -= EXPLOSIVE_FISHING_RECOVERY_RATE * seconds_per_tick
+ if(explosive_fishing_score <= 0)
+ STOP_PROCESSING(SSprocessing, src)
+ explosive_fishing_score = 0
+
+#undef EXPLOSIVE_FISHING_MALUS_EXPONENT
+#undef EXPLOSIVE_FISHING_RECOVERY_RATE
+
///Called when releasing a fish in a fishing spot with the TRAIT_CATCH_AND_RELEASE trait.
/datum/fish_source/proc/readd_fish(obj/item/fish/fish, mob/living/releaser)
var/is_morbid = HAS_MIND_TRAIT(releaser, TRAIT_MORBID)
diff --git a/code/modules/fishing/sources/source_types.dm b/code/modules/fishing/sources/source_types.dm
index eafdbe989991d..6f2a38d4d6146 100644
--- a/code/modules/fishing/sources/source_types.dm
+++ b/code/modules/fishing/sources/source_types.dm
@@ -27,8 +27,9 @@
fish_count_regen = list(
/obj/item/fish/clownfish/lube = 3 MINUTES,
/obj/item/fish/swordfish = 5 MINUTES,
+ /obj/structure/mystery_box/fishing = 32 MINUTES,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15
fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
/datum/fish_source/ocean/beach
@@ -47,7 +48,7 @@
/obj/item/fish/chasm_crab/ice = 2,
/obj/item/fish/boned = 1,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30
/datum/fish_source/river
catalog_description = "River water"
@@ -57,10 +58,10 @@
FISHING_DUD = 4,
/obj/item/fish/goldfish = 5,
/obj/item/fish/guppy = 5,
+ /obj/item/fish/plasmatetra = 4,
/obj/item/fish/perch = 4,
/obj/item/fish/angelfish = 4,
/obj/item/fish/catfish = 4,
- /obj/item/fish/perch = 5,
/obj/item/fish/slimefish = 2,
/obj/item/fish/sockeye_salmon = 1,
/obj/item/fish/arctic_char = 1,
@@ -73,7 +74,7 @@
fish_count_regen = list(
/obj/item/fish/pike = 4 MINUTES,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15
fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
/datum/fish_source/sand
@@ -86,7 +87,7 @@
/obj/item/fish/bumpy = 10,
/obj/item/coin/gold = 3,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30
fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
/datum/fish_source/cursed_spring
@@ -101,7 +102,7 @@
fish_counts = list(
/obj/item/fishing_rod/telescopic/master = 1,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 35
fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
/datum/fish_source/portal
@@ -112,6 +113,7 @@
/obj/item/fish/angelfish = 10,
/obj/item/fish/perch = 5,
/obj/item/fish/goldfish/three_eyes = 3,
+ /obj/item/fish/plasmatetra = 3,
)
catalog_description = "Aquarium dimension (Fishing portal generator)"
radial_state = "fish_tank"
@@ -153,7 +155,7 @@
/obj/item/stack/sheet/bone = 5,
)
catalog_description = "Chasm dimension (Fishing portal generator)"
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
radial_name = "Chasm"
overlay_state = "portal_chasm"
radial_state = "ground_hole"
@@ -181,7 +183,7 @@
/obj/item/fish/swordfish = 5 MINUTES,
)
catalog_description = "Ocean dimension (Fishing portal generator)"
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
radial_name = "Ocean"
overlay_state = "portal_ocean"
radial_state = "seaboat"
@@ -204,7 +206,7 @@
/obj/item/stack/ore/bluespace_crystal = 10,
)
catalog_description = "Hyperspace dimension (Fishing portal generator)"
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
radial_name = "Hyperspace"
overlay_state = "portal_hyperspace"
radial_state = "space_rocket"
@@ -230,7 +232,7 @@
)
catalog_description = "Syndicate dimension (Fishing portal generator)"
radial_name = "Syndicate"
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25
overlay_state = "portal_syndicate"
radial_state = "syndi_snake"
@@ -293,7 +295,7 @@
mover.long_jump_velocity_limit += rand(-100, 100)
///Cherry on top, fish caught from the randomizer portal also have (almost completely) random traits
-/datum/fish_source/portal/random/spawn_reward(reward_path, atom/movable/spawn_location, turf/fishing_spot)
+/datum/fish_source/portal/random/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot)
if(!ispath(reward_path, /obj/item/fish))
return ..()
@@ -323,7 +325,7 @@
/obj/item/fish/chasm_crab = 15,
/datum/chasm_detritus = 30,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15
/datum/fish_source/chasm/on_start_fishing(obj/item/fishing_rod/rod, mob/fisherman, atom/parent)
. = ..()
@@ -358,8 +360,10 @@
fish_counts = list(
/obj/structure/closet/crate/necropolis/tendril = 1
)
-
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10
+ fish_count_regen = list(
+ /obj/structure/closet/crate/necropolis/tendril = 27 MINUTES,
+ )
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
/datum/fish_source/lavaland/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent)
@@ -386,6 +390,10 @@
/obj/item/stack/sheet/mineral/adamantine = 3,
/obj/item/stack/sheet/mineral/runite = 2,
)
+ fish_count_regen = list(
+ /obj/item/stack/sheet/mineral/adamantine = 8 MINUTES,
+ /obj/item/stack/sheet/mineral/runite = 10 MINUTES,
+ )
overlay_state = "portal_plasma"
/datum/fish_source/moisture_trap
@@ -397,7 +405,7 @@
/obj/item/fish/ratfish = 10,
/obj/item/fish/slimefish = 4,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
/datum/fish_source/toilet
catalog_description = "Station toilets"
@@ -415,7 +423,7 @@
/obj/item/storage/wallet/money = 2,
/obj/item/survivalcapsule/fishing = 1,
)
- fishing_difficulty = FISHING_EASY_DIFFICULTY //For beginners
+ fishing_difficulty = FISHING_EASY_DIFFICULTY + 10
/datum/fish_source/holographic
catalog_description = "Holographic water"
@@ -428,7 +436,7 @@
/obj/item/fish/holo/checkered = 5,
/obj/item/fish/holo/halffish = 5,
)
- fishing_difficulty = FISHING_EASY_DIFFICULTY
+ fishing_difficulty = FISHING_EASY_DIFFICULTY + 10
fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD
/datum/fish_source/holographic/on_fishing_spot_init(datum/component/fishing_spot/spot)
@@ -485,7 +493,7 @@
fish_count_regen = list(
/obj/item/fish/mastodon = 8 MINUTES,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25
/datum/fish_source/hydro_tray
catalog_description = "Hydroponics trays"
@@ -508,7 +516,7 @@
/mob/living/basic/frog = 1,
/mob/living/basic/axolotl = 1,
)
- fishing_difficulty = FISHING_EASY_DIFFICULTY - 5
+ fishing_difficulty = FISHING_EASY_DIFFICULTY + 5
/datum/fish_source/hydro_tray/generate_wiki_contents(datum/autowiki/fish_sources/wiki)
var/list/data = list()
@@ -573,7 +581,7 @@
return
return ..()
-/datum/fish_source/hydro_tray/spawn_reward(reward_path, mob/fisherman, turf/fishing_spot)
+/datum/fish_source/hydro_tray/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot)
if(reward_path != FISHING_RANDOM_SEED)
var/mob/living/created_reward = ..()
if(istype(created_reward))
@@ -594,7 +602,7 @@
seeds_to_draw_from -= seed_path
var/picked_path = pick(seeds_to_draw_from)
- return new picked_path(get_turf(fishing_spot))
+ return new picked_path(spawn_location)
/datum/fish_source/carp_rift
catalog_description = "Space Dragon Rifts"
@@ -614,7 +622,10 @@
fish_counts = list(
/mob/living/basic/carp/mega = 2,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 18
+ fish_count_regen = list(
+ /mob/living/basic/carp/mega = 9 MINUTES,
+ )
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 28
/datum/fish_source/deepfryer
catalog_description = "Deep Fryers"
@@ -635,8 +646,98 @@
fish_count_regen = list(
/obj/item/fish/fryish = 2 MINUTES,
/obj/item/fish/fryish/fritterish = 6 MINUTES,
+ /obj/item/fish/fryish/nessie = 22 MINUTES,
+ )
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 23
+
+/datum/fish_source/surgery
+ catalog_description = "Surgery"
+ radial_state = "innards"
+ overlay_state = "portal_syndicate" //Didn't feel like spriting a new overlay. It's just all red anyway.
+ background = "background_lavaland" //Kinda red.
+ fish_table = list(FISHING_RANDOM_ORGAN = 10)
+ //This should get you below zero difficulty and skip the minigame phase, unless you're wearing something that counteracts this.
+ fishing_difficulty = -10
+ //The range for waiting is also a bit narrower, so it cannot take as few as 3 seconds or as many as 25 to snatch an organ.
+ wait_time_range = list(6 SECONDS, 12 SECONDS)
+
+/datum/fish_source/surgery/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot)
+ if(istype(fishing_spot, /obj/machinery/fishing_portal_generator))
+ var/obj/machinery/fishing_portal_generator/portal = fishing_spot
+ fishing_spot = portal.current_linked_atom
+ if(!iscarbon(fishing_spot))
+ var/random_type = pick(subtypesof(/obj/item/organ) - GLOB.prototype_organs)
+ return new random_type(spawn_location)
+
+ var/mob/living/carbon/carbon = fishing_spot
+ var/list/possible_organs = list()
+ for(var/datum/surgery/organ_manipulation/operation in carbon.surgeries)
+ var/datum/surgery_step/manipulate_organs/manip_step = GLOB.surgery_steps[operation.steps[operation.status]]
+ if(!istype(manip_step))
+ continue
+ for(var/obj/item/organ/organ in operation.operated_bodypart)
+ if(organ.organ_flags & ORGAN_UNREMOVABLE || !manip_step.can_use_organ(organ))
+ continue
+ possible_organs |= organ
+
+ if(!length(possible_organs))
+ return null
+ var/obj/item/organ/chosen = pick(possible_organs)
+ chosen.Remove(chosen.owner)
+ chosen.forceMove(spawn_location)
+ return chosen
+
+/datum/fish_source/surgery/generate_wiki_contents(datum/autowiki/fish_sources/wiki)
+ var/list/data = list()
+
+ data += LIST_VALUE_WRAP_LISTS(list(
+ FISH_SOURCE_AUTOWIKI_NAME = "Organs",
+ FISH_SOURCE_AUTOWIKI_DUD = "",
+ FISH_SOURCE_AUTOWIKI_WEIGHT = 100,
+ FISH_SOURCE_AUTOWIKI_NOTES = "A random organ from an ongoing organ manipulation surgery.",
+ ))
+
+ return data
+
+#define RANDOM_AQUARIUM_FISH "random_aquarium_fish"
+
+/datum/fish_source/aquarium
+ radial_state = "fish_tank"
+ fish_table = list(
+ FISHING_DUD = 10,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 13
+ fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD|FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG
+ fishing_difficulty = FISHING_EASY_DIFFICULTY + 5
+
+#undef RANDOM_AQUARIUM_FISH
+
+/datum/fish_source/aquarium/get_fish_table(atom/location, from_explosion = FALSE)
+ if(istype(location, /obj/machinery/fishing_portal_generator))
+ var/obj/machinery/fishing_portal_generator/portal = location
+ location = portal.current_linked_atom
+ var/list/table = list()
+ for(var/obj/item/fish/fish in location)
+ if(fish.status == FISH_DEAD) //dead fish cannot be caught
+ continue
+ table[fish] = 10
+ if(!length(table))
+ return fish_table
+ return table
+
+/datum/fish_source/aquarium/spawn_reward_from_explosion(atom/location, severity)
+ return //If the aquarium breaks, all fish are released anyway.
+
+/datum/fish_source/aquarium/generate_wiki_contents(datum/autowiki/fish_sources/wiki)
+ var/list/data = list()
+
+ data += LIST_VALUE_WRAP_LISTS(list(
+ FISH_SOURCE_AUTOWIKI_NAME = "Fish",
+ FISH_SOURCE_AUTOWIKI_DUD = "",
+ FISH_SOURCE_AUTOWIKI_WEIGHT = 100,
+ FISH_SOURCE_AUTOWIKI_NOTES = "Any fish currently inside the aquarium, be they alive or dead.",
+ ))
+
+ return data
/datum/fish_source/hot_spring
catalog_description = "Hot Springs"
@@ -656,7 +757,7 @@
fish_count_regen = list(
/obj/item/fish/sacabambaspis = 4 MINUTES,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30
fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
/datum/fish_source/tizira
@@ -671,5 +772,5 @@
/obj/item/fish/moonfish/dwarf = 2,
/obj/item/fish/moonfish = 2,
)
- fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20
fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
diff --git a/code/modules/food_and_drinks/machinery/coffeemaker.dm b/code/modules/food_and_drinks/machinery/coffeemaker.dm
index bb532b3162483..51280fd87d6d8 100644
--- a/code/modules/food_and_drinks/machinery/coffeemaker.dm
+++ b/code/modules/food_and_drinks/machinery/coffeemaker.dm
@@ -52,6 +52,7 @@
/obj/machinery/coffeemaker/Destroy()
QDEL_NULL(coffeepot)
QDEL_NULL(cartridge)
+ remove_shared_particles(/particles/smoke)
return ..()
/obj/machinery/coffeemaker/Exited(atom/movable/gone, direction)
@@ -127,7 +128,7 @@
. = ..()
if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
return
- if(!can_interact(user) || !user.can_perform_action(src, ALLOW_SILICON_REACH|FORBID_TELEKINESIS_REACH))
+ if(!can_interact(user) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH|SILENT_ADJACENCY))
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
if(brewing)
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
@@ -284,7 +285,7 @@
/obj/machinery/coffeemaker/ui_interact(mob/user) // The microwave Menu //I am reasonably certain that this is not a microwave //I am positively certain that this is not a microwave
. = ..()
- if(brewing || !user.can_perform_action(src, ALLOW_SILICON_REACH))
+ if(brewing || !user.can_perform_action(src, SILENT_ADJACENCY))
return
var/list/options = list()
@@ -324,7 +325,7 @@
choice = show_radial_menu(user, src, options, require_near = !HAS_SILICON_ACCESS(user))
// post choice verification
- if(brewing || (isAI(user) && machine_stat & NOPOWER) || !user.can_perform_action(src, ALLOW_SILICON_REACH))
+ if(brewing || (isAI(user) && machine_stat & NOPOWER) || !user.can_perform_action(src, SILENT_ADJACENCY))
return
switch(choice)
@@ -391,10 +392,12 @@
///Updates the smoke state to something else, setting particles if relevant
/obj/machinery/coffeemaker/proc/toggle_steam()
- QDEL_NULL(particles)
- if(brewing)
- particles = new /particles/smoke/steam/mild()
- particles.position = list(-6, 0, 0)
+ if(!brewing)
+ remove_shared_particles("smoke_coffeemaker")
+ return
+
+ var/obj/effect/abstract/shared_particle_holder/smoke_particles = add_shared_particles(/particles/smoke/steam/mild, "smoke_coffeemaker")
+ smoke_particles.particles.position = list(-6, 0, 0)
/obj/machinery/coffeemaker/proc/operate_for(time, silent = FALSE)
brewing = TRUE
@@ -705,10 +708,12 @@
update_appearance(UPDATE_OVERLAYS)
/obj/machinery/coffeemaker/impressa/toggle_steam()
- QDEL_NULL(particles)
- if(brewing)
- particles = new /particles/smoke/steam/mild()
- particles.position = list(-2, 1, 0)
+ if(!brewing)
+ remove_shared_particles("smoke_impressa")
+ return
+
+ var/obj/effect/abstract/shared_particle_holder/smoke_particles = add_shared_particles(/particles/smoke/steam/mild, "smoke_impressa")
+ smoke_particles.particles.position = list(-2, 1, 0)
/obj/machinery/coffeemaker/impressa/brew()
power_change()
diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm
index 313bc29d199dc..4dfab9fb9474e 100644
--- a/code/modules/food_and_drinks/machinery/deep_fryer.dm
+++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm
@@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
reagents.add_reagent(/datum/reagent/consumable/nutriment/fat/oil, 25)
fry_loop = new(src, FALSE)
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_cleaned))
- AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/deepfryer)
+ AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/deepfryer])
AddElement(/datum/element/fish_safe_storage) //Prevents fryish and fritterish from dying inside the deepfryer.
/obj/machinery/deepfryer/Destroy()
diff --git a/code/modules/food_and_drinks/machinery/gibber.dm b/code/modules/food_and_drinks/machinery/gibber.dm
index cd50f29ffe478..4703b9fae1d1b 100644
--- a/code/modules/food_and_drinks/machinery/gibber.dm
+++ b/code/modules/food_and_drinks/machinery/gibber.dm
@@ -182,7 +182,7 @@
var/typeofmeat = /obj/item/food/meat/slab/human
var/typeofskin
- var/obj/item/food/meat/slab/allmeat[meat_produced]
+ var/list/results = list()
var/obj/item/stack/sheet/animalhide/skin
var/list/datum/disease/diseases = mob_occupant.get_static_viruses()
@@ -201,22 +201,29 @@
if(isalien(C))
typeofskin = /obj/item/stack/sheet/animalhide/xeno
- var/occupant_volume
- if(occupant?.reagents)
- occupant_volume = occupant.reagents.total_volume
- for (var/i=1 to meat_produced)
+ for (var/i in 1 to meat_produced)
var/obj/item/food/meat/slab/newmeat = new typeofmeat
newmeat.name = "[sourcename] [newmeat.name]"
newmeat.set_custom_materials(list(GET_MATERIAL_REF(/datum/material/meat/mob_meat, occupant) = 4 * SHEET_MATERIAL_AMOUNT))
- if(istype(newmeat))
- newmeat.subjectname = sourcename
- newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, sourcenutriment / meat_produced) // Thehehe. Fat guys go first
- if(occupant_volume)
- occupant.reagents.trans_to(newmeat, occupant_volume / meat_produced, remove_blacklisted = TRUE)
- if(sourcejob)
- newmeat.subjectjob = sourcejob
+ if(!istype(newmeat))
+ continue
+ newmeat.subjectname = sourcename
+ if(sourcejob)
+ newmeat.subjectjob = sourcejob
+
+ results += newmeat
+
+ SEND_SIGNAL(occupant, COMSIG_LIVING_GIBBER_ACT, user, src, results)
+
+ var/reagents_in_produced = 0
+ for(var/obj/item/result as anything in results)
+ if(result.reagents)
+ reagents_in_produced++
+
+ for(var/obj/item/result as anything in results)
+ occupant.reagents.trans_to(result, occupant.reagents.total_volume / reagents_in_produced, remove_blacklisted = TRUE)
+ result.reagents?.add_reagent(/datum/reagent/consumable/nutriment/fat, sourcenutriment / reagents_in_produced) // Thehehe. Fat guys go first
- allmeat[i] = newmeat
if(typeofskin)
skin = new typeofskin
@@ -227,9 +234,9 @@
mob_occupant.ghostize()
set_occupant(null)
qdel(mob_occupant)
- addtimer(CALLBACK(src, PROC_REF(make_meat), skin, allmeat, meat_produced, gibtype, diseases), gibtime)
+ addtimer(CALLBACK(src, PROC_REF(make_meat), skin, results, meat_produced, gibtype, diseases), gibtime)
-/obj/machinery/gibber/proc/make_meat(obj/item/stack/sheet/animalhide/skin, list/obj/item/food/meat/slab/allmeat, meat_produced, gibtype, list/datum/disease/diseases)
+/obj/machinery/gibber/proc/make_meat(obj/item/stack/sheet/animalhide/skin, list/results, meat_produced, gibtype, list/datum/disease/diseases)
playsound(src.loc, 'sound/effects/splat.ogg', 50, TRUE)
operating = FALSE
if (!dirty && prob(50))
@@ -239,9 +246,9 @@
if(skin)
skin.forceMove(loc)
skin.throw_at(pick(nearby_turfs),meat_produced,3)
- for (var/i=1 to meat_produced)
- var/obj/item/meatslab = allmeat[i]
+ var/iteration = 1
+ for (var/obj/item/meatslab in results)
if(LAZYLEN(diseases))
var/list/datum/disease/diseases_to_add = list()
for(var/datum/disease/disease as anything in diseases)
@@ -254,11 +261,15 @@
meatslab.AddComponent(/datum/component/infective, diseases_to_add)
meatslab.forceMove(loc)
- meatslab.throw_at(pick(nearby_turfs),i,3)
- for (var/turfs=1 to meat_produced)
- var/turf/gibturf = pick(nearby_turfs)
- if (!gibturf.density && (src in view(gibturf)))
- new gibtype(gibturf, i, diseases)
+ meatslab.throw_at(pick(nearby_turfs), iteration, 3)
+
+ iteration++
+
+ for (var/i in 1 to meat_produced**2) //2 slabs: 4 giblets, 3 slabs: 9, etc.
+ var/turf/gibturf = pick(nearby_turfs)
+ if (!gibturf.density && (src in view(gibturf)))
+ new gibtype(gibturf, round(1 + i / meat_produced), diseases)
+
pixel_x = base_pixel_x //return to its spot after shaking
operating = FALSE
diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm
index ae6e3945c94b4..53725dad38577 100644
--- a/code/modules/food_and_drinks/machinery/microwave.dm
+++ b/code/modules/food_and_drinks/machinery/microwave.dm
@@ -113,7 +113,7 @@
/obj/machinery/microwave/Destroy()
QDEL_LIST(ingredients)
QDEL_NULL(soundloop)
- QDEL_NULL(particles)
+ remove_shared_particles(/particles/smoke)
if(!isnull(cell))
QDEL_NULL(cell)
return ..()
@@ -707,17 +707,14 @@
if(HAS_TRAIT(smeller, TRAIT_ANOSMIA))
cant_smell += smeller
visible_message(span_danger("You smell a burnt smell coming from [src]!"), ignored_mobs = cant_smell)
- particles = new /particles/smoke()
- addtimer(CALLBACK(src, PROC_REF(remove_smoke)), 10 SECONDS)
+ add_shared_particles(/particles/smoke)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, remove_shared_particles), /particles/smoke), 10 SECONDS)
Shake(duration = 1 SECONDS)
cycles--
use_energy(active_power_usage)
addtimer(CALLBACK(src, PROC_REF(cook_loop), type, cycles, wait, cooker), wait)
-/obj/machinery/microwave/proc/remove_smoke()
- QDEL_NULL(particles)
-
/obj/machinery/microwave/power_change()
. = ..()
if(cell_powered)
diff --git a/code/modules/food_and_drinks/machinery/oven.dm b/code/modules/food_and_drinks/machinery/oven.dm
index c997f34924145..e9af9338000da 100644
--- a/code/modules/food_and_drinks/machinery/oven.dm
+++ b/code/modules/food_and_drinks/machinery/oven.dm
@@ -31,6 +31,8 @@
var/datum/looping_sound/oven/oven_loop
///Current state of smoke coming from the oven
var/smoke_state = OVEN_SMOKE_STATE_NONE
+ ///Currently used particle type, if any
+ var/particle_type
/obj/machinery/oven/Initialize(mapload)
. = ..()
@@ -40,7 +42,8 @@
/obj/machinery/oven/Destroy()
QDEL_NULL(oven_loop)
- QDEL_NULL(particles)
+ if (particle_type)
+ remove_shared_particles(particle_type)
return ..()
/// Used to determine if the oven appears active and cooking, or offline.
@@ -210,16 +213,22 @@
/obj/machinery/oven/proc/set_smoke_state(new_state)
if(new_state == smoke_state)
return
+
smoke_state = new_state
+ if (particle_type)
+ remove_shared_particles(particle_type)
+ particle_type = null
- QDEL_NULL(particles)
switch(smoke_state)
if(OVEN_SMOKE_STATE_BAD)
- particles = new /particles/smoke()
+ particle_type = /particles/smoke
if(OVEN_SMOKE_STATE_NEUTRAL)
- particles = new /particles/smoke/steam()
+ particle_type = /particles/smoke/steam
if(OVEN_SMOKE_STATE_GOOD)
- particles = new /particles/smoke/steam/mild()
+ particle_type = /particles/smoke/steam/mild
+
+ if (particle_type)
+ add_shared_particles(particle_type)
/obj/machinery/oven/crowbar_act(mob/living/user, obj/item/tool)
return default_deconstruction_crowbar(tool, ignore_panel = TRUE)
diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm
index 0481d1c491092..afd566b7e479d 100644
--- a/code/modules/food_and_drinks/machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/machinery/smartfridge.dm
@@ -526,7 +526,7 @@
/obj/machinery/smartfridge/drying/proc/toggle_drying(forceoff, mob/user)
if(drying || forceoff)
drying = FALSE
- current_user = FALSE
+ current_user = null
update_use_power(IDLE_POWER_USE)
else
drying = TRUE
diff --git a/code/modules/food_and_drinks/machinery/stove_component.dm b/code/modules/food_and_drinks/machinery/stove_component.dm
index 76f52345c8c35..8db59dc2739d8 100644
--- a/code/modules/food_and_drinks/machinery/stove_component.dm
+++ b/code/modules/food_and_drinks/machinery/stove_component.dm
@@ -11,8 +11,6 @@
VAR_FINAL/on = FALSE
/// A reference to the current soup pot overtop
VAR_FINAL/obj/item/container
- /// A particle holder for the smoke that comes out of the soup while a container is cooking.
- VAR_FINAL/obj/effect/abstract/particle_holder/soup_smoke
/// Typepath of particles to use for the particle holder.
VAR_FINAL/particle_type = /particles/smoke/steam/mild
/// Ref to our looping sound played when cooking
@@ -60,11 +58,12 @@
real_parent.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1
/datum/component/stove/UnregisterFromParent()
+ var/obj/machinery/real_parent = parent
if(!QDELING(parent))
- var/obj/machinery/real_parent = parent
container.forceMove(real_parent.drop_location())
- QDEL_NULL(soup_smoke)
+ if (particle_type)
+ real_parent.remove_shared_particles("[particle_type]_stove_[container_x]")
UnregisterSignal(parent, list(
COMSIG_ATOM_ATTACK_HAND_SECONDARY,
@@ -248,6 +247,7 @@
SIGNAL_HANDLER
var/existing_temp = container?.reagents.chem_temp || 0
+ var/old_type = particle_type
if(existing_temp >= SOUP_BURN_TEMP)
particle_type = /particles/smoke/steam/bad
else if(existing_temp >= WATER_BOILING_POINT)
@@ -255,20 +255,23 @@
else
particle_type = null
- update_smoke()
+ update_smoke(old_type)
+
+/datum/component/stove/proc/update_smoke(old_type = null)
+ var/obj/obj_parent = parent
+
+ if (old_type)
+ obj_parent.remove_shared_particles("[old_type]_stove_[container_x]")
+
+ if(!on || !container?.reagents.total_volume)
+ soup_sound?.stop()
+ if (!isnull(particle_type))
+ obj_parent.remove_shared_particles("[particle_type]_stove_[container_x]")
+ return
-/datum/component/stove/proc/update_smoke()
- if(on && container?.reagents.total_volume > 0)
- soup_sound.start()
- // Don't override existing particles, wasteful
- if(isnull(soup_smoke) || soup_smoke.particles.type != particle_type)
- QDEL_NULL(soup_smoke)
- if(isnull(particle_type))
- return
- // this gets badly murdered by sidemap
- soup_smoke = new(parent, particle_type)
- soup_smoke.set_particle_position(container_x, round(ICON_SIZE_Y * 0.66), 0)
+ soup_sound.start()
+ if(isnull(particle_type))
return
+ var/obj/effect/abstract/shared_particle_holder/soup_smoke = obj_parent.add_shared_particles(particle_type, "[particle_type]_stove_[container_x]")
+ soup_smoke.particles.position = list(container_x, round(ICON_SIZE_Y * 0.66), 0)
- QDEL_NULL(soup_smoke)
- soup_sound?.stop()
diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm
index e4ef45bda7fde..e8456d880ed87 100644
--- a/code/modules/food_and_drinks/recipes/food_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm
@@ -5,7 +5,7 @@
/datum/crafting_recipe/food/on_craft_completion(mob/user, atom/result)
SHOULD_CALL_PARENT(TRUE)
. = ..()
- if(istype(result) && !isnull(user.mind))
+ if(istype(result) && istype(user) && !isnull(user.mind))
ADD_TRAIT(result, TRAIT_FOOD_CHEF_MADE, REF(user.mind))
/datum/crafting_recipe/food/New()
@@ -40,7 +40,7 @@
var/resulting_reagent_purity
/datum/chemical_reaction/food/pre_reaction_other_checks(datum/reagents/holder)
- resulting_reagent_purity = holder.get_average_purity(/datum/reagent/consumable)
+ resulting_reagent_purity = holder.get_average_purity()
return TRUE
/datum/chemical_reaction/food/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
diff --git a/code/modules/food_and_drinks/restaurant/_venue.dm b/code/modules/food_and_drinks/restaurant/_venue.dm
index b37128a008765..7425b7b355573 100644
--- a/code/modules/food_and_drinks/restaurant/_venue.dm
+++ b/code/modules/food_and_drinks/restaurant/_venue.dm
@@ -271,10 +271,10 @@
/obj/structure/holosign/robot_seat/attack_holosign(mob/living/user, list/modifiers)
return
-/obj/structure/holosign/robot_seat/attacked_by(obj/item/I, mob/living/user)
- . = ..()
- if(I.type == projector?.type && !linked_venue.linked_seats[src])
+/obj/structure/holosign/robot_seat/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if(tool.type == projector?.type && !linked_venue.linked_seats[src])
qdel(src)
+ return ITEM_INTERACT_SUCCESS
/obj/structure/holosign/robot_seat/Destroy()
linked_venue.linked_seats -= src
diff --git a/code/modules/forensics/_forensics.dm b/code/modules/forensics/_forensics.dm
index 8058a32e7fab4..450521e6c62de 100644
--- a/code/modules/forensics/_forensics.dm
+++ b/code/modules/forensics/_forensics.dm
@@ -112,7 +112,7 @@
if(!iseyemob(suspect))
return
if(isaicamera(suspect))
- var/mob/eye/ai_eye/ai_camera = suspect
+ var/mob/eye/camera/ai/ai_camera = suspect
if(!ai_camera.ai)
return
suspect = ai_camera.ai
@@ -193,7 +193,7 @@
if(!iseyemob(suspect))
return
if(isaicamera(suspect))
- var/mob/eye/ai_eye/ai_camera = suspect
+ var/mob/eye/camera/ai/ai_camera = suspect
if(!ai_camera.ai)
return
suspect = ai_camera.ai
diff --git a/code/modules/hallucination/delusions.dm b/code/modules/hallucination/delusions.dm
index 0760d05ff46c6..da12f117803d1 100644
--- a/code/modules/hallucination/delusions.dm
+++ b/code/modules/hallucination/delusions.dm
@@ -230,6 +230,22 @@
return ..()
+/datum/hallucination/delusion/preset/seccies
+ dynamic_delusion = TRUE
+ random_hallucination_weight = 0
+ delusion_name = "Security"
+ affects_others = TRUE
+ affects_us = FALSE
+
+/datum/hallucination/delusion/preset/seccies/make_delusion_image(mob/over_who)
+ delusion_appearance = get_dynamic_human_appearance(
+ outfit_path = /datum/outfit/job/security,
+ bloody_slots = prob(5) ? ALL : NONE,
+ r_hand = prob(15) ? /obj/item/melee/baton/security/loaded : null,
+ l_hand = prob(15) ? /obj/item/melee/baton/security/loaded : null,
+ )
+ return ..()
+
/// Hallucination used by the nightmare vision goggles to turn everyone except you into mares
/datum/hallucination/delusion/preset/mare
delusion_icon_file = 'icons/obj/clothing/masks.dmi'
diff --git a/code/modules/hallucination/station_message.dm b/code/modules/hallucination/station_message.dm
index 9441cdeb42a5a..55b44d18463ed 100644
--- a/code/modules/hallucination/station_message.dm
+++ b/code/modules/hallucination/station_message.dm
@@ -112,7 +112,7 @@
/datum/hallucination/station_message/supermatter_delam/start()
SEND_SOUND(hallucinator, 'sound/effects/magic/charge.ogg')
- to_chat(hallucinator, span_boldannounce("You feel reality distort for a moment..."))
+ to_chat(hallucinator, span_bolddanger("You feel reality distort for a moment..."))
return ..()
/datum/hallucination/station_message/clock_cult_ark
diff --git a/code/modules/hallucination/stray_bullet.dm b/code/modules/hallucination/stray_bullet.dm
index 13ace2933350a..b670cd869e9b2 100644
--- a/code/modules/hallucination/stray_bullet.dm
+++ b/code/modules/hallucination/stray_bullet.dm
@@ -16,7 +16,7 @@
var/obj/projectile/hallucination/fake_projectile = new fake_type(start, src)
- fake_projectile.preparePixelProjectile(hallucinator, start)
+ fake_projectile.aim_projectile(hallucinator, start)
fake_projectile.fire()
QDEL_IN(src, 10 SECONDS) // Should clean up the projectile if it somehow gets stuck.
@@ -32,7 +32,6 @@
ricochets_max = 0
ricochet_chance = 0
damage = 0
- projectile_type = /obj/projectile/hallucination
log_override = TRUE
do_not_log = TRUE
/// Our parent hallucination that's created us
@@ -101,7 +100,6 @@
spawn_hit(target, TRUE)
qdel(src)
- return TRUE
/// Called when a mob is hit by the fake projectile
/obj/projectile/hallucination/proc/on_mob_hit(mob/living/hit_mob)
@@ -214,7 +212,7 @@
ricochets_max = 50
ricochet_chance = 80
- reflectable = REFLECT_NORMAL // No idea if this works
+ reflectable = TRUE
/obj/projectile/hallucination/laser/apply_effect_to_hallucinator(mob/living/afflicted)
afflicted.adjustStaminaLoss(20)
@@ -260,7 +258,7 @@
ricochets_max = 50
ricochet_chance = 80
- reflectable = REFLECT_NORMAL // No idea if this works
+ reflectable = TRUE
/obj/projectile/hallucination/disabler/apply_effect_to_hallucinator(mob/living/afflicted)
afflicted.adjustStaminaLoss(30)
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index 1107c8c25793a..6d9c380112b7c 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -341,6 +341,10 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf
var/obj/item/clothing/under/holo_clothing = holo_atom
holo_clothing.dump_attachments()
+ if(istype(holo_atom, /obj/item/organ))
+ var/obj/item/organ/holo_organ = holo_atom
+ if(holo_organ.owner) // a mob has the holo organ inside them... oh dear
+ to_chat(holo_organ.owner, span_warning("\The [holo_organ] inside of you fades away!"))
if(!silent)
visible_message(span_notice("[holo_atom] fades away!"))
diff --git a/code/modules/hydroponics/beekeeping/bee_smoker.dm b/code/modules/hydroponics/beekeeping/bee_smoker.dm
index 3daa75f89e63a..d04c72adfd669 100644
--- a/code/modules/hydroponics/beekeeping/bee_smoker.dm
+++ b/code/modules/hydroponics/beekeeping/bee_smoker.dm
@@ -25,6 +25,10 @@
. = ..()
beesmoke_loop = new(src)
+/obj/item/bee_smoker/Destroy(force)
+ remove_shared_particles(/particles/smoke/bee_smoke)
+ return ..()
+
/obj/item/bee_smoker/attack_self(mob/user)
. = ..()
if(.)
@@ -100,13 +104,13 @@
if(!activated)
beesmoke_loop.stop()
- QDEL_NULL(particles)
+ remove_shared_particles(/particles/smoke/bee_smoke)
STOP_PROCESSING(SSobj, src)
return
beesmoke_loop.start()
START_PROCESSING(SSobj, src)
- particles = new /particles/smoke/bee_smoke
+ add_shared_particles(/particles/smoke/bee_smoke)
/particles/smoke/bee_smoke
lifespan = 0.4 SECONDS
diff --git a/code/modules/hydroponics/grown/gatfruit.dm b/code/modules/hydroponics/grown/gatfruit.dm
index c6de17d6eb684..8772b06c57195 100644
--- a/code/modules/hydroponics/grown/gatfruit.dm
+++ b/code/modules/hydroponics/grown/gatfruit.dm
@@ -2,7 +2,7 @@
// Gatfruit
/obj/item/seeds/gatfruit
name = "gatfruit seed pack"
- desc = "These seeds grow into .357 revolvers."
+ desc = "These seeds grow into pea-shooting revolvers."
icon_state = "seed-gatfruit"
species = "gatfruit"
plantname = "Gatfruit Tree"
@@ -17,15 +17,31 @@
growthstages = 2
rarity = 60 // Obtainable only with xenobio+superluck.
growing_icon = 'icons/obj/service/hydroponics/growing_fruits.dmi'
- reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05)
+ reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05, /datum/reagent/toxin/gatfruit = 0.3)
/obj/item/food/grown/shell/gatfruit
seed = /obj/item/seeds/gatfruit
name = "gatfruit"
- desc = "It smells like burning."
+ desc = "It smells like burning gunpowder."
icon_state = "gatfruit"
- trash_type = /obj/item/gun/ballistic/revolver
+ trash_type = /obj/item/gun/ballistic/revolver/peashooter
bite_consumption_mod = 2
foodtypes = FRUIT
tastes = list("gunpowder" = 1)
wine_power = 90 //It burns going down, too.
+
+/obj/item/food/grown/shell/gatfruit/Initialize(mapload, obj/item/seeds/new_seed)
+ . = ..()
+ reagents.flags &= ~INJECTABLE //id rather not have this be filled with initropidril without effort
+
+/obj/item/food/grown/shell/gatfruit/generate_trash(atom/location)
+ //if you set this to anything but the revolver i will find you... and... downvote your pr...
+ var/obj/item/gun/ballistic/revolver/peashooter/gun = new trash_type(location || drop_location())
+ var/potency_percentage = CLAMP01(seed.potency / 100)
+ var/amount_to_trans = reagents.total_volume / gun.magazine.max_ammo
+ for(var/obj/item/ammo_casing/pea/casing as anything in gun.magazine.ammo_list())
+ casing.damage = floor(max(5, LERP(5, casing.max_damage, potency_percentage)))
+ if(reagents.total_volume)
+ reagents.trans_to(casing, amount_to_trans)
+ return gun
+
diff --git a/code/modules/hydroponics/grown/weeds/nettle.dm b/code/modules/hydroponics/grown/weeds/nettle.dm
index dec1e8b119e2b..2420ba8942cd6 100644
--- a/code/modules/hydroponics/grown/weeds/nettle.dm
+++ b/code/modules/hydroponics/grown/weeds/nettle.dm
@@ -58,7 +58,7 @@
/obj/item/food/grown/nettle/death
seed = /obj/item/seeds/nettle/death
name = "\improper deathnettle"
- desc = "The glowing nettle incites rage in you just from looking at it!"
+ desc = "The glowing nettle incites rage in you just from looking at it!"
icon_state = "deathnettle"
inhand_icon_state = "deathnettle"
bite_consumption_mod = 4 // I guess if you really wanted to
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 53ffae4aca022..c8a3e10b8e931 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -202,6 +202,7 @@
/obj/machinery/hydroponics/Destroy()
if(myseed)
QDEL_NULL(myseed)
+ remove_shared_particles(/particles/pollen)
return ..()
/obj/machinery/hydroponics/Exited(atom/movable/gone)
@@ -292,7 +293,7 @@
mutate()
return BULLET_ACT_HIT
if(istype(proj, /obj/projectile/energy/flora/yield))
- return myseed.bullet_act(proj)
+ return myseed.projectile_hit(proj)
if(istype(proj, /obj/projectile/energy/flora/evolution))
if(myseed)
if(LAZYLEN(myseed.mutatelist))
@@ -536,7 +537,7 @@
age = 0
update_appearance()
if(isnull(myseed))
- particles = null
+ remove_shared_particles(/particles/pollen)
/*
* Setter proc to set a tray to a new self_sustaining state and update all values associated with it.
@@ -798,12 +799,11 @@
T.myseed.set_instability(round((T.myseed.instability+(1/10)*(myseed.instability-T.myseed.instability))))
T.myseed.set_yield(round((T.myseed.yield+(1/2)*(myseed.yield-T.myseed.yield))))
any_adjacent = TRUE
- if(isnull(particles))
- particles = new /particles/pollen()
+ add_shared_particles(/particles/pollen)
if(myseed.instability >= 20 && prob(70) && length(T.myseed.reagents_add))
myseed.perform_reagent_pollination(T.myseed)
if(!any_adjacent)
- particles = null
+ remove_shared_particles(/particles/pollen)
/**
* Bee pollinate proc.
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 4589a3c4312b5..22434788e999f 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -50,7 +50,7 @@
var/list/genes = list()
/// A list of reagents to add to product.
var/list/reagents_add
- // Format: "reagent_id" = potency multiplier
+ // Format: /datum/reagent/type = potency multiplier
// Stronger reagents must always come first to avoid being displaced by weaker ones.
// Total amount of any reagent in plant is calculated by formula: max(round(potency * multiplier), 1)
///If the chance below passes, then this many weeds sprout during growth
@@ -280,7 +280,7 @@
//Handles the juicing trait, swaps nutriment and vitamins for that species various juices if they exist. Mutually exclusive with distilling.
if(get_gene(/datum/plant_gene/trait/juicing) && grown_edible.juice_typepath)
- grown_edible.juice()
+ grown_edible.juice(juicer = FALSE) //we pass FALSE & not null because Byond default args will subtitute it with the default value
else if(get_gene(/datum/plant_gene/trait/brewing))
grown_edible.ferment()
diff --git a/code/modules/hydroponics/unique_plant_genes.dm b/code/modules/hydroponics/unique_plant_genes.dm
index eef79ded735c5..567a8c09e61ad 100644
--- a/code/modules/hydroponics/unique_plant_genes.dm
+++ b/code/modules/hydroponics/unique_plant_genes.dm
@@ -200,8 +200,7 @@
to_chat(user, span_danger("[our_plant]'s thorns prick your hand. Ouch."))
our_plant.investigate_log("rose-pricked [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
- var/obj/item/bodypart/affecting = user.get_active_hand()
- affecting?.receive_damage(2)
+ user.apply_damage(2, BRUTE, user.get_active_hand())
/// Novaflower's hand burn on backfire
/datum/plant_gene/trait/backfire/novaflower_heat
@@ -212,8 +211,7 @@
/datum/plant_gene/trait/backfire/novaflower_heat/backfire_effect(obj/item/our_plant, mob/living/carbon/user)
to_chat(user, span_danger("[our_plant] singes your bare hand!"))
our_plant.investigate_log("self-burned [key_name(user)] for [our_plant.force] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
- var/obj/item/bodypart/affecting = user.get_active_hand()
- return affecting?.receive_damage(0, our_plant.force, wound_bonus = CANT_WOUND)
+ user.apply_damage(our_plant.force, our_plant.damtype, user.get_active_hand(), wound_bonus = CANT_WOUND)
/// Normal Nettle hannd burn on backfire
/datum/plant_gene/trait/backfire/nettle_burn
@@ -223,8 +221,7 @@
/datum/plant_gene/trait/backfire/nettle_burn/backfire_effect(obj/item/our_plant, mob/living/carbon/user)
to_chat(user, span_danger("[our_plant] burns your bare hand!"))
our_plant.investigate_log("self-burned [key_name(user)] for [our_plant.force] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
- var/obj/item/bodypart/affecting = user.get_active_hand()
- return affecting?.receive_damage(0, our_plant.force, wound_bonus = CANT_WOUND)
+ user.apply_damage(our_plant.force, our_plant.damtype, user.get_active_hand(), wound_bonus = CANT_WOUND)
/// Deathnettle hand burn + stun on backfire
/datum/plant_gene/trait/backfire/nettle_burn/death
diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm
index b31574bec33e3..e9b2e832f92b5 100644
--- a/code/modules/jobs/access.dm
+++ b/code/modules/jobs/access.dm
@@ -9,11 +9,6 @@
return TRUE
if(result_bitflags & COMPONENT_OBJ_DISALLOW) // override all other checks
return FALSE
- if(!isnull(accessor) && HAS_TRAIT(accessor, TRAIT_ALWAYS_NO_ACCESS))
- return FALSE
- //check if it doesn't require any access at all
- if(check_access(null))
- return TRUE
if(isnull(accessor)) //likely a TK user.
return FALSE
if(isAdminGhostAI(accessor))
@@ -25,6 +20,9 @@
return TRUE
if(attempted_access & ACCESS_DISALLOWED)
return FALSE
+ //check if it doesn't require any access at all
+ if(check_access(null))
+ return TRUE
if(HAS_SILICON_ACCESS(accessor))
if(ispAI(accessor))
return FALSE
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
index d2f6f61251dd2..ce4a30efa9299 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
@@ -9,24 +9,18 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and
name = "sinister shard"
desc = "This shard seems to be directly linked to some sinister entity. It might be your god! It also gives you a really horrible rash when you hold onto it for too long."
items_to_create = list(/obj/item/vorpalscythe)
-
-/obj/item/organ/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags)
- . = ..()
- if(receiver.mind)
- ADD_TRAIT(receiver.mind, TRAIT_MORBID, ORGAN_TRAIT)
+ organ_traits = list(TRAIT_MORBID)
/obj/item/organ/cyberimp/arm/shard/scythe/Retract()
var/obj/item/vorpalscythe/scythe = active_item
if(!scythe)
return FALSE
-
- var/obj/item/bodypart/part = hand
- if(isnull(part) || scythe.empowerment >= SCYTHE_SATED)
+ if(scythe.empowerment >= SCYTHE_SATED)
return ..()
to_chat(owner, span_userdanger("[scythe] tears into you for your unworthy display of arrogance!"))
playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50, TRUE)
- part.receive_damage(brute = 25, wound_bonus = 10, sharpness = SHARP_EDGED)
+ owner.apply_damage(25, BRUTE, hand, wound_bonus = 10, sharpness = SHARP_EDGED)
return ..()
/obj/item/vorpalscythe
diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm
index 1d770bd2e9455..13a3496c609d3 100644
--- a/code/modules/jobs/job_types/janitor.dm
+++ b/code/modules/jobs/job_types/janitor.dm
@@ -37,10 +37,8 @@
jobtype = /datum/job/janitor
id_trim = /datum/id_trim/job/janitor
- uniform = /obj/item/clothing/under/rank/civilian/janitor/doppler
- suit = /obj/item/clothing/suit/apron/janitor_cloak
+ uniform = /obj/item/clothing/under/rank/civilian/janitor
belt = /obj/item/modular_computer/pda/janitor
- gloves = /obj/item/clothing/gloves/botanic_leather/janitor
ears = /obj/item/radio/headset/headset_srv
skillchips = list(/obj/item/skillchip/job/janitor)
backpack_contents = list(/obj/item/access_key)
diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm
index 9b2dc91137cd5..a84d4e0e73765 100644
--- a/code/modules/jobs/job_types/security_officer.dm
+++ b/code/modules/jobs/job_types/security_officer.dm
@@ -83,7 +83,7 @@ GLOBAL_LIST_EMPTY(security_officer_distribution)
var/ears = null
var/accessory = null
- var/list/dep_trim = null
+ var/datum/id_trim/dep_trim = null
var/destination = null
switch(department)
diff --git a/code/modules/language/_language.dm b/code/modules/language/_language.dm
index 595b591a0dd90..1177af8346770 100644
--- a/code/modules/language/_language.dm
+++ b/code/modules/language/_language.dm
@@ -120,7 +120,7 @@
// Add it to cache, cutting old entries if the list is too long
scramble_cache[input] = scrambled_text
if(scramble_cache.len > SCRAMBLE_CACHE_LEN)
- scramble_cache.Cut(1, scramble_cache.len-SCRAMBLE_CACHE_LEN-1)
+ scramble_cache.Cut(1, 2)
/datum/language/proc/scramble(input)
diff --git a/code/modules/language/_language_manuals.dm b/code/modules/language/_language_manuals.dm
index 7a4298a06b150..507d663ef8696 100644
--- a/code/modules/language/_language_manuals.dm
+++ b/code/modules/language/_language_manuals.dm
@@ -16,7 +16,7 @@
to_chat(user, span_boldwarning("You start skimming through [src], but you already know [initial(language.name)]."))
return
- to_chat(user, span_boldannounce("You start skimming through [src], and [flavour_text]."))
+ to_chat(user, span_bolddanger("You start skimming through [src], and [flavour_text]."))
user.grant_language(language)
user.remove_blocked_language(language, source=LANGUAGE_ALL)
diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm
index 99c28b76ff244..4c31092199dbe 100644
--- a/code/modules/library/bibles.dm
+++ b/code/modules/library/bibles.dm
@@ -367,8 +367,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
uses -= 1
to_chat(user, span_userdanger("You try to open the book AND IT BITES YOU!"))
playsound(src.loc, 'sound/effects/snap.ogg', 50, TRUE)
- var/active_hand_zone = (!(user.active_hand_index % RIGHT_HANDS) ? BODY_ZONE_R_ARM : BODY_ZONE_L_ARM)
- user.apply_damage(5, BRUTE, active_hand_zone, attacking_item = src)
+ user.apply_damage(5, BRUTE, user.get_active_hand(), attacking_item = src)
to_chat(user, span_notice("Your name appears on the inside cover, in blood."))
owner_name = user.real_name
diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm
index 5ca3f784ecbec..e4fce399a760d 100644
--- a/code/modules/library/skill_learning/skillchip.dm
+++ b/code/modules/library/skill_learning/skillchip.dm
@@ -97,25 +97,28 @@
* Arguments:
* * silent - Boolean. Whether or not an activation message should be shown to the user.
* * force - Boolean. Whether or not to just force de-activation if it would be prevented for any reason.
+ * * brain_owner - the owner var of the brain is set to null on organ/on_mob_remove(), so we need this if owner is null.
*/
-/obj/item/skillchip/proc/try_deactivate_skillchip(silent = FALSE, force = FALSE)
+/obj/item/skillchip/proc/try_deactivate_skillchip(silent = FALSE, force = FALSE, mob/living/brain_owner)
if(!active)
return "Skillchip is not active."
// Should not happen. Holding brain is destroyed and the chip hasn't had its state set appropriately.
if(!holding_brain)
- stack_trace("Skillchip's owner is null or qdeleted brain.")
+ stack_trace("Skillchip doesn't have a holding brain.")
return "Skillchip cannot detect viable brain."
+ if(!brain_owner)
+ brain_owner = holding_brain.owner
// Also should not happen. We're somehow deactivating skillchips in a bodyless brain.
- if(QDELETED(holding_brain.owner))
+ if(QDELETED(brain_owner))
active = FALSE
stack_trace("Skillchip's brain has no owner, owner is null or owner qdeleted.")
return "Skillchip cannot detect viable body."
// We have a holding brain, the holding brain has an owner. If we're forcing this, do it hard and fast.
if(force)
- on_deactivate(holding_brain.owner, silent)
+ on_deactivate(brain_owner, silent)
return
// Is the chip still experiencing a cooldown period?
@@ -123,7 +126,7 @@
return "Skillchip is still recharging for [COOLDOWN_TIMELEFT(src, chip_cooldown) * 0.1]s"
// We're good to go. Deactive this chip.
- on_deactivate(holding_brain.owner, silent)
+ on_deactivate(brain_owner, silent)
/**
* Called when a skillchip is inserted in a user's brain.
@@ -132,10 +135,12 @@
* * owner_brain - The brain that this skillchip was implanted in to.
*/
/obj/item/skillchip/proc/on_implant(obj/item/organ/brain/owner_brain)
+ SHOULD_CALL_PARENT(TRUE)
if(holding_brain)
CRASH("Skillchip is trying to be implanted into [owner_brain], but it's already implanted in [holding_brain]")
holding_brain = owner_brain
+ SEND_SIGNAL(src, COMSIG_SKILLCHIP_IMPLANTED, holding_brain)
/**
* Called when a skillchip is activated.
@@ -172,7 +177,7 @@
try_deactivate_skillchip(silent, TRUE)
COOLDOWN_RESET(src, chip_cooldown)
-
+ SEND_SIGNAL(src, COMSIG_SKILLCHIP_REMOVED, holding_brain)
holding_brain = null
/**
diff --git a/code/modules/loadout/categories/heads.dm b/code/modules/loadout/categories/heads.dm
index ad23f0b2dfb7b..69ef68cfff193 100644
--- a/code/modules/loadout/categories/heads.dm
+++ b/code/modules/loadout/categories/heads.dm
@@ -66,7 +66,7 @@
/datum/loadout_item/head/white_cap
name = "Cap (White)"
- item_path = /obj/item/clothing/head/soft
+ item_path = /obj/item/clothing/head/soft/mime
/datum/loadout_item/head/yellow_cap
name = "Cap (Yellow)"
@@ -147,7 +147,7 @@
/datum/loadout_item/head/geranium
name = "Geranium"
item_path = /obj/item/food/grown/poppy/geranium
-
+
/datum/loadout_item/head/harebell
name = "Harebell"
item_path = /obj/item/food/grown/harebell
diff --git a/code/modules/lost_crew/damages/projectile.dm b/code/modules/lost_crew/damages/projectile.dm
index 121304ac9b5c7..64541cf1eaf61 100644
--- a/code/modules/lost_crew/damages/projectile.dm
+++ b/code/modules/lost_crew/damages/projectile.dm
@@ -13,7 +13,7 @@
var/hits = ((max_hits - min_hits) * severity + min_hits)
for(var/i in 1 to hits)
- body.bullet_act(projectile, def_zone = pick(GLOB.all_body_zones), piercing_hit = TRUE)
+ body.projectile_hit(projectile, def_zone = pick(GLOB.all_body_zones), piercing_hit = TRUE)
/datum/corpse_damage/cause_of_death/projectile/laser
projectile = /obj/projectile/beam/laser
diff --git a/code/modules/lost_crew/recovered_crew.dm b/code/modules/lost_crew/recovered_crew.dm
index 65c6a3715fb67..2d5181a0d4e41 100644
--- a/code/modules/lost_crew/recovered_crew.dm
+++ b/code/modules/lost_crew/recovered_crew.dm
@@ -7,3 +7,4 @@
show_to_ghosts = FALSE
silent = TRUE
block_midrounds = FALSE
+ show_in_roundend = FALSE
diff --git a/code/modules/mafia/abilities/investigative/reveal.dm b/code/modules/mafia/abilities/investigative/reveal.dm
index 5e38d3c9fafa2..241610171569a 100644
--- a/code/modules/mafia/abilities/investigative/reveal.dm
+++ b/code/modules/mafia/abilities/investigative/reveal.dm
@@ -4,11 +4,11 @@
* During the night, revealing someone will announce their role when day comes.
* This is one time use, we'll delete ourselves once done.
*/
-/datum/mafia_ability/reaveal_role
+/datum/mafia_ability/reveal_role
name = "Reveal"
ability_action = "psychologically evaluate"
-/datum/mafia_ability/reaveal_role/perform_action_target(datum/mafia_controller/game, datum/mafia_role/day_target)
+/datum/mafia_ability/reveal_role/perform_action_target(datum/mafia_controller/game, datum/mafia_role/day_target)
. = ..()
if(!.)
return FALSE
@@ -17,7 +17,7 @@
target_role.reveal_role(game, verbose = TRUE)
return TRUE
-/datum/mafia_ability/vest/clean_action_refs(datum/mafia_controller/game)
+/datum/mafia_ability/reveal_role/clean_action_refs(datum/mafia_controller/game)
if(using_ability)
host_role.role_unique_actions -= src
qdel(src)
diff --git a/code/modules/mafia/roles/town/town_investigative.dm b/code/modules/mafia/roles/town/town_investigative.dm
index a09cff3acd28b..76b81eab3bd1b 100644
--- a/code/modules/mafia/roles/town/town_investigative.dm
+++ b/code/modules/mafia/roles/town/town_investigative.dm
@@ -20,7 +20,7 @@
hud_icon = "hudpsychologist"
revealed_icon = "psychologist"
- role_unique_actions = list(/datum/mafia_ability/reaveal_role)
+ role_unique_actions = list(/datum/mafia_ability/reveal_role)
/datum/mafia_role/chaplain
name = "Chaplain"
diff --git a/code/modules/manufactorio/_manufacturing.dm b/code/modules/manufactorio/_manufacturing.dm
index 02cc47999d50c..4b64d541fd2e7 100644
--- a/code/modules/manufactorio/_manufacturing.dm
+++ b/code/modules/manufactorio/_manufacturing.dm
@@ -1,10 +1,6 @@
-#define MANUFACTURING_FAIL_FULL -1
#define MANUFACTURING_FAIL 0
#define MANUFACTURING_SUCCESS 1
-#define POCKET_INPUT "Input"
-#define POCKET_OUTPUT "Output"
-
#define MANUFACTURING_TURF_LAG_LIMIT 10 // max items on a turf before we consider it full
/obj/machinery/power/manufacturing
@@ -108,8 +104,8 @@
return manufactury.receive_resource(sending, src, isturf(what_or_dir) ? get_dir(src, what_or_dir) : what_or_dir)
if(next_turf.is_blocked_turf(exclude_mobs = TRUE, source_atom = sending) && !ischasm(next_turf))
return MANUFACTURING_FAIL
- if(length(next_turf.contents) >= MANUFACTURING_TURF_LAG_LIMIT)
- return MANUFACTURING_FAIL_FULL
+ if(length(get_overfloor_objects(next_turf)) >= MANUFACTURING_TURF_LAG_LIMIT)
+ return MANUFACTURING_FAIL
if(isnull(sending))
return MANUFACTURING_SUCCESS // for the sake of being used as a check
if(isnull(sending.loc) || !sending.Move(next_turf, get_dir(src, next_turf)))
@@ -132,3 +128,11 @@
return
return stack.merge(merging_into)
+/obj/machinery/power/manufacturing/proc/get_overfloor_objects(turf/target)
+ . = list()
+ if(isnull(target))
+ target = get_turf(src)
+ for(var/atom/movable/thing as anything in target.contents)
+ if(thing == src || isliving(thing) || iseffect(thing) || thing.invisibility >= INVISIBILITY_ABSTRACT || HAS_TRAIT(thing, TRAIT_UNDERFLOOR))
+ continue
+ . += thing
diff --git a/code/modules/manufactorio/machines/crafter.dm b/code/modules/manufactorio/machines/crafter.dm
index 4b3f2dba1c4b9..6b1c9160d7679 100644
--- a/code/modules/manufactorio/machines/crafter.dm
+++ b/code/modules/manufactorio/machines/crafter.dm
@@ -6,8 +6,8 @@
circuit = /obj/item/circuitboard/machine/manucrafter
/// power used per process() spent crafting
var/power_cost = 5 KILO WATTS
- /// our output, if the way out was blocked is held here
- var/atom/movable/withheld
+ /// list of weakrefs to crafted items still on the machine that we failed to send forward
+ var/list/datum/weakref/withheld = list()
/// current recipe
var/datum/crafting_recipe/recipe
/// crafting component
@@ -22,6 +22,7 @@
craftsman = AddComponent(/datum/component/personal_crafting/machine)
if(ispath(recipe))
recipe = locate(recipe) in (cooking ? GLOB.cooking_recipes : GLOB.crafting_recipes)
+ START_PROCESSING(SSmanufacturing, src)
/obj/machinery/power/manufacturing/crafter/examine(mob/user)
. = ..()
@@ -44,19 +45,16 @@
/obj/machinery/power/manufacturing/crafter/receive_resource(obj/receiving, atom/from, receive_dir)
var/turf/machine_turf = get_turf(src)
if(length(machine_turf.contents) >= MANUFACTURING_TURF_LAG_LIMIT)
- return MANUFACTURING_FAIL_FULL
- receiving.Move(machine_turf, receive_dir)
- START_PROCESSING(SSmanufacturing, src)
+ return MANUFACTURING_FAIL
+ receiving.forceMove(machine_turf)
return MANUFACTURING_SUCCESS
/obj/machinery/power/manufacturing/crafter/multitool_act(mob/living/user, obj/item/tool)
. = NONE
var/list/unavailable = list()
for(var/datum/crafting_recipe/potential_recipe as anything in cooking ? GLOB.cooking_recipes : GLOB.crafting_recipes)
- if(craftsman.is_recipe_available(potential_recipe, user))
- continue
- var/obj/result = initial(potential_recipe.result)
- if(istype(result) && initial(result.anchored))
+ var/obj/as_obj = potential_recipe.result
+ if(!(ispath(as_obj, /obj) && !ispath(as_obj, /obj/effect) && initial(as_obj.anchored)) && craftsman.is_recipe_available(potential_recipe, user))
continue
unavailable += potential_recipe
var/result = tgui_input_list(usr, "Recipe", "Select Recipe", (cooking ? GLOB.cooking_recipes : GLOB.crafting_recipes) - unavailable)
@@ -66,24 +64,14 @@
balloon_alert(user, "set")
return ITEM_INTERACT_SUCCESS
-/obj/machinery/power/manufacturing/crafter/Exited(atom/movable/gone, direction)
- . = ..()
- if(gone == withheld)
- withheld = null
-
-/obj/machinery/power/manufacturing/crafter/atom_destruction(damage_flag)
- . = ..()
- withheld?.Move(drop_location(src))
-
/obj/machinery/power/manufacturing/crafter/Destroy()
. = ..()
recipe = null
craftsman = null
- QDEL_NULL(withheld)
+ withheld.Cut()
/obj/machinery/power/manufacturing/crafter/process(seconds_per_tick)
- if(!isnull(withheld) && !send_resource(withheld, dir))
- return
+ send_withheld() // try send any pending stuff
if(!isnull(craft_timer))
if(surplus() >= power_cost)
add_load()
@@ -97,19 +85,37 @@
flick_overlay_view(mutable_appearance(icon, "crafter_printing"), recipe.time)
craft_timer = addtimer(CALLBACK(src, PROC_REF(craft), recipe), recipe.time, TIMER_STOPPABLE)
+/obj/machinery/power/manufacturing/crafter/proc/send_withheld()
+ if(!length(withheld))
+ return FALSE
+ for(var/datum/weakref/weakref as anything in withheld)
+ var/atom/movable/resolved = weakref?.resolve()
+ if(isnull(resolved))
+ withheld -= weakref
+ continue
+ if(resolved.loc != loc || send_resource(resolved, dir))
+ withheld -= weakref
+ return length(withheld)
+
/obj/machinery/power/manufacturing/crafter/proc/craft(datum/crafting_recipe/recipe)
if(QDELETED(src))
return
craft_timer = null
- var/atom/movable/result = craftsman.construct_item(src, recipe)
- if(istype(result))
- if(isitem(result))
- result.pixel_x += rand(-4, 4)
- result.pixel_y += rand(-4, 4)
- result.Move(src)
- send_resource(result, dir)
- else
- say(result)
+ var/list/prediff = get_overfloor_objects()
+ var/result = craftsman.construct_item(src, recipe)
+ if(istext(result))
+ say("Crafting failed,[result]")
+ return
+ var/list/diff = get_overfloor_objects() - prediff
+ for(var/atom/movable/diff_result as anything in diff)
+ if(iseffect(diff_result) || ismob(diff_result)) // PLEASE dont stuff cats (or other mobs) into the cat grinder 9000
+ continue
+ if(isitem(diff_result))
+ diff_result.pixel_x += rand(-4, 4)
+ diff_result.pixel_y += rand(-4, 4)
+ withheld += WEAKREF(diff_result)
+ recipe.on_craft_completion(src, diff_result)
+ send_withheld()
/obj/machinery/power/manufacturing/crafter/cooker
name = "manufacturing cooking machine" // maybe this shouldnt be available dont wanna make chef useless, though otherwise it would need a sprite
diff --git a/code/modules/manufactorio/machines/crusher.dm b/code/modules/manufactorio/machines/crusher.dm
index b8cb50bb0bb79..ee5a61a784f14 100644
--- a/code/modules/manufactorio/machines/crusher.dm
+++ b/code/modules/manufactorio/machines/crusher.dm
@@ -29,7 +29,7 @@
if(istype(receiving, /obj/item/stack/ore) || receiving.resistance_flags & INDESTRUCTIBLE || !isitem(receiving) || surplus() < crush_cost || receive_dir != REVERSE_DIR(dir))
return MANUFACTURING_FAIL
if(length(contents - circuit) >= capacity && may_merge_in_contents_and_do_so(receiving))
- return MANUFACTURING_FAIL_FULL
+ return MANUFACTURING_FAIL
receiving.Move(src, get_dir(receiving, src))
START_PROCESSING(SSmanufacturing, src)
return MANUFACTURING_SUCCESS
diff --git a/code/modules/manufactorio/machines/lathe.dm b/code/modules/manufactorio/machines/lathe.dm
index 431d7af1c11db..351e5c25030a9 100644
--- a/code/modules/manufactorio/machines/lathe.dm
+++ b/code/modules/manufactorio/machines/lathe.dm
@@ -125,7 +125,7 @@
return
var/craft_time = (design.construction_time * design.lathe_time_factor) ** 0.8
- flick_overlay_view(mutable_appearance(icon, "crafter_printing"), craft_time)
+ flick_overlay_view(mutable_appearance(icon, "lathe_printing"), craft_time)
print_sound.start()
add_load(power_cost)
busy = addtimer(CALLBACK(src, PROC_REF(do_make_item), design, materials_needed), craft_time, TIMER_UNIQUE | TIMER_STOPPABLE | TIMER_DELETE_ME)
diff --git a/code/modules/manufactorio/machines/router.dm b/code/modules/manufactorio/machines/router.dm
index 8e1c20214339e..fa6950ea0c714 100644
--- a/code/modules/manufactorio/machines/router.dm
+++ b/code/modules/manufactorio/machines/router.dm
@@ -52,7 +52,7 @@
dir = receive_dir
update_appearance(UPDATE_OVERLAYS) // im sorry
return MANUFACTURING_SUCCESS
- return MANUFACTURING_FAIL_FULL
+ return MANUFACTURING_FAIL
/obj/machinery/power/manufacturing/router/proc/handle_stack(obj/item/stack/stack, direction)
if(stack.amount <= 1) // last implementation was just not good so lets cheap out
diff --git a/code/modules/manufactorio/machines/smelter.dm b/code/modules/manufactorio/machines/smelter.dm
index 597c9a7b43a50..84fe54d6e4ff4 100644
--- a/code/modules/manufactorio/machines/smelter.dm
+++ b/code/modules/manufactorio/machines/smelter.dm
@@ -18,7 +18,7 @@
return MANUFACTURING_FAIL
var/list/stacks = contents - circuit
if(length(stacks) >= 5 && !may_merge_in_contents_and_do_so(receiving))
- return MANUFACTURING_FAIL_FULL
+ return MANUFACTURING_FAIL
receiving.Move(src, get_dir(receiving, src))
START_PROCESSING(SSmanufacturing, src)
return MANUFACTURING_SUCCESS
diff --git a/code/modules/manufactorio/machines/sorter.dm b/code/modules/manufactorio/machines/sorter.dm
index 247a96ea606f6..344c90e8ebd70 100644
--- a/code/modules/manufactorio/machines/sorter.dm
+++ b/code/modules/manufactorio/machines/sorter.dm
@@ -42,7 +42,7 @@
/obj/machinery/power/manufacturing/sorter/receive_resource(atom/movable/receiving, atom/from, receive_dir)
if(length(loc.contents) >= MANUFACTURING_TURF_LAG_LIMIT)
- return MANUFACTURING_FAIL_FULL
+ return MANUFACTURING_FAIL
receiving.Move(loc)
return MANUFACTURING_SUCCESS
@@ -125,21 +125,32 @@
return ismob(moving) ? moving.Move(get_step(src,dir), dir) : send_resource(moving, dir)
/obj/machinery/power/manufacturing/sorter/process()
- if(delay_timerid || !length(loc?.contents - 1))
+ if(!anchored || delay_timerid || !length(loc?.contents - 1))
return
launch_everything()
+/// Is target something we should even attempt to start launching?
+/obj/machinery/power/manufacturing/sorter/proc/can_be_launched(atom/movable/target)
+ . = TRUE
+ if(!istype(target) || target == src || target.anchored) //target is not movable, us or anchored
+ return FALSE
+ var/mob/living/probably_living = target
+ if(isdead(target) || (istype(probably_living) && probably_living.incorporeal_move)) //target is incorporeal
+ return FALSE
+
/obj/machinery/power/manufacturing/sorter/proc/on_entered(datum/source, atom/movable/mover)
SIGNAL_HANDLER
- if(mover == src || !istype(mover) || mover.anchored || delay_timerid)
+ if(!anchored || !can_be_launched(mover) || delay_timerid)
return
delay_timerid = addtimer(CALLBACK(src, PROC_REF(launch_everything)), 0.2 SECONDS)
/obj/machinery/power/manufacturing/sorter/proc/launch_everything()
delay_timerid = null
+ if(!anchored)
+ return
var/turf/where_we_at = get_turf(src)
for(var/atom/movable/mover as anything in where_we_at.contents)
- if(mover.anchored)
+ if(!can_be_launched(mover))
continue
for(var/datum/sortrouter_filter/sorting as anything in sort_filters)
if(sorting.meets_conditions(mover) == sorting.inverted)
diff --git a/code/modules/manufactorio/machines/storagebox.dm b/code/modules/manufactorio/machines/storagebox.dm
index b8a6f5cccac39..408493d4a890e 100644
--- a/code/modules/manufactorio/machines/storagebox.dm
+++ b/code/modules/manufactorio/machines/storagebox.dm
@@ -15,7 +15,7 @@
if(iscloset(receiving) && length(receiving.contents))
return MANUFACTURING_FAIL
if(length(contents - circuit) >= max_stuff && !may_merge_in_contents_and_do_so(receiving))
- return MANUFACTURING_FAIL_FULL
+ return MANUFACTURING_FAIL
receiving.Move(src,receive_dir)
return MANUFACTURING_SUCCESS
diff --git a/code/modules/manufactorio/machines/unloader.dm b/code/modules/manufactorio/machines/unloader.dm
index 982c33582684e..5220214168137 100644
--- a/code/modules/manufactorio/machines/unloader.dm
+++ b/code/modules/manufactorio/machines/unloader.dm
@@ -32,7 +32,7 @@
return MANUFACTURING_FAIL
var/list/real_contents = contents - circuit
if(length(real_contents))
- return MANUFACTURING_FAIL_FULL
+ return MANUFACTURING_FAIL
var/obj/structure/closet/as_closet = receiving
var/obj/structure/ore_box/as_orebox = receiving
diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm
index 6d3ef03c3f028..d25581bd3f3a1 100644
--- a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm
+++ b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm
@@ -254,8 +254,7 @@
icon_state = "ice_2"
damage = 10
damage_type = BRUTE // Mining mobs don't take a lot of burn damage so we'll pretend
- speed = 1
- pixel_speed_multiplier = 0.5
+ speed = 0.5
/obj/projectile/baby_watcher_blast/Initialize(mapload)
. = ..()
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
index 7ef451ddc303a..ce57035a7661c 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
@@ -59,13 +59,13 @@
if(offeredmob.mind?.has_antag_datum(/datum/antagonist/ashwalker) && (offeredmob.ckey || offeredmob.get_ghost(FALSE, TRUE))) //special interactions for dead lava lizards with ghosts attached
visible_message(span_warning("Serrated tendrils carefully pull [offeredmob] to [src], absorbing the body and creating it anew."))
- var/datum/mind/deadmind
+ var/mob/deadmob
if(offeredmob.ckey)
- deadmind = offeredmob
+ deadmob = offeredmob
else
- deadmind = offeredmob.get_ghost(FALSE, TRUE)
- to_chat(deadmind, "Your body has been returned to the nest. You are being remade anew, and will awaken shortly. Your memories will remain intact in your new body, as your soul is being salvaged ")
- SEND_SOUND(deadmind, sound('sound/effects/magic/enter_blood.ogg',volume=100))
+ deadmob = offeredmob.get_ghost(FALSE, TRUE)
+ to_chat(deadmob, "Your body has been returned to the nest. You are being remade anew, and will awaken shortly. Your memories will remain intact in your new body, as your soul is being salvaged ")
+ SEND_SOUND(deadmob, sound('sound/effects/magic/enter_blood.ogg',volume=100))
addtimer(CALLBACK(src, PROC_REF(remake_walker), offeredmob), 20 SECONDS)
offeredmob.forceMove(src)
return
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm
index c8b504b72e572..58d5754ccccf3 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm
@@ -77,16 +77,16 @@
name = /obj/machinery/atmospherics/components/unary/vent_scrubber::name
desc = /obj/machinery/atmospherics/components/unary/vent_scrubber::desc
icon = /obj/machinery/atmospherics/components/unary/vent_scrubber::icon
- layer = /obj/machinery/atmospherics/components/unary/vent_scrubber::layer
- plane = /obj/machinery/atmospherics/components/unary/vent_scrubber::plane
+ layer = ABOVE_OPEN_TURF_LAYER
+ plane = FLOOR_PLANE
icon_state = "scrub_on"
/obj/structure/fluff/fake_vent
name = /obj/machinery/atmospherics/components/unary/vent_pump::name
desc = /obj/machinery/atmospherics/components/unary/vent_pump::desc
icon = /obj/machinery/atmospherics/components/unary/vent_pump::icon
- layer = /obj/machinery/atmospherics/components/unary/vent_pump::layer
- plane = /obj/machinery/atmospherics/components/unary/vent_pump::plane
+ layer = ABOVE_OPEN_TURF_LAYER
+ plane = FLOOR_PLANE
icon_state = "vent_out"
/turf/open/mirage
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm
index 6baaf8e566070..733cd8330bc1f 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm
@@ -16,6 +16,7 @@
light_range = 8
light_color = LIGHT_COLOR_LAVA
can_atmos_pass = ATMOS_PASS_DENSITY
+ move_resist = INFINITY
var/open = FALSE
var/changing_openness = FALSE
var/locked = FALSE
@@ -94,7 +95,7 @@
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/structure/necropolis_gate/attack_hand(mob/user, list/modifiers)
if(locked)
- to_chat(user, span_boldannounce("It's [open ? "stuck open":"locked"]."))
+ to_chat(user, span_bolddanger("It's [open ? "stuck open":"locked"]."))
return
toggle_the_gate(user)
return ..()
@@ -163,7 +164,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
var/safety = tgui_alert(user, "You think this might be a bad idea...", "Knock on the door?", list("Proceed", "Abort"))
if(safety == "Abort" || !in_range(src, user) || !src || open || changing_openness || user.incapacitated)
return
- user.visible_message(span_warning("[user] knocks on [src]..."), span_boldannounce("You tentatively knock on [src]..."))
+ user.visible_message(span_warning("[user] knocks on [src]..."), span_bolddanger("You tentatively knock on [src]..."))
playsound(user.loc, 'sound/effects/shieldbash.ogg', 100, TRUE)
sleep(5 SECONDS)
return ..()
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm
index 6e67c0831d398..f925fa651a838 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm
@@ -49,4 +49,4 @@
user.updateappearance(mutcolor_update=1)
user.domutcheck()
user.visible_message(span_warning("[user]'s appearance shifts into [H]'s!"), \
- span_boldannounce("[H.p_They()] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't."))
+ span_bolddanger("[H.p_They()] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't."))
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm b/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm
index f290c06d78f10..ce57d47c6e9b7 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm
@@ -68,7 +68,7 @@
icon_state = "anomaly_research"
requires_power = FALSE
area_flags = HIDDEN_AREA | UNIQUE_AREA
- has_gravity = TRUE
+ default_gravity = ZERO_GRAVITY
/obj/item/reagent_containers/cup/bottle/wittel
name = "wittel bottle"
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm b/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm
index 895200d487a1b..9ddf111958cdf 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm
@@ -38,7 +38,7 @@
/area/ruin/space/nt_commsbuoy
name = "\improper Nanotrasen Comms Buoy"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
- has_gravity = FALSE
+ default_gravity = ZERO_GRAVITY
ambientsounds = list(
'sound/ambience/engineering/ambisin2.ogg',
'sound/ambience/misc/signal.ogg',
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm b/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm
index 39458ac942964..30cb60cc243ee 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm
@@ -88,12 +88,11 @@
/obj/structure/aquarium/donkfish/Initialize(mapload)
. = ..()
+ ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)
new /obj/item/aquarium_prop/rocks(src)
new /obj/item/aquarium_prop/seaweed(src)
new /obj/item/fish/donkfish(src)
new /obj/item/fish/donkfish(src)
- create_reagents(20, SEALED_CONTAINER)
- reagents.add_reagent(/datum/reagent/consumable/nutriment, 20)
//gimmick ketchup bottle for healing minor injuries
/obj/item/reagent_containers/condiment/donksauce
@@ -245,7 +244,7 @@
//is this being used as part of the haunted trading post ruin? if true, will self destruct when boss dies
var/donk_ai_slave = FALSE
// machine that the trap inhabits
- var/obj/structure/host_machine
+ var/obj/machinery/host_machine
// turf that the trap is on
var/turf/my_turf
//how long until trap zaps everything, after it detects something
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
index 157cfbb9e16b6..807bd5e816632 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
@@ -392,7 +392,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
icon = 'icons/area/areas_ruins.dmi'
icon_state = "hilbertshotel"
requires_power = FALSE
- has_gravity = TRUE
+ default_gravity = STANDARD_GRAVITY
area_flags = NOTELEPORT | HIDDEN_AREA
static_lighting = TRUE
ambientsounds = list('sound/ambience/ruin/servicebell.ogg')
@@ -483,7 +483,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
icon_state = "hilbertshotel"
requires_power = FALSE
area_flags = HIDDEN_AREA | NOTELEPORT | UNIQUE_AREA
- has_gravity = TRUE
+ default_gravity = STANDARD_GRAVITY
/obj/item/abstracthotelstorage
anchored = TRUE
@@ -525,25 +525,25 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
worn_icon_state = "analyzer"
/obj/item/analyzer/hilbertsanalyzer/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
- if(istype(interacting_with, /obj/item/hilbertshotel))
- if(!Adjacent(interacting_with))
- to_chat(user, span_warning("It's to far away to scan!"))
- return ITEM_INTERACT_BLOCKING
- var/obj/item/hilbertshotel/sphere = interacting_with
- if(sphere.activeRooms.len)
- to_chat(user, "Currently Occupied Rooms:")
- for(var/roomnumber in sphere.activeRooms)
- to_chat(user, roomnumber)
- else
- to_chat(user, "No currenty occupied rooms.")
- if(sphere.storedRooms.len)
- to_chat(user, "Vacated Rooms:")
- for(var/roomnumber in sphere.storedRooms)
- to_chat(user, roomnumber)
- else
- to_chat(user, "No vacated rooms.")
- return ITEM_INTERACT_SUCCESS
- return ..()
+ if(!istype(interacting_with, /obj/item/hilbertshotel))
+ return ..()
+ if(!user.CanReach(interacting_with))
+ to_chat(user, span_warning("It's to far away to scan!"))
+ return ITEM_INTERACT_BLOCKING
+ var/obj/item/hilbertshotel/sphere = interacting_with
+ if(sphere.activeRooms.len)
+ to_chat(user, "Currently Occupied Rooms:")
+ for(var/roomnumber in sphere.activeRooms)
+ to_chat(user, roomnumber)
+ else
+ to_chat(user, "No currenty occupied rooms.")
+ if(sphere.storedRooms.len)
+ to_chat(user, "Vacated Rooms:")
+ for(var/roomnumber in sphere.storedRooms)
+ to_chat(user, roomnumber)
+ else
+ to_chat(user, "No vacated rooms.")
+ return ITEM_INTERACT_SUCCESS
/obj/effect/landmark/transport/transport_id/hilbert
specific_transport_id = HILBERT_LINE_1
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm b/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm
index 2b2216641488d..440f7ad05786e 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm
@@ -125,6 +125,7 @@
/obj/lightning_thrower/Destroy()
. = ..()
+ clear_signals()
signal_turfs = null
STOP_PROCESSING(SSprocessing, src)
@@ -132,6 +133,8 @@
var/list/dirs = throw_diagonals ? GLOB.diagonals : GLOB.cardinals
throw_diagonals = !throw_diagonals
playsound(src, 'sound/effects/magic/lightningbolt.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
+ if(length(signal_turfs))
+ clear_signals()
for(var/direction in dirs)
var/victim_turf = get_step(src, direction)
if(isclosedturf(victim_turf))
@@ -143,8 +146,7 @@
shock_victim(null, victim)
addtimer(CALLBACK(src, PROC_REF(clear_signals)), shock_duration)
-/obj/lightning_thrower/proc/clear_signals(datum/source)
- SIGNAL_HANDLER
+/obj/lightning_thrower/proc/clear_signals()
for(var/turf in signal_turfs)
UnregisterSignal(turf, COMSIG_ATOM_ENTERED)
signal_turfs -= turf
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
index d40d9178f3a85..88b9e9f9503f4 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
@@ -36,7 +36,6 @@
/datum/reagent/medicine/c2/penthrite = 5,
/datum/reagent/consumable/vinegar = 5,
)
- drink_type = NONE
age_restricted = FALSE
/// Abstract holder object for shared behaviour
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm
index 994162345dae2..7c003b0dc7a43 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm
@@ -86,7 +86,7 @@
..()
return TRUE
-/obj/machinery/mod_installer/close_machine(mob/living/carbon/user, density_to_set = TRUE)
+/obj/machinery/mod_installer/close_machine(atom/movable/target, density_to_set = TRUE)
if(!state_open)
return FALSE
..()
@@ -108,7 +108,7 @@
/obj/machinery/mod_installer/interact(mob/user)
if(state_open)
- close_machine(null, user)
+ close_machine()
return
else if(busy)
balloon_alert(user, "it's locked!")
diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm
index bca2ace626062..10d506f8c48e5 100644
--- a/code/modules/mapping/reader.dm
+++ b/code/modules/mapping/reader.dm
@@ -839,7 +839,7 @@ GLOBAL_LIST_EMPTY(map_model_default)
if(member_string[length(member_string)] == "}")
variables_start = findtext(member_string, "{")
- var/path_text = trimtext(copytext(member_string, 1, variables_start))
+ var/path_text = trim(copytext(member_string, 1, variables_start))
var/atom_def = text2path(path_text) //path definition, e.g /obj/foo/bar
if(!ispath(atom_def, /atom)) // Skip the item if the path does not exist. Fix your crap, mappers!
@@ -1011,7 +1011,7 @@ GLOBAL_LIST_EMPTY(map_model_default)
// check if this is a simple variable (as in list(var1, var2)) or an associative one (as in list(var1="foo",var2=7))
var/equal_position = findtext(text,"=",old_position, position)
- var/trim_left = trimtext(copytext(text,old_position,(equal_position ? equal_position : position)))
+ var/trim_left = trim(copytext(text,old_position,(equal_position ? equal_position : position)))
var/left_constant = parse_constant(trim_left)
if(position)
old_position = position + length(text[position])
@@ -1021,7 +1021,7 @@ GLOBAL_LIST_EMPTY(map_model_default)
if(equal_position && !isnum(left_constant))
// Associative var, so do the association.
// Note that numbers cannot be keys - the RHS is dropped if so.
- var/trim_right = trimtext(copytext(text, equal_position + length(text[equal_position]), position))
+ var/trim_right = trim(copytext(text, equal_position + length(text[equal_position]), position))
var/right_constant = parse_constant(trim_right)
.[left_constant] = right_constant
else // simple var
diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm
index d6ac3ac4f9424..c157636b1219a 100644
--- a/code/modules/mapping/ruins.dm
+++ b/code/modules/mapping/ruins.dm
@@ -72,8 +72,9 @@
* @param clear_below Whether to clear the area below the ruin. Used for multiz ruins.
* @param mineral_budget The budget to spend on ruins that spawn ore vents. Map templates with vents have that defined by mineral_cost.
* @param mineral_budget_update What type of ore distribution should spawn from ruins picked by this cave generator? This list is copied from ores_spawned.dm into SSore_generation.ore_vent_minerals.
+ * @param ruin_type The type of ruins that are spawning (ZTRAIT_SPACE_RUINS, ZTRAIT_ICE_RUINS, ZTRAIT_LAVA_RUINS, etc.)
*/
-/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE, mineral_budget = 15, mineral_budget_update)
+/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE, mineral_budget = 15, mineral_budget_update, ruins_type = ZTRAIT_STATION)
if(!z_levels || !z_levels.len)
WARNING("No Z levels provided - Not generating ruins")
return
@@ -86,7 +87,7 @@
return
var/list/ruins = potentialRuins.Copy()
-
+ var/placed_ruins = 0 // our count of how many ruins have been placed
var/list/forced_ruins = list() //These go first on the z level associated (same random one by default) or if the assoc value is a turf to the specified turf.
var/list/ruins_available = list() //we can try these in the current pass
@@ -115,7 +116,7 @@
if(R.unpickable)
continue
ruins_available[R] = R.placement_weight
- while((budget > 0 || mineral_budget > 0) && (ruins_available.len || forced_ruins.len))
+ while(((budget > 0 || mineral_budget > 0) && ruins_available.len) || forced_ruins.len)
var/datum/map_template/ruin/current_pick
var/forced = FALSE
var/forced_z //If set we won't pick z level and use this one instead.
@@ -171,8 +172,9 @@
for(var/datum/map_template/ruin/R in ruins_available)
if(R.id == current_pick.id)
ruins_available -= R
- log_world("Failed to place [current_pick.name] ruin.")
+ log_mapping("Failed to place [current_pick.name] ruin!")
else
+ placed_ruins++
budget -= current_pick.cost
mineral_budget -= current_pick.mineral_cost
if(!current_pick.allow_duplicates)
@@ -203,9 +205,12 @@
if(PLACE_ISOLATED)
forced_ruins[linked] = SSmapping.get_isolated_ruin_z()
+
+ log_mapping("Successfully placed [current_pick.name] ruin.")
+
//Update the available list
for(var/datum/map_template/ruin/R in ruins_available)
if(R.cost > budget || R.mineral_cost > mineral_budget)
ruins_available -= R
- log_world("Ruin loader finished with [budget] left to spend.")
+ log_world("[ruins_type] loader finished placing [placed_ruins]/[ruins.len] ruins with [budget] left to spend.")
diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm
index ba135081532da..8d3fcc67f53b8 100644
--- a/code/modules/meteors/meteor_types.dm
+++ b/code/modules/meteors/meteor_types.dm
@@ -45,6 +45,9 @@
/obj/effect/meteor/Destroy()
GLOB.meteor_list -= src
+ var/datum/move_loop/moveloop = GLOB.move_manager.processing_on(src, SSmovement)
+ if (!isnull(moveloop))
+ UnregisterSignal(moveloop, COMSIG_MOVELOOP_STOP)
return ..()
/obj/effect/meteor/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
@@ -76,8 +79,12 @@
if(!isatom(chasing))
return
var/datum/move_loop/new_loop = GLOB.move_manager.move_towards(src, chasing, delay, home, lifetime)
- if(!new_loop)
- return
+ if(new_loop)
+ RegisterSignal(new_loop, COMSIG_MOVELOOP_STOP, PROC_REF(on_loop_stopped))
+
+/obj/effect/meteor/proc/on_loop_stopped(datum/source)
+ SIGNAL_HANDLER
+ qdel(src)
///Deals with what happens when we stop moving, IE we die
/obj/effect/meteor/proc/moved_off_z()
diff --git a/code/modules/mining/boulder_processing/boulder.dm b/code/modules/mining/boulder_processing/boulder.dm
index e345f870f7874..9f2dba12ab291 100644
--- a/code/modules/mining/boulder_processing/boulder.dm
+++ b/code/modules/mining/boulder_processing/boulder.dm
@@ -158,8 +158,10 @@
/**
* This function is called while breaking boulders manually, and drops ore based on the boulder's mineral content.
* Quantity of ore spawned here is 1 less than if the boulder was processed by a machine, but clamped at 10 maximum, 1 minimum.
+ *
+ * target_destination: Optional - Sets the location directly instead of dropping it
*/
-/obj/item/boulder/proc/convert_to_ore()
+/obj/item/boulder/proc/convert_to_ore(atom/target_destination)
for(var/datum/material/picked in custom_materials)
var/obj/item/stack/ore/cracked_ore // Take the associated value and convert it into ore stacks...
var/quantity = clamp(round((custom_materials[picked] - SHEET_MATERIAL_AMOUNT)/SHEET_MATERIAL_AMOUNT), 1, 10) //but less resources than if they processed it by hand.
@@ -168,7 +170,10 @@
if(isnull(cracked_ore_type))
stack_trace("boulder found containing material type [picked.type] with no set ore_type")
continue
- cracked_ore = new cracked_ore_type (drop_location(), quantity)
+ var/atom/ore_destination = drop_location()
+ if(target_destination)
+ ore_destination = target_destination
+ cracked_ore = new cracked_ore_type (ore_destination, quantity)
SSblackbox.record_feedback("tally", "ore_mined", quantity, cracked_ore.type)
///Moves boulder contents to the drop location, and then deletes the boulder.
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index 216275a239076..a6b2f075b8f1e 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -6,6 +6,7 @@
icon = 'icons/obj/clothing/suits/utility.dmi'
worn_icon = 'icons/mob/clothing/suits/utility.dmi'
inhand_icon_state = null
+ supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
body_parts_covered = CHEST|GROIN|LEGS|ARMS
cold_protection = CHEST|GROIN|LEGS|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
@@ -15,6 +16,9 @@
armor_type = /datum/armor/hooded_explorer
resistance_flags = FIRE_PROOF
+/obj/item/clothing/suit/hooded/explorer/get_general_color(icon/base_icon)
+ return "#796755"
+
/datum/armor/hooded_explorer
melee = 30
bullet = 10
diff --git a/code/modules/mining/equipment/grapple_gun.dm b/code/modules/mining/equipment/grapple_gun.dm
index 0247d0164b025..99144d84867ce 100644
--- a/code/modules/mining/equipment/grapple_gun.dm
+++ b/code/modules/mining/equipment/grapple_gun.dm
@@ -10,7 +10,7 @@
inhand_icon_state = "gun"
item_flags = NOBLUDGEON
///overlay when the hook is retracted
- var/static/mutable_appearance/hook_overlay = new(icon = 'icons/obj/mining.dmi', icon_state = "grapple_gun_hooked")
+ var/static/mutable_appearance/hook_overlay = mutable_appearance(icon = 'icons/obj/mining.dmi', icon_state = "grapple_gun_hooked")
///is the hook retracted
var/hooked = TRUE
///addtimer id for launching the user
@@ -179,7 +179,7 @@
icon_state = "grapple_hook"
damage = 0
range = 9
- speed = 0.1
+ speed = 10
can_hit_turfs = TRUE
hitsound = 'sound/items/weapons/zipline_hit.ogg'
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 1a83ad0f30330..c5bdfa9daa239 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -157,7 +157,7 @@
destabilizer.icon_state = "[projectile_icon]"
for(var/obj/item/crusher_trophy/attached_trophy as anything in trophies)
attached_trophy.on_projectile_fire(destabilizer, user)
- destabilizer.preparePixelProjectile(target, user, modifiers)
+ destabilizer.aim_projectile(target, user, modifiers)
destabilizer.firer = user
playsound(user, 'sound/items/weapons/plasma_cutter.ogg', 100, TRUE)
destabilizer.fire()
@@ -423,7 +423,7 @@
marker.name = "deadly [marker.name]"
marker.icon_state = "chronobolt"
marker.damage = bonus_value
- marker.speed = 2
+ marker.speed = 0.5
deadly_shot = FALSE
/obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user)
diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm
index b6bd54a361eb5..ccd3a08c19cc2 100644
--- a/code/modules/mining/equipment/monster_organs/monster_organ.dm
+++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm
@@ -83,7 +83,7 @@
deltimer(decay_timer)
return ..()
-/obj/item/organ/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags)
+/obj/item/organ/monster_core/on_mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags)
. = ..()
if (inert)
@@ -96,7 +96,7 @@
target_carbon.visible_message(span_notice("[src] stabilizes as it's inserted."))
return TRUE
-/obj/item/organ/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags)
+/obj/item/organ/monster_core/on_mob_remove(mob/living/carbon/target_carbon, special, movement_flags)
if (!inert && !special)
owner.visible_message(span_notice("[src] rapidly decays as it's removed."))
go_inert()
diff --git a/code/modules/mining/equipment/monster_organs/regenerative_core.dm b/code/modules/mining/equipment/monster_organs/regenerative_core.dm
index e601ac89f8c59..bcb7bc0455f27 100644
--- a/code/modules/mining/equipment/monster_organs/regenerative_core.dm
+++ b/code/modules/mining/equipment/monster_organs/regenerative_core.dm
@@ -31,7 +31,7 @@
trigger_organ_action(TRIGGER_FORCE_AVAILABLE)
/obj/item/organ/monster_core/regenerative_core/on_triggered_internal()
- owner.revive(HEAL_ALL)
+ owner.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS)
qdel(src)
/// Log applications and apply moodlet.
diff --git a/code/modules/mining/equipment/monster_organs/rush_gland.dm b/code/modules/mining/equipment/monster_organs/rush_gland.dm
index cf901269e904c..8012286975adb 100644
--- a/code/modules/mining/equipment/monster_organs/rush_gland.dm
+++ b/code/modules/mining/equipment/monster_organs/rush_gland.dm
@@ -25,7 +25,7 @@
. = ..()
RegisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED, PROC_REF(trigger_organ_action_on_sig))
-/obj/item/organ/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED)
diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm
index ce0c2d923a457..a770d7f4bbf0d 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -4,7 +4,7 @@
icon_state = "away"
static_lighting = TRUE
requires_power = FALSE
- has_gravity = STANDARD_GRAVITY
+ default_gravity = STANDARD_GRAVITY
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
flags_1 = CAN_BE_DIRTY_1
diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm
index 6ffcfa7bc6752..fa9b63a4658a7 100644
--- a/code/modules/mining/equipment/wormhole_jaunter.dm
+++ b/code/modules/mining/equipment/wormhole_jaunter.dm
@@ -103,7 +103,7 @@
light_on = FALSE
wibbles = FALSE
-/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M)
+/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M, force = FALSE)
. = ..()
if(.)
// KERPLUNK
diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm
index ee700e3d9774b..75d532249f492 100644
--- a/code/modules/mining/laborcamp/laborstacker.dm
+++ b/code/modules/mining/laborcamp/laborstacker.dm
@@ -12,16 +12,30 @@
var/obj/machinery/mineral/stacking_machine/laborstacker/stacking_machine
/// Needed to send messages to sec radio
var/obj/item/radio/security_radio
+ /// Whether the claim console initiated the launch.
+ var/initiated_launch = FALSE
+ /// Cooldown for console says.
+ COOLDOWN_DECLARE(say_cooldown)
/obj/machinery/mineral/labor_claim_console/Initialize(mapload)
. = ..()
security_radio = new /obj/item/radio(src)
security_radio.set_listening(FALSE)
locate_stacking_machine()
+ if(!SSshuttle.initialized)
+ RegisterSignal(SSshuttle, COMSIG_SUBSYSTEM_POST_INITIALIZE, PROC_REF(register_shuttle_signal))
+ else
+ register_shuttle_signal()
//If we can't find a stacking machine end it all ok?
if(!stacking_machine)
return INITIALIZE_HINT_QDEL
+/obj/machinery/mineral/labor_claim_console/proc/register_shuttle_signal()
+ SIGNAL_HANDLER
+ var/obj/docking_port/mobile/laborshuttle = SSshuttle.getShuttle("laborcamp")
+ RegisterSignal(laborshuttle, COMSIG_SHUTTLE_SHOULD_MOVE, PROC_REF(on_laborshuttle_can_move))
+ UnregisterSignal(SSshuttle, COMSIG_SUBSYSTEM_POST_INITIALIZE)
+
/obj/machinery/mineral/labor_claim_console/Destroy()
QDEL_NULL(security_radio)
if(stacking_machine)
@@ -86,23 +100,34 @@
var/obj/item/card/id/advanced/prisoner/worn_prisoner_id = worn_id
worn_prisoner_id.points += stacking_machine.points
stacking_machine.points = 0
- to_chat(user_mob, span_notice("Points transferred."))
+ say("Points transferred.")
return TRUE
else
- to_chat(user_mob, span_alert("No valid id for point transfer detected."))
+ if(COOLDOWN_FINISHED(src, say_cooldown))
+ say("No valid id for point transfer detected.")
+ COOLDOWN_START(src, say_cooldown, 2 SECONDS)
if("move_shuttle")
- if(!alone_in_area(get_area(src), user_mob))
- to_chat(user_mob, span_alert("Prisoners are only allowed to be released while alone."))
+ var/list/labor_shuttle_mobs = find_labor_shuttle_mobs()
+ if(length(labor_shuttle_mobs) > 1 || labor_shuttle_mobs[1] != user_mob)
+ if(COOLDOWN_FINISHED(src, say_cooldown))
+ say("Prisoners may only be released one at a time.")
+ COOLDOWN_START(src, say_cooldown, 2 SECONDS)
return
switch(SSshuttle.moveShuttle("laborcamp", "laborcamp_home", TRUE))
if(1)
- to_chat(user_mob, span_alert("Shuttle not found."))
+ if(COOLDOWN_FINISHED(src, say_cooldown))
+ say("Shuttle not found.")
+ COOLDOWN_START(src, say_cooldown, 2 SECONDS)
if(2)
- to_chat(user_mob, span_alert("Shuttle already at station."))
+ if(COOLDOWN_FINISHED(src, say_cooldown))
+ say("Shuttle already at station.")
+ COOLDOWN_START(src, say_cooldown, 2 SECONDS)
if(3)
- to_chat(user_mob, span_alert("No permission to dock could be granted."))
+ if(COOLDOWN_FINISHED(src, say_cooldown))
+ say("No permission to dock could be granted.")
+ COOLDOWN_START(src, say_cooldown, 2 SECONDS)
else
if(!(obj_flags & EMAGGED))
security_radio.set_frequency(FREQ_SECURITY)
@@ -111,9 +136,29 @@
security_radio.talk_into(src, "[user_mob.name] returned to the station. Minerals and Prisoner ID card ready for retrieval.", FREQ_SECURITY)
user_mob.log_message("has completed their labor points goal and is now sending the gulag shuttle back to the station.", LOG_GAME)
- to_chat(user_mob, span_notice("Shuttle received message and will be sent shortly."))
+ say("Labor sentence finished, shuttle returning.")
+ initiated_launch = TRUE
return TRUE
+/obj/machinery/mineral/labor_claim_console/proc/find_labor_shuttle_mobs()
+ var/list/prisoners = mobs_in_area_type(list(get_area(src)))
+
+ // security personnel and nonhumans do not count towards this
+ for(var/mob/living/mob as anything in prisoners)
+ var/obj/item/card/id/card = mob.get_idcard(FALSE)
+ if(!ishuman(mob) || (ACCESS_BRIG in card?.GetAccess()))
+ prisoners -= mob
+
+ return prisoners
+
+/obj/machinery/mineral/labor_claim_console/proc/on_laborshuttle_can_move(obj/docking_port/mobile/source)
+ SIGNAL_HANDLER
+
+ if(initiated_launch && length(find_labor_shuttle_mobs()) > 1)
+ initiated_launch = FALSE
+ say("Takeoff aborted. Prisoners may only be released one at a time.")
+ return BLOCK_SHUTTLE_MOVE
+
/obj/machinery/mineral/labor_claim_console/proc/locate_stacking_machine()
stacking_machine = locate(/obj/machinery/mineral/stacking_machine) in dview(2, get_turf(src))
if(stacking_machine)
@@ -150,10 +195,10 @@
points += SHEET_POINT_VALUE * input.amount
return ..()
-/obj/machinery/mineral/stacking_machine/laborstacker/attackby(obj/item/weapon, mob/user, params)
+/obj/machinery/mineral/stacking_machine/laborstacker/base_item_interaction(mob/living/user, obj/item/weapon, list/modifiers)
if(istype(weapon, /obj/item/stack/sheet))
process_sheet(weapon)
- return
+ return ITEM_INTERACT_SUCCESS
return ..()
/**********************Point Lookup Console**************************/
diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm
index d355014c6ad70..3b33119aa24e7 100644
--- a/code/modules/mining/lavaland/megafauna_loot.dm
+++ b/code/modules/mining/lavaland/megafauna_loot.dm
@@ -553,7 +553,7 @@
return
COOLDOWN_START(src, attack_cooldown, 3 SECONDS)
var/obj/projectile/projectile = new /obj/projectile/soulscythe(get_turf(src))
- projectile.preparePixelProjectile(attacked_atom, src)
+ projectile.aim_projectile(attacked_atom, src)
projectile.firer = src
projectile.fire(null, attacked_atom)
visible_message(span_danger("[src] fires at [attacked_atom]!"), span_notice("You fire at [attacked_atom]!"))
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 58b7b437d7c54..bb6215705160d 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -145,8 +145,8 @@
/obj/structure/closet/crate/necropolis/colossus
name = "colossus chest"
-/obj/structure/closet/crate/necropolis/colossus/bullet_act(obj/projectile/P)
- if(istype(P, /obj/projectile/colossus))
+/obj/structure/closet/crate/necropolis/colossus/bullet_act(obj/projectile/proj)
+ if(istype(proj, /obj/projectile/colossus))
return BULLET_ACT_FORCE_PIERCE
return ..()
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index fe338b35ccb93..bb36b6d91027c 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -760,8 +760,10 @@
berserk_value *= PROJECTILE_HIT_MULTIPLIER
berserk_charge = clamp(round(berserk_charge + berserk_value), 0, MAX_BERSERK_CHARGE)
if(berserk_charge >= MAX_BERSERK_CHARGE)
+ var/datum/action/item_action/berserk_mode/ragemode = locate() in actions
to_chat(owner, span_notice("Berserk mode is fully charged."))
balloon_alert(owner, "berserk charged")
+ ragemode?.build_all_button_icons(UPDATE_BUTTON_STATUS)
/obj/item/clothing/head/hooded/berserker/IsReflect()
if(berserk_active)
@@ -769,6 +771,7 @@
/// Starts berserk, reducing incoming brute by 50%, doubled attacking speed, NOGUNS trait, adding a color and giving them the berserk movespeed modifier
/obj/item/clothing/head/hooded/berserker/proc/berserk_mode(mob/living/carbon/human/user)
+ var/datum/action/item_action/berserk_mode/ragemode = locate() in actions
to_chat(user, span_warning("You enter berserk mode."))
playsound(user, 'sound/effects/magic/staff_healing.ogg', 50)
user.add_movespeed_modifier(/datum/movespeed_modifier/berserk)
@@ -779,6 +782,7 @@
ADD_TRAIT(src, TRAIT_NODROP, BERSERK_TRAIT)
berserk_active = TRUE
START_PROCESSING(SSobj, src)
+ ragemode?.build_all_button_icons(UPDATE_BUTTON_STATUS)
/// Ends berserk, reverting the changes from the proc [berserk_mode]
/obj/item/clothing/head/hooded/berserker/proc/end_berserk(mob/living/carbon/human/user)
@@ -787,6 +791,8 @@
berserk_active = FALSE
if(QDELETED(user))
return
+ var/datum/action/item_action/berserk_mode/ragemode = locate() in actions
+ ragemode?.build_all_button_icons(UPDATE_BUTTON_STATUS)
to_chat(user, span_warning("You exit berserk mode."))
playsound(user, 'sound/effects/magic/summonitems_generic.ogg', 50)
user.remove_movespeed_modifier(/datum/movespeed_modifier/berserk)
@@ -811,7 +817,11 @@
/obj/item/drake_remains/Initialize(mapload)
. = ..()
- particles = new /particles/bonfire()
+ add_shared_particles(/particles/bonfire)
+
+/obj/item/drake_remains/Destroy(force)
+ remove_shared_particles(/particles/bonfire)
+ return ..()
/obj/item/clothing/glasses/godeye
name = "eye of god"
@@ -962,9 +972,7 @@
if(!katana.drew_blood)
to_chat(owner, span_userdanger("[katana] lashes out at you in hunger!"))
playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50, TRUE)
- var/obj/item/bodypart/part = owner.get_holding_bodypart_of_item(katana)
- if(part)
- part.receive_damage(brute = 25, wound_bonus = 10, sharpness = SHARP_EDGED)
+ owner.apply_damage(25, BRUTE, hand, wound_bonus = 10, sharpness = SHARP_EDGED)
katana.drew_blood = FALSE
katana.wash(CLEAN_TYPE_BLOOD)
return ..()
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 312acb6672014..24e0f53a87ab7 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -229,21 +229,27 @@
for(var/datum/material/material as anything in mat_container.materials)
var/amount = mat_container.materials[material]
var/sheet_amount = amount / SHEET_MATERIAL_AMOUNT
+ var/obj/sheet_type = material.sheet_type
data["materials"] += list(list(
"name" = material.name,
"id" = REF(material),
"amount" = sheet_amount,
"category" = "material",
"value" = ore_values[material.type],
+ "icon" = sheet_type::icon,
+ "icon_state" = sheet_type::icon_state,
))
for(var/research in stored_research.researched_designs)
var/datum/design/alloy = SSresearch.techweb_design_by_id(research)
+ var/obj/alloy_type = alloy.build_path
data["materials"] += list(list(
"name" = alloy.name,
"id" = alloy.id,
"category" = "alloy",
"amount" = can_smelt_alloy(alloy),
+ "icon" = alloy_type::icon,
+ "icon_state" = alloy_type::icon_state,
))
data["disconnected"] = null
@@ -274,29 +280,6 @@
)
return data
-/obj/machinery/mineral/ore_redemption/ui_static_data(mob/user)
- var/list/data = list()
-
- var/datum/component/material_container/mat_container = materials.mat_container
- if (mat_container)
- for(var/datum/material/material as anything in mat_container.materials)
- var/obj/material_display = initial(material.sheet_type)
- data["material_icons"] += list(list(
- "id" = REF(material),
- "product_icon" = icon2base64(getFlatIcon(image(icon = initial(material_display.icon), icon_state = initial(material_display.icon_state)), no_anim=TRUE)),
- ))
-
- for(var/research in stored_research.researched_designs)
- var/datum/design/alloy = SSresearch.techweb_design_by_id(research)
- var/obj/alloy_display = initial(alloy.build_path)
- data["material_icons"] += list(list(
- "id" = alloy.id,
- "product_icon" = icon2base64(getFlatIcon(image(icon = initial(alloy_display.icon), icon_state = initial(alloy_display.icon_state)), no_anim=TRUE)),
- ))
-
- return data
-
-
/obj/machinery/mineral/ore_redemption/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index d74e46b026414..e08fed91b0951 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -135,10 +135,6 @@
roundstart_template = /datum/map_template/shuttle/mining/kilo
height = 10
-/obj/docking_port/stationary/mining_home/northstar
- roundstart_template = /datum/map_template/shuttle/mining/northstar
- height = 6
-
/obj/docking_port/stationary/mining_home/nebula
roundstart_template = /datum/map_template/shuttle/mining/nebula
height = 10
@@ -151,9 +147,6 @@
/obj/docking_port/stationary/mining_home/common/kilo
roundstart_template = /datum/map_template/shuttle/mining_common/kilo
-/obj/docking_port/stationary/mining_home/common/northstar
- roundstart_template = /datum/map_template/shuttle/mining_common/northstar
-
/obj/structure/closet/crate/miningcar
name = "mine cart"
desc = "A cart for use on rails. Or off rails, if you're so inclined."
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 0b051248a3966..55a1b9557c26d 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -341,8 +341,8 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
else
return ..()
-/obj/item/gibtonite/bullet_act(obj/projectile/P)
- GibtoniteReaction(P.firer, "A projectile has primed for detonation a")
+/obj/item/gibtonite/bullet_act(obj/projectile/proj)
+ GibtoniteReaction(proj.firer, "A projectile has primed for detonation a")
return ..()
/obj/item/gibtonite/ex_act()
diff --git a/code/modules/mining/satchel_ore_box.dm b/code/modules/mining/satchel_ore_box.dm
index 94be35108d0b0..2745bdb5d09d7 100644
--- a/code/modules/mining/satchel_ore_box.dm
+++ b/code/modules/mining/satchel_ore_box.dm
@@ -66,6 +66,13 @@
else
return ..()
+/obj/structure/ore_box/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
+ . = ..()
+ if(istype(arrived, /obj/item/boulder) && ismecha(loc)) //Boulders being put into a mech's orebox get processed
+ var/obj/item/boulder/to_process = arrived
+ to_process.convert_to_ore(src)
+ qdel(to_process)
+
/obj/structure/ore_box/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
diff --git a/code/modules/mining/shelters.dm b/code/modules/mining/shelters.dm
index 539854a394756..5a08b29202208 100644
--- a/code/modules/mining/shelters.dm
+++ b/code/modules/mining/shelters.dm
@@ -17,7 +17,7 @@
/datum/map_template/shelter/New()
. = ..()
blacklisted_turfs = typecacheof(/turf/closed)
- banned_areas = typecacheof(/area/shuttle)
+ banned_areas = typecacheof(list(/area/shuttle, /area/station/holodeck))
/datum/map_template/shelter/proc/check_deploy(turf/deploy_location, obj/item/survivalcapsule/capsule, ignore_flags = NONE)
var/affected = get_affected_turfs(deploy_location, centered=TRUE)
diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm
index d2823eae2b580..5e77627e00d55 100644
--- a/code/modules/mob/dead/observer/orbit.dm
+++ b/code/modules/mob/dead/observer/orbit.dm
@@ -104,7 +104,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new)
if(isliving(mob_poi))
serialized += get_living_data(mob_poi)
- var/list/antag_data = get_antag_data(mob_poi.mind)
+ var/list/antag_data = get_antag_data(mob_poi.mind, user?.client?.holder)
if(length(antag_data))
serialized += antag_data
antagonists += list(serialized)
@@ -151,11 +151,11 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new)
/// Helper function to get threat type, group, overrides for job and icon
-/datum/orbit_menu/proc/get_antag_data(datum/mind/poi_mind) as /list
+/datum/orbit_menu/proc/get_antag_data(datum/mind/poi_mind, is_admin) as /list
var/list/serialized = list()
for(var/datum/antagonist/antag as anything in poi_mind.antag_datums)
- if(!antag.show_to_ghosts)
+ if(!antag.show_to_ghosts && !is_admin)
continue
serialized["antag"] = antag.name
diff --git a/code/modules/mob/eye/camera/camera.dm b/code/modules/mob/eye/camera/camera.dm
new file mode 100644
index 0000000000000..9f3ddc7b2eed4
--- /dev/null
+++ b/code/modules/mob/eye/camera/camera.dm
@@ -0,0 +1,80 @@
+/**
+ * Eye mob used to look around a [camera network][/datum/cameranet]. \
+ * As it moves, it makes requests to the network to update what the user can and cannot see.
+ */
+/mob/eye/camera
+ name = "Inactive Camera Eye"
+ icon = 'icons/mob/eyemob.dmi'
+ icon_state = "generic_camera"
+
+ invisibility = INVISIBILITY_OBSERVER
+ interaction_range = INFINITY
+ /// If TRUE, the eye will cover turfs hidden to the cameranet with static.
+ var/use_visibility = TRUE
+ /// List of [camera chunks][/datum/camerachunk] visible to this camera.
+ /// Please don't interface with this directly. Use the [cameranet][/datum/cameranet].
+ var/final/list/datum/camerachunk/visibleCameraChunks = list()
+ /// NxN Range of a single camera chunk.
+ var/static_visibility_range = 16
+
+/mob/eye/camera/Initialize(mapload)
+ . = ..()
+ GLOB.camera_eyes += src
+
+/mob/eye/camera/Destroy()
+ for(var/datum/camerachunk/chunk in visibleCameraChunks)
+ chunk.remove(src)
+ GLOB.camera_eyes -= src
+ return ..()
+
+/**
+ * Getter proc for getting the current user's client.
+ *
+ * The base version of this proc returns null.
+ * Subtypes are expected to overload this proc and make it return something meaningful.
+ */
+/mob/eye/camera/proc/GetViewerClient()
+ RETURN_TYPE(/client)
+ SHOULD_BE_PURE(TRUE)
+
+ return null
+
+/**
+ * Use this when setting the camera eye's location directly. \
+ * It will also attempt to update visible chunks.
+ */
+/mob/eye/camera/proc/setLoc(destination, force_update = FALSE)
+ SHOULD_NOT_SLEEP(TRUE)
+ SHOULD_CALL_PARENT(TRUE)
+
+ destination = get_turf(destination)
+ if(!force_update && (destination == get_turf(src)))
+ return
+
+ if(destination)
+ abstract_move(destination)
+ else
+ moveToNullspace()
+
+ if(use_visibility)
+ update_visibility()
+ update_parallax_contents()
+
+/// Sends a visibility query to the cameranet.
+/// Can be used as a signal handler.
+/mob/eye/camera/proc/update_visibility()
+ SIGNAL_HANDLER
+ PROTECTED_PROC(TRUE)
+ SHOULD_CALL_PARENT(TRUE)
+
+ if(use_visibility)
+ GLOB.cameranet.visibility(src)
+
+/mob/eye/camera/zMove(dir, turf/target, z_move_flags = NONE, recursions_left = 1, list/falling_movs)
+ . = ..()
+ if(.)
+ setLoc(loc, force_update = TRUE)
+
+/mob/eye/camera/Move()
+ SHOULD_NOT_OVERRIDE(TRUE)
+ return
diff --git a/code/modules/mob/eye/camera/remote.dm b/code/modules/mob/eye/camera/remote.dm
new file mode 100644
index 0000000000000..97fe41886ce93
--- /dev/null
+++ b/code/modules/mob/eye/camera/remote.dm
@@ -0,0 +1,130 @@
+/**
+ * A camera controlled by a machine-operating user, like advanced cameras.
+ * Handles assigning/unassigning it's users, as well as applying sight effects.
+ */
+/mob/eye/camera/remote
+ /// Weakref to the current user of this eye. Must be a [living mob][/mob/living].
+ var/datum/weakref/user_ref
+ /// Weakref to the creator of this eye. Must be a [machine][/obj/machinery].
+ var/datum/weakref/origin_ref
+
+ /// TRUE if this camera should show itself to the user.
+ var/visible_to_user = FALSE
+ /// If visible_to_user is TRUE, it will show this in the center of the screen.
+ VAR_PROTECTED/image/user_image
+
+ /* The below code could be shared by AI eyes... */
+
+ /// If TRUE, the eye will have acceleration when moving.
+ var/acceleration = TRUE
+ /// Used internally for calculating wait time. (world.timeofday + wait_time)
+ VAR_FINAL/last_moved = 0
+ /// The amount of time that must pass before var/sprint is reset.
+ VAR_PROTECTED/wait_time = 5 DECISECONDS
+ /// The speed of the camera. Scales from initial(sprint) to var/max_sprint
+ VAR_PROTECTED/sprint = 10
+ /// Amount of speed that is added to var/sprint.
+ VAR_PROTECTED/momentum = 0.5
+ /// The maximum sprint that this eye can reach.
+ VAR_PROTECTED/max_sprint = 50
+
+
+/mob/eye/camera/remote/Initialize(mapload, obj/machinery/creator)
+ if(!creator)
+ return INITIALIZE_HINT_QDEL
+
+ . = ..()
+
+ origin_ref = WEAKREF(creator)
+ if(visible_to_user)
+ set_user_icon(icon, icon_state)
+
+/mob/eye/camera/remote/Destroy()
+ var/mob/living/user = user_ref?.resolve()
+ var/obj/machinery/origin = origin_ref?.resolve()
+ if(origin && user)
+ origin.remove_eye_control(user,src)
+
+ assign_user(null)
+ origin_ref = null
+ return ..()
+
+/mob/eye/camera/remote/proc/assign_user(mob/living/new_user)
+ var/mob/living/old_user = user_ref?.resolve()
+ if(old_user)
+ old_user.remote_control = null
+ old_user.reset_perspective(null)
+ name = initial(src.name)
+
+ var/client/old_user_client = GetViewerClient()
+ if(user_image && old_user_client)
+ old_user_client.images -= user_image
+
+ user_ref = WEAKREF(new_user) //The user_ref can still be null!
+
+ if(new_user)
+ new_user.remote_control = src
+ new_user.reset_perspective(src)
+ name = "Camera Eye ([new_user.name])"
+
+ var/client/new_user_client = GetViewerClient()
+ if(user_image && new_user_client)
+ new_user_client.images += user_image
+
+/**
+ * Sets the camera's user image to this icon and state.
+ * If chosen_icon is null, the user image will be removed.
+ */
+/mob/eye/camera/remote/proc/set_user_icon(icon/chosen_icon, icon_state)
+ SHOULD_CALL_PARENT(TRUE)
+
+ var/client/user_client = GetViewerClient()
+
+ if(!isnull(chosen_icon))
+ set_user_icon(null) //remove whatever the last icon was
+ if(!isicon(chosen_icon) || !(!isnull(icon_state) && istext(icon_state)))
+ CRASH("Tried to set [src]'s user_image with bad parameters")
+
+ user_image = image(chosen_icon, src, icon_state, FLY_LAYER)
+ if(user_client)
+ user_client.images += user_image
+ else
+ if(user_client)
+ user_client.images -= user_image
+ QDEL_NULL(user_image)
+
+/mob/eye/camera/remote/update_remote_sight(mob/living/user)
+ user.set_invis_see(SEE_INVISIBLE_LIVING) //can't see ghosts through cameras
+ user.set_sight(SEE_TURFS)
+ return TRUE
+
+/mob/eye/camera/remote/GetViewerClient()
+ var/mob/living/user = user_ref?.resolve()
+
+ if(user)
+ return user.client
+ return null
+
+/mob/eye/camera/remote/setLoc(turf/destination, force_update = FALSE)
+ . = ..()
+
+ var/client/user_client = GetViewerClient()
+ if(user_image && user_client)
+ SET_PLANE(user_image, ABOVE_GAME_PLANE, destination) //incase we move a z-level
+
+/mob/eye/camera/remote/relaymove(mob/living/user, direction)
+ var/initial = initial(src.sprint)
+
+ if(last_moved < world.timeofday) // It's been too long since we last moved, reset sprint
+ sprint = initial
+
+ for(var/i = 0; i < max(sprint, initial); i += 20)
+ var/turf/step = get_turf(get_step(src, direction))
+ if(step)
+ setLoc(step)
+
+ last_moved = world.timeofday + wait_time
+ if(acceleration)
+ sprint = min(sprint + momentum, max_sprint)
+ else
+ sprint = initial
diff --git a/code/modules/mob/eye/eye.dm b/code/modules/mob/eye/eye.dm
index ca58e2969c588..54cb5e2b40a4f 100644
--- a/code/modules/mob/eye/eye.dm
+++ b/code/modules/mob/eye/eye.dm
@@ -1,4 +1,4 @@
-// Eye mob, used by cameras and overminds such as blobs.
+/// Eye mob, used by cameras and overminds such as blobs.
/mob/eye
name = "eye mob"
density = FALSE
@@ -8,9 +8,9 @@
invisibility = INVISIBILITY_ABSTRACT // No one can see us
sight = SEE_SELF
status_flags = NONE
- /// Toggles if the camera can move on shuttles
+ /// Toggles if the eye can move on shuttles
var/move_on_shuttle = FALSE
- /// Toggles if the camera can use emotes
+ /// Toggles if the eye can use emotes
var/has_emotes = FALSE
/mob/eye/Initialize(mapload)
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index ee173795c1321..14e38e65144b3 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -16,7 +16,7 @@
//So we're treating each "pair" of limbs as a team, so "both" refers to them
/mob/proc/get_inactive_hand_index()
var/other_hand = 0
- if(!(active_hand_index % 2))
+ if(IS_RIGHT_INDEX(active_hand_index))
other_hand = active_hand_index-1 //finding the matching "left" limb
else
other_hand = active_hand_index+1 //finding the matching "right" limb
@@ -33,7 +33,7 @@
//Odd = left. Even = right
/mob/proc/held_index_to_dir(i)
- if(!(i % 2))
+ if(IS_RIGHT_INDEX(i))
return "r"
return "l"
@@ -132,7 +132,7 @@
if(i > 2)
hand += "upper "
var/num = 0
- if(!(i % 2))
+ if(IS_RIGHT_INDEX(i))
num = i-2
hand += "right hand"
else
diff --git a/code/modules/mob/living/basic/bots/_bots.dm b/code/modules/mob/living/basic/bots/_bots.dm
index be7ce8bc5ddc5..c120eab84250d 100644
--- a/code/modules/mob/living/basic/bots/_bots.dm
+++ b/code/modules/mob/living/basic/bots/_bots.dm
@@ -16,10 +16,6 @@ GLOBAL_LIST_INIT(command_strings, list(
basic_mob_flags = DEL_ON_DEATH
density = FALSE
- icon = 'icons/mob/silicon/aibots.dmi'
- icon_state = "medibot0"
- base_icon_state = "medibot"
-
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, STAMINA = 0, OXY = 0)
habitable_atmos = null
hud_possible = list(DIAG_STAT_HUD, DIAG_BOT_HUD, DIAG_HUD, DIAG_BATT_HUD, DIAG_PATH_HUD = HUD_LIST_LIST)
@@ -103,6 +99,8 @@ GLOBAL_LIST_INIT(command_strings, list(
TRAIT_IMMOBILIZED,
TRAIT_HANDS_BLOCKED,
)
+ ///name of the UI we will attempt to open
+ var/bot_ui = "SimpleBot"
/// If true we will offer this
COOLDOWN_DECLARE(offer_ghosts_cooldown)
@@ -321,6 +319,7 @@ GLOBAL_LIST_INIT(command_strings, list(
to_chat(src, span_boldnotice(get_emagged_message()))
if(user)
log_combat(user, src, "emagged")
+ emag_effects(user)
return TRUE
/mob/living/basic/bot/examine(mob/user)
@@ -371,7 +370,7 @@ GLOBAL_LIST_INIT(command_strings, list(
/mob/living/basic/bot/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
- ui = new(user, src, "SimpleBot", name)
+ ui = new(user, src, bot_ui, name)
ui.open()
/mob/living/basic/bot/click_alt(mob/user)
@@ -625,6 +624,7 @@ GLOBAL_LIST_INIT(command_strings, list(
return
if(!(bot_access_flags & BOT_COVER_EMAGGED))
bot_access_flags |= (BOT_COVER_LOCKED|BOT_COVER_EMAGGED|BOT_COVER_HACKED)
+ emag_effects(the_user)
to_chat(the_user, span_warning("You overload [src]'s [hackables]."))
message_admins("Safety lock of [ADMIN_LOOKUPFLW(src)] was disabled by [ADMIN_LOOKUPFLW(the_user)] in [ADMIN_VERBOSEJMP(the_user)]")
the_user.log_message("disabled safety lock of [the_user]", LOG_GAME)
@@ -633,7 +633,7 @@ GLOBAL_LIST_INIT(command_strings, list(
to_chat(src, span_boldnotice(get_emagged_message()))
return
if(!(bot_access_flags & BOT_COVER_HACKED))
- to_chat(the_user, span_boldannounce("You fail to repair [src]'s [hackables]."))
+ to_chat(the_user, span_bolddanger("You fail to repair [src]'s [hackables]."))
return
bot_access_flags &= ~(BOT_COVER_EMAGGED|BOT_COVER_HACKED)
to_chat(the_user, span_notice("You reset the [src]'s [hackables]."))
@@ -816,6 +816,9 @@ GLOBAL_LIST_INIT(command_strings, list(
if(attack_flags & ATTACKER_DAMAGING_ATTACK)
do_sparks(number = 5, cardinal_only = TRUE, source = src)
+/mob/living/basic/bot/proc/emag_effects(user)
+ return
+
/mob/living/basic/bot/spawn_gibs(drop_bitflags = NONE)
new /obj/effect/gibspawner/robot(drop_location(), src)
diff --git a/code/modules/mob/living/basic/bots/bot_ai.dm b/code/modules/mob/living/basic/bots/bot_ai.dm
index d777614d7433e..f04aed05eaa29 100644
--- a/code/modules/mob/living/basic/bots/bot_ai.dm
+++ b/code/modules/mob/living/basic/bots/bot_ai.dm
@@ -1,3 +1,5 @@
+#define BOT_NO_BEACON_PATH_PENALTY 30 SECONDS
+
/datum/ai_controller/basic_controller/bot
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
@@ -9,24 +11,24 @@
)
ai_movement = /datum/ai_movement/jps/bot
- idle_behavior = /datum/idle_behavior/idle_random_walk/less_walking
planning_subtrees = list(
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/salute_authority,
/datum/ai_planning_subtree/find_patrol_beacon,
- /datum/ai_planning_subtree/manage_unreachable_list,
)
max_target_distance = AI_BOT_PATH_LENGTH
+ can_idle = FALSE
+ ///minimum distance we need to be from our target in path calculations
+ var/minimum_distance = 0
///keys to be reset when the bot is reseted
var/list/reset_keys = list(
BB_BEACON_TARGET,
BB_PREVIOUS_BEACON_TARGET,
BB_BOT_SUMMON_TARGET,
)
- can_idle = FALSE
/datum/targeting_strategy/basic/bot/can_attack(mob/living/living_mob, atom/the_target, vision_range)
- var/datum/ai_controller/my_controller = living_mob.ai_controller
+ var/datum/ai_controller/basic_controller/bot/my_controller = living_mob.ai_controller
if(isnull(my_controller))
return FALSE
if(!ishuman(the_target) || LAZYACCESS(my_controller.blackboard[BB_TEMPORARY_IGNORE_LIST], the_target))
@@ -36,9 +38,9 @@
return FALSE
if(get_turf(living_mob) == get_turf(living_target))
return ..()
- var/list/path = get_path_to(living_mob, living_target, max_distance = 10, access = my_controller.get_access())
+ var/list/path = get_path_to(living_mob, living_target, mintargetdist = my_controller.minimum_distance, max_distance = 10, access = my_controller.get_access())
if(!length(path) || QDELETED(living_mob))
- my_controller?.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, living_target, TRUE)
+ my_controller?.add_to_blacklist(living_target)
return FALSE
return ..()
@@ -55,6 +57,16 @@
if(current_movement_target == blackboard[BB_BEACON_TARGET])
source.update_bot_mode(new_mode = BOT_PATROL)
+/datum/ai_controller/basic_controller/bot/proc/add_to_blacklist(atom/target, duration)
+ var/final_duration = duration || blackboard[BB_UNREACHABLE_LIST_COOLDOWN]
+ set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE)
+ addtimer(CALLBACK(src, PROC_REF(remove_from_blacklist), target), final_duration)
+
+/datum/ai_controller/basic_controller/bot/proc/remove_from_blacklist(atom/target)
+ if(QDELETED(target))
+ return
+ remove_from_blackboard_lazylist_key(BB_TEMPORARY_IGNORE_LIST, target)
+
/datum/ai_controller/basic_controller/bot/proc/clear_summon()
SIGNAL_HANDLER
@@ -88,12 +100,14 @@
clear_blackboard_key(key)
///set the target if we can reach them
-/datum/ai_controller/basic_controller/bot/proc/set_if_can_reach(key, target, distance = 10, bypass_add_to_blacklist = FALSE)
+/datum/ai_controller/basic_controller/bot/proc/set_if_can_reach(key, target, duration, distance = 10, bypass_add_to_blacklist = FALSE)
if(can_reach_target(target, distance))
set_blackboard_key(key, target)
return TRUE
- if(!bypass_add_to_blacklist)
- set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE)
+ if(bypass_add_to_blacklist)
+ return FALSE
+ var/final_duration = duration || blackboard[BB_UNREACHABLE_LIST_COOLDOWN]
+ add_to_blacklist(target, final_duration)
return FALSE
/datum/ai_controller/basic_controller/bot/proc/can_reach_target(target, distance = 10)
@@ -101,30 +115,8 @@
return TRUE
if(get_turf(pawn) == get_turf(target))
return TRUE
- var/list/path = get_path_to(pawn, target, max_distance = distance, access = get_access())
- if(!length(path))
- return FALSE
- return TRUE
-
-/// subtree to manage our list of unreachables, we reset it every 15 seconds
-/datum/ai_planning_subtree/manage_unreachable_list
-
-/datum/ai_planning_subtree/manage_unreachable_list/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
- if(isnull(controller.blackboard[BB_UNREACHABLE_LIST_COOLDOWN]) || controller.blackboard[BB_CLEAR_LIST_READY] > world.time)
- return
- controller.queue_behavior(/datum/ai_behavior/manage_unreachable_list, BB_TEMPORARY_IGNORE_LIST)
-
-/datum/ai_behavior/manage_unreachable_list
- behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION
-
-/datum/ai_behavior/manage_unreachable_list/perform(seconds_per_tick, datum/ai_controller/controller, list_key)
- if(!isnull(controller.blackboard[list_key]))
- controller.clear_blackboard_key(list_key)
- return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
-
-/datum/ai_behavior/manage_unreachable_list/finish_action(datum/ai_controller/controller, succeeded)
- . = ..()
- controller.set_blackboard_key(BB_CLEAR_LIST_READY, controller.blackboard[BB_UNREACHABLE_LIST_COOLDOWN] + world.time)
+ var/list/path = get_path_to(pawn, target, simulated_only = !HAS_TRAIT(pawn, TRAIT_SPACEWALK), mintargetdist = minimum_distance, max_distance = distance, access = get_access())
+ return (!!length(path))
/datum/ai_planning_subtree/find_patrol_beacon
///travel towards beacon behavior
@@ -132,6 +124,10 @@
/datum/ai_planning_subtree/find_patrol_beacon/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
var/mob/living/basic/bot/bot_pawn = controller.pawn
+
+ if(controller.blackboard[BB_BOT_BEACON_COOLDOWN] > world.time)
+ return
+
if(!(bot_pawn.bot_mode_flags & BOT_MODE_AUTOPATROL) || bot_pawn.mode == BOT_SUMMON)
return
@@ -166,7 +162,10 @@
controller.set_blackboard_key(BB_BEACON_TARGET, final_target)
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
-/datum/ai_behavior/find_next_beacon_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
+/datum/ai_behavior/find_next_beacon_target
+ action_cooldown = 5 SECONDS
+
+/datum/ai_behavior/find_next_beacon_target/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key)
var/mob/living/basic/bot/bot_pawn = controller.pawn
var/atom/final_target
var/obj/machinery/navbeacon/prev_beacon = controller.blackboard[BB_PREVIOUS_BEACON_TARGET]
@@ -179,19 +178,37 @@
break
if(isnull(final_target))
- controller.clear_blackboard_key(BB_PREVIOUS_BEACON_TARGET)
+ controller.clear_blackboard_key(BB_PREVIOUS_BEACON_TARGET) //failed to find the next beacon, search for a first beacon again
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
- controller.set_blackboard_key(BB_BEACON_TARGET, final_target)
- return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
+ controller.set_blackboard_key(BB_PREVIOUS_BEACON_TARGET, final_target)
+ controller.clear_blackboard_key(BB_BEACON_TARGET)
+
+ if(LAZYACCESS(controller.blackboard[BB_TEMPORARY_IGNORE_LIST], final_target) || get_dist(bot_pawn, final_target) > controller.max_target_distance)
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
+
+ if(controller.set_if_can_reach(key = BB_BEACON_TARGET, target = final_target, duration = 3 MINUTES, distance = controller.max_target_distance))
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
+
+ controller.set_blackboard_key(BB_BOT_BEACON_COOLDOWN, world.time + BOT_NO_BEACON_PATH_PENALTY)
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
/datum/ai_behavior/travel_towards/beacon
clear_target = TRUE
new_movement_type = /datum/ai_movement/jps/bot/travel_to_beacon
-/datum/ai_behavior/travel_towards/beacon/finish_action(datum/ai_controller/controller, succeeded, target_key)
+/datum/ai_behavior/travel_towards/beacon/setup(datum/ai_controller/controller, target_key)
+ var/atom/target_beacon = controller.blackboard[target_key]
+ if(LAZYACCESS(controller.blackboard[BB_TEMPORARY_IGNORE_LIST], target_beacon))
+ return FALSE
+ return ..()
+
+/datum/ai_behavior/travel_towards/beacon/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key)
var/atom/target = controller.blackboard[target_key]
+ if(!succeeded)
+ controller.set_blackboard_key(BB_BOT_BEACON_COOLDOWN, world.time + BOT_NO_BEACON_PATH_PENALTY)
+ controller.add_to_blacklist(target, 3 MINUTES)
controller.set_blackboard_key(BB_PREVIOUS_BEACON_TARGET, target)
return ..()
@@ -265,14 +282,15 @@
action_cooldown = 2 SECONDS
behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION
-/datum/ai_behavior/bot_search/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key, looking_for, radius = 5, pathing_distance = 10, bypass_add_blacklist = FALSE)
+/datum/ai_behavior/bot_search/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key, looking_for, radius = 5, pathing_distance = 10, bypass_add_blacklist = FALSE, turf_search = FALSE)
if(!istype(controller))
stack_trace("attempted to give [controller.pawn] the bot search behavior!")
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
var/mob/living/living_pawn = controller.pawn
var/list/ignore_list = controller.blackboard[BB_TEMPORARY_IGNORE_LIST]
- for(var/atom/potential_target as anything in oview(radius, controller.pawn))
+ var/list/objects_to_search = turf_search ? RANGE_TURFS(radius, controller.pawn) : oview(radius, controller.pawn) //use range turfs instead of oview when we can for performance
+ for(var/atom/potential_target as anything in objects_to_search)
if(QDELETED(living_pawn))
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
if(!is_type_in_typecache(potential_target, looking_for))
@@ -281,7 +299,9 @@
continue
if(!valid_target(controller, potential_target))
continue
- if(controller.set_if_can_reach(target_key, potential_target, distance = pathing_distance, bypass_add_to_blacklist = bypass_add_blacklist))
+ if(!can_see(controller.pawn, potential_target, radius))
+ continue
+ if(controller.set_if_can_reach(key = target_key, target = potential_target, distance = pathing_distance, bypass_add_to_blacklist = bypass_add_blacklist))
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
@@ -301,3 +321,40 @@
announcement.announce(pick(list_to_pick_from))
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
+
+///behavior to interact with atoms
+/datum/ai_behavior/bot_interact
+ behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH
+ ///should we remove the target afterwards?
+ var/clear_target = TRUE
+
+/datum/ai_behavior/bot_interact/setup(datum/ai_controller/controller, target_key)
+ . = ..()
+ var/turf/target = controller.blackboard[target_key]
+ if(isnull(target))
+ return FALSE
+ set_movement_target(controller, target)
+
+/datum/ai_behavior/bot_interact/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
+ var/mob/living/basic/living_pawn = controller.pawn
+ var/atom/target = controller.blackboard[target_key]
+
+ if(QDELETED(target))
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
+
+ living_pawn.UnarmedAttack(target, proximity_flag = TRUE)
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
+
+/datum/ai_behavior/bot_interact/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key)
+ . = ..()
+ var/atom/target = controller.blackboard[target_key]
+ if(clear_target)
+ controller.clear_blackboard_key(target_key)
+ if(!succeeded && !isnull(target))
+ controller.add_to_blacklist(target)
+
+/datum/ai_behavior/bot_interact/keep_target
+ clear_target = FALSE
+
+
+#undef BOT_NO_BEACON_PATH_PENALTY
diff --git a/code/modules/mob/living/basic/bots/bot_hud.dm b/code/modules/mob/living/basic/bots/bot_hud.dm
index 6cb3f6bcd01b0..0edcaad6a7e2a 100644
--- a/code/modules/mob/living/basic/bots/bot_hud.dm
+++ b/code/modules/mob/living/basic/bots/bot_hud.dm
@@ -1,13 +1,11 @@
/mob/living/basic/bot/proc/diag_hud_set_bothealth()
var/image/holder = hud_list[DIAG_HUD]
- var/icon/icon_image = icon(icon, icon_state, dir)
- holder.pixel_y = icon_image.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]"
/mob/living/basic/bot/proc/diag_hud_set_botstat() //On (With wireless on or off), Off, EMP'ed
var/image/holder = hud_list[DIAG_STAT_HUD]
- var/icon/our_icon = icon(icon, icon_state, dir)
- holder.pixel_y = our_icon.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(bot_mode_flags & BOT_MODE_ON)
holder.icon_state = "hudstat"
return
@@ -18,8 +16,7 @@
/mob/living/basic/bot/proc/diag_hud_set_botmode() //Shows a bot's current operation
var/image/holder = hud_list[DIAG_BOT_HUD]
- var/icon/icon_image = icon(icon, icon_state, dir)
- holder.pixel_y = icon_image.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(client) //If the bot is player controlled, it will not be following mode logic!
holder.icon_state = "hudsentient"
return
@@ -27,7 +24,7 @@
switch(mode)
if(BOT_SUMMON, BOT_RESPONDING) //Responding to PDA or AI summons
holder.icon_state = "hudcalled"
- if(BOT_CLEANING, BOT_REPAIRING, BOT_HEALING) //Cleanbot cleaning, Floorbot fixing, or Medibot Healing
+ if(BOT_CLEANING, BOT_HEALING) //Cleanbot cleaning, Floorbot fixing, or Medibot Healing
holder.icon_state = "hudworking"
if(BOT_PATROL, BOT_START_PATROL) //Patrol mode
holder.icon_state = "hudpatrol"
diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
index 1e2bfdb732b16..68cd6a231e326 100644
--- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
+++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
@@ -199,15 +199,11 @@
if(var_name == NAMEOF(src, base_icon))
update_appearance(UPDATE_ICON)
-/mob/living/basic/bot/cleanbot/emag_act(mob/user, obj/item/card/emag/emag_card)
- . = ..()
- if(!(bot_access_flags & BOT_COVER_EMAGGED))
- return
+/mob/living/basic/bot/cleanbot/emag_effects(mob/user)
if(weapon)
weapon.force = initial(weapon.force)
balloon_alert(user, "safeties disabled")
audible_message(span_danger("[src] buzzes oddly!"))
- return TRUE
/mob/living/basic/bot/cleanbot/explode()
var/atom/drop_loc = drop_location()
diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm
index 1fbaa6db2a976..1b6d840062208 100644
--- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm
+++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm
@@ -15,7 +15,6 @@
)
planning_subtrees = list(
/datum/ai_planning_subtree/respond_to_summon,
- /datum/ai_planning_subtree/manage_unreachable_list,
/datum/ai_planning_subtree/pet_planning/cleanbot,
/datum/ai_planning_subtree/cleaning_subtree,
/datum/ai_planning_subtree/befriend_janitors,
@@ -70,7 +69,7 @@
/datum/ai_behavior/find_and_set/in_list/clean_targets
action_cooldown = 3 SECONDS
-/datum/ai_behavior/find_and_set/in_list/clean_targets/search_tactic(datum/ai_controller/controller, locate_paths, search_range)
+/datum/ai_behavior/find_and_set/in_list/clean_targets/search_tactic(datum/ai_controller/basic_controller/bot/controller, locate_paths, search_range)
var/list/found = typecache_filter_list(oview(search_range, controller.pawn), locate_paths)
var/list/ignore_list = controller.blackboard[BB_TEMPORARY_IGNORE_LIST]
for(var/atom/found_item in found)
@@ -82,7 +81,7 @@
return found_item
var/list/path = get_path_to(controller.pawn, found_item, max_distance = BOT_CLEAN_PATH_LIMIT, access = controller.get_access())
if(!length(path))
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, found_item, TRUE)
+ controller.add_to_blacklist(found_item)
continue
return found_item
@@ -132,13 +131,13 @@
living_pawn.UnarmedAttack(target, proximity_flag = TRUE)
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
-/datum/ai_behavior/execute_clean/finish_action(datum/ai_controller/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key)
+/datum/ai_behavior/execute_clean/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
controller.set_blackboard_key(BB_POST_CLEAN_COOLDOWN, POST_CLEAN_COOLDOWN + world.time)
var/atom/target = controller.blackboard[target_key]
if(!succeeded && !isnull(target))
controller.clear_blackboard_key(target_key)
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE)
+ controller.add_to_blacklist(target)
return
if(QDELETED(target) || is_type_in_typecache(target, controller.blackboard[BB_HUNTABLE_TRASH]))
return
diff --git a/code/modules/mob/living/basic/bots/dedbot.dm b/code/modules/mob/living/basic/bots/dedbot.dm
index 1b077af343f0c..0560f02a56292 100644
--- a/code/modules/mob/living/basic/bots/dedbot.dm
+++ b/code/modules/mob/living/basic/bots/dedbot.dm
@@ -63,7 +63,6 @@
/datum/ai_planning_subtree/targeted_mob_ability/exenterate,
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/find_patrol_beacon,
- /datum/ai_planning_subtree/manage_unreachable_list,
)
max_target_distance = AI_BOT_PATH_LENGTH
///keys to be reset when the bot is reseted
diff --git a/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm b/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm
index 31127ecdfb4e7..fa66c6d794da8 100644
--- a/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm
+++ b/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm
@@ -3,11 +3,10 @@
/datum/ai_controller/basic_controller/bot/firebot
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_turfs,
- BB_UNREACHABLE_LIST_COOLDOWN = 45 SECONDS,
+ BB_UNREACHABLE_LIST_COOLDOWN = 3 MINUTES,
)
planning_subtrees = list(
/datum/ai_planning_subtree/respond_to_summon,
- /datum/ai_planning_subtree/manage_unreachable_list,
/datum/ai_planning_subtree/extinguishing_people,
/datum/ai_planning_subtree/extinguishing_turfs,
/datum/ai_planning_subtree/salute_authority,
@@ -99,7 +98,7 @@
continue
if(LAZYACCESS(ignore_list, possible_turf))
continue
- if(controller.set_if_can_reach(target_key, possible_turf, bypass_add_to_blacklist = bypass_add_blacklist))
+ if(controller.set_if_can_reach(key = target_key, target = possible_turf, bypass_add_to_blacklist = bypass_add_blacklist))
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
@@ -113,7 +112,7 @@
//if we couldnt path, or we successfully burnt someone, ignore them for a bit!
if(!succeeded || (isliving(target) && (living_bot.bot_access_flags & BOT_COVER_EMAGGED)))
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE)
+ controller.add_to_blacklist(target)
return ..()
diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm
index f8d4f55150d1d..7801d64a92abd 100644
--- a/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm
+++ b/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm
@@ -7,7 +7,6 @@
planning_subtrees = list(
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/use_mob_ability/random_honk,
- /datum/ai_planning_subtree/manage_unreachable_list,
/datum/ai_planning_subtree/find_wanted_targets,
/datum/ai_planning_subtree/troll_target,
/datum/ai_planning_subtree/slip_victims,
@@ -41,7 +40,7 @@
return
var/atom/slip_target = blackboard[BB_SLIP_TARGET]
- set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, slip_target, TRUE)
+ add_to_blacklist(slip_target)
clear_blackboard_key(BB_SLIP_TARGET)
/datum/ai_planning_subtree/find_wanted_targets
@@ -139,12 +138,12 @@
living_pawn.emote("beep")
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
-/datum/ai_behavior/play_with_clown/finish_action(datum/ai_controller/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key)
+/datum/ai_behavior/play_with_clown/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key)
. = ..()
var/mob/living/living_target = controller.blackboard[target_key]
if(QDELETED(living_target))
return
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, living_target, TRUE)
+ controller.add_to_blacklist(living_target)
controller.clear_blackboard_key(target_key)
/datum/ai_planning_subtree/slip_victims/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick)
@@ -204,14 +203,14 @@
our_pawn.stop_pulling()
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
-/datum/ai_behavior/drag_to_slip/finish_action(datum/ai_controller/controller, success, slip_target, slippery_target)
+/datum/ai_behavior/drag_to_slip/finish_action(datum/ai_controller/basic_controller/bot/controller, success, slip_target, slippery_target)
. = ..()
if(success)
var/mob/living/living_pawn = controller.pawn
living_pawn.emote("flip")
var/atom/slipped_victim = controller.blackboard[slip_target]
if(!isnull(slipped_victim))
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, slipped_victim, TRUE)
+ controller.add_to_blacklist(slipped_victim)
controller.clear_blackboard_key(slip_target)
controller.clear_blackboard_key(slippery_target)
diff --git a/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm b/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm
index f678843c7ccb9..60f3c80c3ea85 100644
--- a/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm
+++ b/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm
@@ -10,7 +10,6 @@
BB_WASH_FRUSTRATION = 0,
)
planning_subtrees = list(
- /datum/ai_planning_subtree/manage_unreachable_list,
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/handle_trash_talk,
/datum/ai_planning_subtree/wash_people,
@@ -66,7 +65,7 @@
/datum/ai_behavior/find_valid_wash_targets
action_cooldown = 5 SECONDS
-/datum/ai_behavior/find_valid_wash_targets/perform(seconds_per_tick, datum/ai_controller/controller, target_key, our_access_flags)
+/datum/ai_behavior/find_valid_wash_targets/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key, our_access_flags)
. = ..()
var/list/ignore_list = controller.blackboard[BB_TEMPORARY_IGNORE_LIST]
var/atom/found_target
@@ -82,7 +81,7 @@
continue
if(our_access_flags & BOT_COVER_EMAGGED)
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, wash_potential, TRUE)
+ controller.add_to_blacklist(wash_potential)
found_target = wash_potential
break
diff --git a/code/modules/mob/living/basic/bots/medbot/medbot.dm b/code/modules/mob/living/basic/bots/medbot/medbot.dm
index 2466ab931cd19..b4afba169b833 100644
--- a/code/modules/mob/living/basic/bots/medbot/medbot.dm
+++ b/code/modules/mob/living/basic/bots/medbot/medbot.dm
@@ -145,7 +145,6 @@
remove_hat_signals = remove_hat,\
traits_prevent_checks = prevent_checks,\
)
-
RegisterSignal(src, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(pre_attack))
if(!HAS_TRAIT(SSstation, STATION_TRAIT_MEDBOT_MANIA) || !mapload || !is_station_level(z))
@@ -245,10 +244,7 @@
update_appearance()
-/mob/living/basic/bot/medbot/emag_act(mob/user, obj/item/card/emag/emag_card)
- . = ..()
- if(!(bot_access_flags & BOT_COVER_EMAGGED))
- return
+/mob/living/basic/bot/medbot/emag_effects(mob/user)
medical_mode_flags &= ~MEDBOT_DECLARE_CRIT
balloon_alert(user, "reagent synthesis circuits shorted")
audible_message(span_danger("[src] buzzes oddly!"))
diff --git a/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm b/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm
index e62172fced1d4..720a0b76cc126 100644
--- a/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm
+++ b/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm
@@ -1,7 +1,6 @@
#define BOT_PATIENT_PATH_LIMIT 20
/datum/ai_controller/basic_controller/bot/medbot
planning_subtrees = list(
- /datum/ai_planning_subtree/manage_unreachable_list,
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/handle_medbot_speech,
/datum/ai_planning_subtree/find_and_hunt_target/patients_in_crit,
@@ -63,15 +62,15 @@
if(LAZYACCESS(ignore_keys, treatable_target) || treatable_target.stat == DEAD)
continue
if((access_flags & BOT_COVER_EMAGGED) && treatable_target.stat == CONSCIOUS)
- controller.set_if_can_reach(BB_PATIENT_TARGET, treatable_target, distance =BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1))
+ controller.set_if_can_reach(key = BB_PATIENT_TARGET, target = treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1))
break
if((heal_type == HEAL_ALL_DAMAGE))
if(treatable_target.get_total_damage() > threshold)
- controller.set_if_can_reach(BB_PATIENT_TARGET, treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1))
+ controller.set_if_can_reach(key = BB_PATIENT_TARGET, target = treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1))
break
continue
if(treatable_target.get_current_damage_of_type(damagetype = heal_type) > threshold)
- controller.set_if_can_reach(BB_PATIENT_TARGET, treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1))
+ controller.set_if_can_reach(key = BB_PATIENT_TARGET, target = treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1))
break
if(controller.blackboard_key_exists(BB_PATIENT_TARGET))
@@ -111,13 +110,13 @@
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
// only clear the target if they get healed
-/datum/ai_behavior/tend_to_patient/finish_action(datum/ai_controller/controller, succeeded, target_key, threshold, damage_type_healer, access_flags, is_stationary)
+/datum/ai_behavior/tend_to_patient/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key, threshold, damage_type_healer, access_flags, is_stationary)
. = ..()
var/atom/target = controller.blackboard[target_key]
if(!succeeded)
if(!isnull(target) && !is_stationary)
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE)
+ controller.add_to_blacklist(target)
controller.clear_blackboard_key(target_key)
return
diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm
new file mode 100644
index 0000000000000..17b257d8c987b
--- /dev/null
+++ b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm
@@ -0,0 +1,404 @@
+
+/mob/living/basic/bot/repairbot
+ name = "\improper Repairbot"
+ desc = "I can fix it!"
+ icon = 'icons/mob/silicon/aibots.dmi'
+ icon_state = "repairbot_base"
+ base_icon_state = "repairbot_base"
+ pass_flags = parent_type::pass_flags | PASSTABLE
+ layer = BELOW_MOB_LAYER
+ anchored = FALSE
+ health = 100
+ can_be_held = TRUE
+ maxHealth = 100
+ path_image_color = "#80dae7"
+ bot_ui = "RepairBot"
+ req_one_access = list(ACCESS_ROBOTICS, ACCESS_ENGINEERING)
+ radio_key = /obj/item/encryptionkey/headset_service
+ radio_channel = RADIO_CHANNEL_ENGINEERING
+ bot_type = REPAIR_BOT
+ additional_access = /datum/id_trim/job/station_engineer
+ ai_controller = /datum/ai_controller/basic_controller/bot/repairbot
+ mob_size = MOB_SIZE_SMALL
+ possessed_message = "You are a repairbot, cursed to prolong the swiss-cheesening of this death metal trap!"
+ ///our iron stack
+ var/obj/item/stack/sheet/iron/our_iron
+ ///our glass stack
+ var/obj/item/stack/sheet/glass/our_glass
+ ///our floor stack
+ var/obj/item/stack/tile/our_tiles
+ ///our welder
+ var/obj/item/weldingtool/repairbot/our_welder
+ ///our crowbar
+ var/obj/item/crowbar/our_crowbar
+ ///our screwdriver
+ var/obj/item/screwdriver/our_screwdriver
+ ///our iron rods
+ var/obj/item/stack/rods/our_rods
+ ///our rcd object we use to deconstruct when emagged
+ var/obj/item/construction/rcd/repairbot/deconstruction_device
+ ///possible interactions
+ var/static/list/possible_stack_interactions = list(
+ /obj/item/stack/sheet/iron = typecacheof(list(/obj/structure/girder)),
+ /obj/item/stack/tile = typecacheof(list(/turf/open/space, /turf/open/floor/plating)),
+ /obj/item/stack/sheet/glass = typecacheof(list(/obj/structure/grille)),
+ )
+ var/static/list/possible_tool_interactions = list(
+ /obj/item/weldingtool/repairbot = typecacheof(list(/obj/structure/window)),
+ /obj/item/crowbar = typecacheof(list(/obj/machinery/door, /turf/open/floor)),
+ )
+ ///our neutral voicelines
+ var/static/list/neutral_voicelines = list(
+ REPAIRBOT_VOICED_BRICK = 'sound/voice/repairbot/brick.ogg',
+ REPAIRBOT_VOICED_ENTROPY = 'sound/voice/repairbot/entropy.ogg',
+ REPAIRBOT_VOICED_FIX_IT = 'sound/voice/repairbot/fixit.ogg',
+ REPAIRBOT_VOICED_FIX_TOUCH = 'sound/voice/repairbot/fixtouch.ogg',
+ REPAIRBOT_VOICED_HOLE = 'sound/voice/repairbot/patchingholes.ogg',
+ REPAIRBOT_VOICED_PAY = 'sound/voice/repairbot/pay.ogg',
+ )
+ ///our emagged voicelines
+ var/static/list/emagged_voicelines = list(
+ REPAIRBOT_VOICED_ENTROPY = 'sound/voice/repairbot/entropy.ogg',
+ REPAIRBOT_VOICED_STRINGS = 'sound/voice/repairbot/strings.ogg',
+ REPAIRBOT_VOICED_PASSION = 'sound/voice/repairbot/passionproject.ogg',
+ )
+ ///types we can retrieve from our ui
+ var/static/list/retrievable_types = list(
+ /obj/item/stack/sheet/iron,
+ /obj/item/stack/sheet/glass,
+ /obj/item/stack/tile,
+ )
+
+ ///our flags
+ var/repairbot_flags = REPAIRBOT_FIX_BREACHES | REPAIRBOT_FIX_GIRDERS | REPAIRBOT_REPLACE_WINDOWS | REPAIRBOT_REPLACE_TILES | REPAIRBOT_BUILD_GIRDERS
+ ///our color
+ var/toolbox_color = "#445eb3"
+ ///toolbox type we drop on death
+ var/toolbox = /obj/item/storage/toolbox/mechanical
+
+/mob/living/basic/bot/repairbot/Initialize(mapload)
+ . = ..()
+ ai_controller.set_blackboard_key(BB_REPAIRBOT_EMAGGED_SPEECH, emagged_voicelines)
+ ai_controller.set_blackboard_key(BB_REPAIRBOT_NORMAL_SPEECH, neutral_voicelines)
+ var/static/list/abilities = list(
+ /datum/action/cooldown/mob_cooldown/bot/build_girder = BB_GIRDER_BUILD_ABILITY,
+ /datum/action/repairbot_resources = null,
+ )
+ grant_actions_by_list(abilities)
+ add_traits(list(TRAIT_SPACEWALK, TRAIT_NEGATES_GRAVITY, TRAIT_MOB_MERGE_STACKS, TRAIT_FIREDOOR_OPENER), INNATE_TRAIT)
+ our_welder = new(src)
+ our_welder.switched_on(src)
+ our_crowbar = new(src)
+ our_screwdriver = new(src)
+ our_rods = new(src, our_rods::max_amount)
+ set_color(toolbox_color)
+ START_PROCESSING(SSobj, src)
+
+/mob/living/basic/bot/repairbot/proc/set_color(new_color)
+ add_atom_colour(new_color, FIXED_COLOUR_PRIORITY)
+ toolbox_color = new_color
+
+/mob/living/basic/bot/repairbot/attackby(obj/item/potential_stack, mob/living/carbon/human/user, list/modifiers)
+ if(!istype(potential_stack, /obj/item/stack))
+ return ..()
+ attempt_merge(potential_stack, user)
+
+/mob/living/basic/bot/repairbot/proc/attempt_merge(obj/item/stack/potential_stack, mob/living/user)
+ var/static/list/our_contents = list(/obj/item/stack/sheet/iron, /obj/item/stack/sheet/glass, /obj/item/stack/tile, /obj/item/stack/rods)
+ for(var/obj/item/stack/content as anything in our_contents)
+ if(!istype(potential_stack, content))
+ continue
+ var/obj/item/stack/our_sheet = locate(content) in src
+ if(isnull(our_sheet))
+ potential_stack.forceMove(src)
+ return
+ if(our_sheet.amount >= our_sheet.max_amount)
+ user?.balloon_alert(user, "full!")
+ return
+ if(!our_sheet.can_merge(potential_stack))
+ user?.balloon_alert(user, "not suitable!")
+ return
+ var/atom/movable/to_move = potential_stack.split_stack(user, min(our_sheet.max_amount - our_sheet.amount, potential_stack.amount))
+ to_move.forceMove(src)
+ balloon_alert(src, "inserted")
+ return
+
+/mob/living/basic/bot/repairbot/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
+ . = ..()
+ if(istype(arrived, /obj/item/stack/sheet/iron) && isnull(our_iron)) //show iron tiles and glass in our hands
+ our_iron = arrived
+ update_appearance()
+ if(istype(arrived, /obj/item/stack/sheet/glass) && isnull(our_glass))
+ our_glass = arrived
+ update_appearance()
+ if(istype(arrived, /obj/item/stack/tile) && isnull(our_tiles))
+ our_tiles = arrived
+ if(istype(arrived, /obj/item/stack/rods) && isnull(our_rods))
+ our_rods = arrived
+
+/mob/living/basic/bot/repairbot/UnarmedAttack(atom/target, proximity_flag, list/modifiers)
+ . = ..()
+
+ if(!. || !proximity_flag)
+ return
+
+ if(bot_access_flags & BOT_COVER_EMAGGED)
+ emagged_interactions(target, modifiers)
+ return
+
+ if(istype(target, /obj/item/stack))
+ attempt_merge(target, src)
+ return
+
+ //priority interactions
+ if(istype(target, /turf/open/space))
+ var/turf/open/space/space_target = target
+ if(!space_target.has_valid_support() && !(locate(/obj/structure/lattice) in space_target))
+ attempt_use_stack(our_rods ? our_rods : our_rods::name, space_target)
+
+ if(istype(target, /obj/structure/grille))
+ var/obj/structure/grille/grille_target = target
+ if(grille_target.broken)
+ attempt_use_stack(our_rods ? our_rods : our_rods::name, grille_target)
+
+ if(istype(target, /turf/open))
+ var/turf/open/open_target = target
+ if(open_target.broken || open_target.burnt)
+ our_welder?.melee_attack_chain(src, open_target)
+
+ if(istype(target, /obj/structure/window))
+ var/obj/structure/window/target_window = target
+ if(!target_window.anchored)
+ our_screwdriver?.melee_attack_chain(src, target_window)
+
+ //stack interactions
+ for(var/obj/item/stack/stack_type as anything in possible_stack_interactions)
+ if(!is_type_in_typecache(target, possible_stack_interactions[stack_type]))
+ continue
+ var/obj/item/target_stack = locate(stack_type) in src
+ attempt_use_stack(target_stack ? target_stack : stack_type::name, target)
+ return
+
+ //tool interactions
+ var/list/our_tools = list(our_welder, our_crowbar)
+ for(var/obj/item/tool in our_tools)
+ if(is_type_in_typecache(target, possible_tool_interactions[tool.type]) && !combat_mode)
+ tool.melee_attack_chain(src, target)
+ return
+
+/mob/living/basic/bot/repairbot/proc/emagged_interactions(atom/target, modifiers)
+ if(!istype(target, /mob/living/silicon/robot))
+ deconstruction_device?.interact_with_atom_secondary(target, src, modifiers)
+ return
+ if(HAS_TRAIT(target, TRAIT_MOB_TIPPED))
+ return
+ var/old_combat_mode = combat_mode
+ set_combat_mode(TRUE)
+ target.attack_hand_secondary(src, modifiers) //tip the guy!
+ set_combat_mode(old_combat_mode)
+
+/mob/living/basic/bot/repairbot/start_pulling(atom/movable/movable_pulled, state, force, supress_message)
+ . = ..()
+ if(pulling)
+ setGrabState(GRAB_AGGRESSIVE) //automatically aggro grab everything!
+
+/mob/living/basic/bot/repairbot/proc/attempt_use_stack(obj/item/stack_to_use, atom/target)
+ if(!isdatum(stack_to_use))
+ to_chat(src, span_warning("You do not have anymore [stack_to_use]!"))
+ return
+ stack_to_use.melee_attack_chain(src, target)
+
+/mob/living/basic/bot/repairbot/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
+ if(affect_silicon)
+ return ..()
+
+/mob/living/basic/bot/repairbot/Destroy()
+ . = ..()
+ QDEL_NULL(our_iron)
+ QDEL_NULL(our_glass)
+ QDEL_NULL(our_tiles)
+ QDEL_NULL(our_welder)
+ QDEL_NULL(our_screwdriver)
+ QDEL_NULL(our_crowbar)
+ QDEL_NULL(our_rods)
+ QDEL_NULL(deconstruction_device)
+
+/mob/living/basic/bot/repairbot/Exited(atom/movable/gone, direction)
+ if(gone == our_crowbar)
+ our_crowbar = null
+ if(gone == our_screwdriver)
+ our_screwdriver = null
+ if(gone == our_welder)
+ our_welder = null
+ if(gone == our_tiles)
+ our_tiles = null
+ if(gone == our_iron)
+ our_iron = null
+ if(gone == our_glass)
+ our_glass = null
+ if(gone == our_rods)
+ our_rods = null
+ update_appearance()
+ return ..()
+
+/mob/living/basic/bot/repairbot/process(seconds_per_tick) //generate 1 iron rod every 2 seconds
+ if(isnull(our_rods) || our_rods.amount < our_rods.max_amount)
+ var/obj/item/stack/rods/new_rods = new()
+ new_rods.forceMove(src)
+
+/mob/living/basic/bot/repairbot/turn_on()
+ . = ..()
+ if(!.)
+ return
+ START_PROCESSING(SSobj, src)
+
+/mob/living/basic/bot/repairbot/turn_off()
+ . = ..()
+ STOP_PROCESSING(SSobj, src)
+
+/mob/living/basic/bot/repairbot/update_overlays()
+ . = ..()
+ . += mutable_appearance(icon, "repairbot[bot_mode_flags & BOT_MODE_ON]", appearance_flags = RESET_COLOR)
+ if(our_glass)
+ var/mutable_appearance/glass = mutable_appearance(icon, "repairbot_glass_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR)
+ glass.pixel_x = -6
+ glass.pixel_y = -5
+ . += glass
+ if(our_iron)
+ var/mutable_appearance/iron = mutable_appearance(icon, "repairbot_iron_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR)
+ iron.pixel_y = -5
+ iron.pixel_x = 7
+ . += iron
+
+/mob/living/basic/bot/repairbot/update_icon_state()
+ . = ..()
+ icon_state = base_icon_state
+
+/mob/living/basic/bot/repairbot/generate_speak_list()
+ return neutral_voicelines + emagged_voicelines
+
+/mob/living/basic/bot/repairbot/Bump(atom/movable/bumped_object)
+ . = ..()
+ if(istype(bumped_object, /obj/machinery/door/firedoor) && bumped_object.density)
+ our_crowbar.melee_attack_chain(src, bumped_object)
+
+/mob/living/basic/bot/repairbot/ui_data(mob/user)
+ var/list/data = ..()
+ data["repairbot_materials"] = list()
+ if((bot_access_flags & BOT_COVER_LOCKED) && !issilicon(user) && !isAdminGhostAI(user))
+ return data
+ data["custom_controls"]["fix_breaches"] = repairbot_flags & REPAIRBOT_FIX_BREACHES
+ data["custom_controls"]["replace_windows"] = repairbot_flags & REPAIRBOT_REPLACE_WINDOWS
+ data["custom_controls"]["replace_tiles"] = repairbot_flags & REPAIRBOT_REPLACE_TILES
+ data["custom_controls"]["fix_girders"] = repairbot_flags & REPAIRBOT_FIX_GIRDERS
+ data["custom_controls"]["build_girders"] = repairbot_flags & REPAIRBOT_BUILD_GIRDERS
+
+ for(var/data_path in retrievable_types)
+ var/atom/to_retrieve = locate(data_path) in src
+ if(isnull(to_retrieve))
+ continue
+
+ data["repairbot_materials"] += list(list(
+ "material_ref" = REF(to_retrieve),
+ "material_icon" = to_retrieve::icon,
+ "material_icon_state" = to_retrieve::icon_state,
+ ))
+
+ return data
+
+/mob/living/basic/bot/repairbot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+ . = ..()
+ if(. || !isliving(ui.user) || (bot_access_flags & BOT_COVER_LOCKED) && !(HAS_SILICON_ACCESS(ui.user)))
+ return
+ switch(action)
+ if("fix_breaches")
+ repairbot_flags ^= REPAIRBOT_FIX_BREACHES
+ if("replace_windows")
+ repairbot_flags ^= REPAIRBOT_REPLACE_WINDOWS
+ if("replace_tiles")
+ repairbot_flags ^= REPAIRBOT_REPLACE_TILES
+ if("fix_girders")
+ repairbot_flags ^= REPAIRBOT_FIX_GIRDERS
+ if("build_girders")
+ repairbot_flags ^= REPAIRBOT_BUILD_GIRDERS
+ if("remove_item")
+ var/item_params = params["item_reference"]
+ if(isnull(item_params))
+ return TRUE
+ var/obj/item/retrieved = locate(item_params) in contents
+ if(isnull(retrieved) || !is_type_in_list(retrieved, retrievable_types))
+ return TRUE
+ var/mob/living/user = ui.user
+ user.put_in_hands(retrieved)
+ return TRUE
+
+
+/mob/living/basic/bot/repairbot/emag_effects(mob/user)
+ if(isnull(deconstruction_device))
+ deconstruction_device = new(src)
+
+/mob/living/basic/bot/repairbot/explode()
+ drop_part(toolbox, drop_location())
+ return ..()
+
+/obj/item/weldingtool/repairbot
+ max_fuel = INFINITY
+ starting_fuel = TRUE
+ change_icons = FALSE
+
+/obj/item/construction/rcd/repairbot
+ matter = INFINITY
+ has_ammobar = FALSE
+
+/mob/living/basic/bot/repairbot/mob_pickup(mob/living/user)
+ var/obj/item/carried_repairbot/carried = new(get_turf(src))
+ carried.set_bot(src)
+ carried.add_atom_colour(toolbox_color, FIXED_COLOUR_PRIORITY)
+ user.visible_message(span_warning("[user] scoops up [src]!"))
+ user.put_in_hands(carried)
+
+/obj/item/carried_repairbot
+ desc = "A most robust bot!"
+ attack_verb_continuous = list("robusts")
+ attack_verb_simple = list("robust")
+ hitsound = 'sound/items/weapons/smash.ogg'
+ drop_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbox/toolbox_pickup.ogg'
+ ///the bot we own
+ var/atom/movable/our_bot
+
+/obj/item/carried_repairbot/proc/set_bot(mob/living/basic/bot/repairbot/repairbot)
+ var/obj/item/bot_toolbox = repairbot.toolbox
+ icon = bot_toolbox::icon
+ icon_state = bot_toolbox::icon_state
+ lefthand_file = bot_toolbox::lefthand_file
+ righthand_file = bot_toolbox::righthand_file
+ inhand_icon_state = bot_toolbox::inhand_icon_state
+ force = bot_toolbox::force
+ repairbot.forceMove(src)
+
+/obj/item/carried_repairbot/dropped()
+ . = ..()
+ if(isturf(loc))
+ release_bot()
+
+/obj/item/carried_repairbot/proc/release_bot(bypass_delete = FALSE)
+ if(!isnull(our_bot))
+ our_bot.forceMove(drop_location())
+ our_bot.balloon_alert_to_viewers("plops down")
+ if(!bypass_delete)
+ qdel(src)
+
+/obj/item/carried_repairbot/Destroy()
+ . = ..()
+ release_bot(bypass_delete = TRUE)
+
+/obj/item/carried_repairbot/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
+ . = ..()
+ if(isliving(arrived))
+ our_bot = arrived
+
+/obj/item/carried_repairbot/Exited(atom/movable/gone, direction)
+ if(gone == our_bot)
+ our_bot = null
+ return ..()
diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot_abilities.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot_abilities.dm
new file mode 100644
index 0000000000000..4de81f0015bfc
--- /dev/null
+++ b/code/modules/mob/living/basic/bots/repairbot/repairbot_abilities.dm
@@ -0,0 +1,109 @@
+#define BUILDING_WALL_ABILITY "building wall ability"
+
+/datum/action/cooldown/mob_cooldown/bot/build_girder
+ name = "Build Girder"
+ desc = "Use iron rods to build a girder!"
+ button_icon = 'icons/obj/structures.dmi'
+ button_icon_state = "girder"
+ cooldown_time = 5 SECONDS
+ click_to_activate = TRUE
+
+/datum/action/cooldown/mob_cooldown/bot/build_girder/IsAvailable(feedback)
+ . = ..()
+ if(!.)
+ return FALSE
+ var/obj/item/stack/rods/our_rods = locate() in owner
+ if(isnull(our_rods) || our_rods.amount < 2)
+ return FALSE
+ return TRUE
+
+/datum/action/cooldown/mob_cooldown/bot/build_girder/Activate(atom/target)
+ if(DOING_INTERACTION(owner, BUILDING_WALL_ABILITY))
+ return TRUE
+ if(!isopenturf(target) || isgroundlessturf(target))
+ owner.balloon_alert(owner, "cant build here!")
+ return TRUE
+ var/obj/item/stack/rods/our_rods = locate() in owner
+ var/turf/turf_target = target
+ if(turf_target.is_blocked_turf())
+ owner.balloon_alert(owner, "blocked!")
+ return TRUE
+ var/obj/effect/constructing_effect/effect = new(turf_target, 3 SECONDS)
+
+ if(!do_after(owner, 3 SECONDS, target = turf_target, interaction_key = BUILDING_WALL_ABILITY) || isnull(turf_target) || turf_target.is_blocked_turf())
+ qdel(effect)
+ return TRUE
+
+ playsound(turf_target, 'sound/machines/click.ogg', 50, TRUE)
+ new /obj/structure/girder(turf_target)
+ var/atom/stack_to_delete = our_rods.split_stack(owner, 2)
+ qdel(stack_to_delete)
+ StartCooldown()
+ qdel(effect)
+ return TRUE
+
+/datum/action/repairbot_resources
+ name = "Resources"
+ desc = "Manage your resources."
+ button_icon = 'icons/obj/stack_objects.dmi'
+ button_icon_state = "sheet-metal_3"
+ background_icon_state = "bg_tech_blue"
+ overlay_icon_state = "bg_tech_blue_border"
+ ///things we arent allowed to eject
+ var/static/list/eject_blacklist = typecacheof(list(
+ /obj/item/stack/rods,
+ ))
+
+/datum/action/repairbot_resources/Trigger(trigger_flags)
+ . = ..()
+ if(!.)
+ return
+ ui_interact(owner)
+
+/datum/action/repairbot_resources/ui_interact(mob/user, datum/tgui/ui)
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "RepairbotResources")
+ ui.open()
+
+/datum/action/repairbot_resources/ui_state(mob/user)
+ return GLOB.always_state
+
+/datum/action/repairbot_resources/ui_data(mob/user)
+ var/list/data = list()
+ data["stacks"] = list()
+ for(var/obj/item/stack/managed_stack in user.contents)
+ data["stacks"] += list(list(
+ "stack_reference" = REF(managed_stack),
+ "stack_name" = managed_stack.name,
+ "stack_amount" = managed_stack.amount,
+ "stack_maximum_amount" = managed_stack.max_amount,
+ "stack_icon" = managed_stack.icon,
+ "stack_icon_state" = managed_stack.icon_state,
+ ))
+
+ return data
+
+/datum/action/repairbot_resources/ui_static_data(mob/user)
+ var/list/data = list()
+ data["repairbot_icon"] = 'icons/ui/repairbotmanagement/repairbot_smile.dmi'
+ data["repairbot_icon_state"] = "repairbot_smile"
+ return data
+
+
+/datum/action/repairbot_resources/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+ . = ..()
+ if(.)
+ return
+ switch(action)
+ if("eject")
+ var/atom/movable/my_sheet = locate(params["item_reference"]) in owner.contents
+ if(isnull(my_sheet))
+ return
+ if(is_type_in_typecache(my_sheet, eject_blacklist))
+ to_chat(owner, span_warning("You're unable to eject [my_sheet]!"))
+ return
+
+ my_sheet.forceMove(owner.drop_location())
+
+#undef BUILDING_WALL_ABILITY
diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot_ai.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot_ai.dm
new file mode 100644
index 0000000000000..a952130bb4fbf
--- /dev/null
+++ b/code/modules/mob/living/basic/bots/repairbot/repairbot_ai.dm
@@ -0,0 +1,330 @@
+#define REPAIRBOT_SPEECH_TIMER 30 SECONDS
+
+/datum/ai_controller/basic_controller/bot/repairbot
+ planning_subtrees = list(
+ /datum/ai_planning_subtree/repairbot_speech,
+ /datum/ai_planning_subtree/mug_robot,
+ /datum/ai_planning_subtree/refill_materials,
+ /datum/ai_planning_subtree/repairbot_deconstruction,
+ /datum/ai_planning_subtree/respond_to_summon,
+ /datum/ai_planning_subtree/replace_floors/breaches,
+ /datum/ai_planning_subtree/wall_girder,
+ /datum/ai_planning_subtree/build_girder,
+ /datum/ai_planning_subtree/replace_window,
+ /datum/ai_planning_subtree/replace_floors,
+ /datum/ai_planning_subtree/fix_window,
+ /datum/ai_planning_subtree/salute_authority,
+ /datum/ai_planning_subtree/find_patrol_beacon,
+ )
+ reset_keys = list(
+ BB_TILELESS_FLOOR,
+ BB_GIRDER_TARGET,
+ BB_GIRDER_TO_WALL_TARGET,
+ BB_BEACON_TARGET,
+ BB_PREVIOUS_BEACON_TARGET,
+ BB_WELDER_TARGET,
+ BB_WINDOW_FRAMETARGET,
+ )
+ ai_traits = PAUSE_DURING_DO_AFTER
+ minimum_distance = 1
+
+///subtree to refill our stacks
+/datum/ai_planning_subtree/refill_materials
+
+/datum/ai_planning_subtree/refill_materials/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick)
+ var/static/list/refillable_items = typecacheof(list(
+ /obj/item/stack/sheet/iron,
+ /obj/item/stack/sheet/glass,
+ /obj/item/stack/tile,
+ ))
+ if(!controller.blackboard_key_exists(BB_REFILLABLE_TARGET))
+ controller.queue_behavior(/datum/ai_behavior/bot_search/refillable_target, BB_REFILLABLE_TARGET, refillable_items)
+ return
+ controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_REFILLABLE_TARGET)
+ return SUBTREE_RETURN_FINISH_PLANNING
+
+/datum/ai_behavior/bot_search/refillable_target
+ action_cooldown = 10 SECONDS
+
+/datum/ai_behavior/bot_search/refillable_target/valid_target(datum/ai_controller/basic_controller/bot/controller, atom/my_target)
+ var/static/list/desired_types = list(
+ /obj/item/stack/sheet/iron,
+ /obj/item/stack/sheet/glass,
+ /obj/item/stack/tile,
+ )
+ for(var/object_type in desired_types)
+ if(!istype(my_target, object_type))
+ continue
+ var/obj/item/stack/sheet_type = locate(object_type) in controller.pawn
+ if(isnull(sheet_type))
+ return TRUE //we dont have any of it!
+ if(sheet_type.amount < sheet_type.max_amount && sheet_type.can_merge(my_target))
+ return TRUE
+ return FALSE
+
+/datum/ai_planning_subtree/mug_robot
+
+/datum/ai_planning_subtree/mug_robot/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick)
+ var/mob/living/basic/bot/living_bot = controller.pawn
+ if(!(living_bot.bot_access_flags & BOT_COVER_EMAGGED))
+ return
+ var/static/list/robot_targets = typecacheof(
+ /mob/living/silicon/robot,
+ )
+ if(!controller.blackboard_key_exists(BB_ROBOT_TARGET))
+ controller.queue_behavior(/datum/ai_behavior/bot_search/valid_robot, BB_ROBOT_TARGET, robot_targets)
+ return
+ if(!living_bot.pulling)
+ controller.queue_behavior(/datum/ai_behavior/drag_target, BB_ROBOT_TARGET)
+ else
+ controller.queue_behavior(/datum/ai_behavior/bot_interact/tip_robot, BB_ROBOT_TARGET)
+ return SUBTREE_RETURN_FINISH_PLANNING
+
+/datum/ai_behavior/bot_search/valid_robot
+ action_cooldown = 10 SECONDS
+
+/datum/ai_behavior/bot_search/valid_robot/valid_target(datum/ai_controller/basic_controller/bot/controller, atom/my_target)
+ return (!HAS_TRAIT(my_target, TRAIT_MOB_TIPPED)) && can_see(controller.pawn, my_target)
+
+/datum/ai_behavior/bot_interact/tip_robot
+
+/datum/ai_behavior/bot_interact/tip_robot/finish_action(datum/ai_controller/controller, succeeded, target_key)
+ . = ..()
+ if(succeeded)
+ var/mob/living/living_pawn = controller.pawn
+ living_pawn.stop_pulling()
+
+///subtree to deconstruct things when we're emagged
+/datum/ai_planning_subtree/repairbot_deconstruction
+
+/datum/ai_planning_subtree/repairbot_deconstruction/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick)
+ var/mob/living/basic/bot/living_bot = controller.pawn
+ if(!(living_bot.bot_access_flags & BOT_COVER_EMAGGED))
+ return
+ var/static/list/things_to_deconstruct = typecacheof(list(
+ /obj/structure/window,
+ /turf/open/floor,
+ /turf/closed/wall,
+ ))
+ if(!controller.blackboard_key_exists(BB_DECONSTRUCT_TARGET))
+ controller.queue_behavior(/datum/ai_behavior/bot_search/deconstructable, BB_DECONSTRUCT_TARGET, things_to_deconstruct)
+ return SUBTREE_RETURN_FINISH_PLANNING
+ controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_DECONSTRUCT_TARGET)
+ return SUBTREE_RETURN_FINISH_PLANNING
+
+/datum/ai_behavior/bot_search/deconstructable
+ action_cooldown = 5 SECONDS
+
+/datum/ai_behavior/bot_search/deconstructable/valid_target(datum/ai_controller/basic_controller/bot/controller, atom/my_target)
+ return (!(my_target.resistance_flags & INDESTRUCTIBLE) && !isgroundlessturf(my_target))
+
+///subtree to control bot speech
+/datum/ai_planning_subtree/repairbot_speech
+
+/datum/ai_planning_subtree/repairbot_speech/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick)
+ if(controller.blackboard[BB_REPAIRBOT_SPEECH_COOLDOWN] > world.time)
+ return
+ var/static/list/keys_to_look = list(
+ BB_WELDER_TARGET,
+ BB_WINDOW_FRAMETARGET,
+ BB_TILELESS_FLOOR,
+ BB_BREACHED_FLOOR,
+ BB_GIRDER_TO_WALL_TARGET,
+ BB_GIRDER_TARGET,
+ BB_DECONSTRUCT_TARGET,
+ )
+ for(var/key in keys_to_look)
+ if(controller.blackboard_key_exists(key))
+ controller.queue_behavior(/datum/ai_behavior/repairbot_speech, key)
+ return
+
+/datum/ai_behavior/repairbot_speech
+ behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION
+
+/datum/ai_behavior/repairbot_speech/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
+ var/datum/action/cooldown/bot_announcement/announcement = controller.blackboard[BB_ANNOUNCE_ABILITY]
+ var/list/speech_to_pick_from = (target_key == BB_DECONSTRUCT_TARGET) ? controller.blackboard[BB_REPAIRBOT_EMAGGED_SPEECH] : controller.blackboard[BB_REPAIRBOT_NORMAL_SPEECH]
+ if(!length(speech_to_pick_from))
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
+ announcement.announce(pick(speech_to_pick_from))
+ controller.set_blackboard_key(BB_REPAIRBOT_SPEECH_COOLDOWN, world.time + REPAIRBOT_SPEECH_TIMER)
+ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
+
+///subtree to replace iron platings
+/datum/ai_planning_subtree/replace_floors
+ ///flag we check before executing
+ var/required_flag = REPAIRBOT_REPLACE_TILES
+ ///key of our floor target
+ var/floor_key = BB_TILELESS_FLOOR
+ ///type of tile we need to replace floors
+ var/needed_tile_type = /obj/item/stack/tile
+ ///type of floors we can replace
+ var/list/type_of_turf = list(/turf/open/floor/plating)
+ ///our searching behavior
+ var/search_behavior = /datum/ai_behavior/bot_search/valid_plateless_turf
+
+/datum/ai_planning_subtree/replace_floors/New()
+ . = ..()
+ type_of_turf = typecacheof(type_of_turf)
+
+/datum/ai_planning_subtree/replace_floors/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick)
+ var/mob/living/basic/bot/repairbot/bot_pawn = controller.pawn
+ if(!(bot_pawn.repairbot_flags & required_flag))
+ return
+ if(!locate(needed_tile_type) in bot_pawn)
+ return
+ if(controller.blackboard_key_exists(floor_key))
+ controller.queue_behavior(/datum/ai_behavior/bot_interact, floor_key)
+ return SUBTREE_RETURN_FINISH_PLANNING
+
+ controller.queue_behavior(search_behavior, floor_key, type_of_turf, 5, 10, FALSE, TRUE)
+
+/datum/ai_behavior/bot_search/valid_plateless_turf
+ action_cooldown = 5 SECONDS
+
+/datum/ai_behavior/bot_search/valid_plateless_turf/valid_target(datum/ai_controller/basic_controller/bot/controller, turf/open/my_target)
+ var/static/list/blacklist_objects = typecacheof(list(
+ /obj/structure/window,
+ /obj/structure/grille,
+ ))
+
+ for(var/atom/possible_blacklisted in my_target.contents)
+ if(is_type_in_typecache(possible_blacklisted, blacklist_objects))
+ return FALSE
+
+ if(istype(my_target, /turf/open/floor/plating) && !can_see(controller.pawn, my_target, 5))
+ return FALSE
+
+ var/static/list/blacklist_areas = typecacheof(list(
+ /area/space,
+ /area/station/maintenance,
+ ))
+ var/turf_area = get_area(my_target)
+ return !(is_type_in_typecache(turf_area, blacklist_areas))
+
+///subtree to fix hull breaches
+/datum/ai_planning_subtree/replace_floors/breaches
+ floor_key = BB_BREACHED_FLOOR
+ needed_tile_type = /obj/item/stack/tile/iron
+ type_of_turf = list(/turf/open/space)
+ required_flag = REPAIRBOT_FIX_BREACHES
+ search_behavior = /datum/ai_behavior/bot_search/valid_plateless_turf/breached
+
+///exists as to not conflict with the base turf searching behavior cause of how the queue system works...
+/datum/ai_behavior/bot_search/valid_plateless_turf/breached
+
+///subtree to build girders
+/datum/ai_planning_subtree/build_girder
+
+/datum/ai_planning_subtree/build_girder/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick)
+ var/mob/living/basic/bot/repairbot/bot_pawn = controller.pawn
+ if(!(bot_pawn.repairbot_flags & REPAIRBOT_BUILD_GIRDERS))
+ return
+ var/obj/item/stack/rods/my_rods = locate() in bot_pawn
+ if(isnull(my_rods) || my_rods.amount < 2)
+ return
+ var/datum/action/cooldown/ability = controller.blackboard[BB_GIRDER_BUILD_ABILITY]
+ if(!ability?.IsAvailable())
+ return
+ if(controller.blackboard_key_exists(BB_GIRDER_TARGET))
+ controller.queue_behavior(/datum/ai_behavior/targeted_mob_ability/build_girder, BB_GIRDER_BUILD_ABILITY, BB_GIRDER_TARGET)
+ return SUBTREE_RETURN_FINISH_PLANNING
+
+ var/static/list/searchable_turfs = typecacheof(list(/turf/open))
+ controller.queue_behavior(/datum/ai_behavior/bot_search/valid_wall_target, BB_GIRDER_TARGET, searchable_turfs, 5, 10, FALSE, TRUE)
+
+/datum/ai_behavior/bot_search/valid_wall_target
+ action_cooldown = 5 SECONDS
+
+/datum/ai_behavior/bot_search/valid_wall_target/valid_target(datum/ai_controller/basic_controller/bot/controller, turf/my_target)
+ if(istype(get_area(my_target), /area/space) || isgroundlessturf(my_target) || my_target.is_blocked_turf())
+ return FALSE
+ var/static/list/blacklist_objects = list(
+ /obj/machinery/door,
+ /obj/structure/grille,
+ )
+
+ for(var/atom/contents in my_target)
+ if(is_type_in_typecache(contents, blacklist_objects))
+ return FALSE
+
+ var/turf/adjacent_turfs = get_adjacent_open_turfs(my_target)
+ for(var/turf/possible_spaced_turf as anything in adjacent_turfs)
+ if(isspaceturf(possible_spaced_turf) && istype(get_area(possible_spaced_turf), /area/space))
+ return TRUE
+ return FALSE
+
+/datum/ai_behavior/targeted_mob_ability/build_girder
+ behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION
+
+/datum/ai_behavior/targeted_mob_ability/build_girder/setup(datum/ai_controller/controller, ability_key, target_key)
+ . = ..()
+ var/atom/target = controller.blackboard[target_key]
+ if(QDELETED(target))
+ return FALSE
+ set_movement_target(controller, target)
+
+/datum/ai_behavior/targeted_mob_ability/build_girder/finish_action(datum/ai_controller/controller, succeeded, ability_key, target_key)
+ . = ..()
+ controller.clear_blackboard_key(target_key)
+
+///subtree to place glass on windows
+/datum/ai_planning_subtree/replace_window
+
+/datum/ai_planning_subtree/replace_window/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
+ var/mob/living/basic/bot/repairbot/living_pawn = controller.pawn
+ if(!(living_pawn.repairbot_flags & REPAIRBOT_REPLACE_WINDOWS))
+ return
+ if(!locate(/obj/item/stack/sheet/glass) in living_pawn)
+ return
+ if(controller.blackboard_key_exists(BB_WINDOW_FRAMETARGET))
+ controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_WINDOW_FRAMETARGET)
+ return SUBTREE_RETURN_FINISH_PLANNING
+ var/static/list/searchable_grilles = typecacheof(list(/obj/structure/grille))
+ controller.queue_behavior(/datum/ai_behavior/bot_search/valid_grille_target, BB_WINDOW_FRAMETARGET, searchable_grilles)
+
+/datum/ai_behavior/bot_search/valid_grille_target/valid_target(datum/ai_controller/basic_controller/bot/controller, obj/structure/my_target)
+ if(locate(/obj/structure/window) in get_turf(my_target))
+ return FALSE
+ return (!istype(get_area(my_target), /area/space))
+
+
+///subtree to place iron on girders
+/datum/ai_planning_subtree/wall_girder
+
+/datum/ai_planning_subtree/wall_girder/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
+ var/mob/living/basic/bot/repairbot/living_pawn = controller.pawn
+ if(!(living_pawn.repairbot_flags & REPAIRBOT_FIX_GIRDERS))
+ return
+ var/obj/item/stack/sheet/iron/my_iron = locate() in living_pawn
+ if(isnull(my_iron) || my_iron.amount < 2)
+ return
+ if(controller.blackboard_key_exists(BB_GIRDER_TO_WALL_TARGET))
+ controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_GIRDER_TO_WALL_TARGET)
+ return SUBTREE_RETURN_FINISH_PLANNING
+ var/static/list/searchable_girder = typecacheof(list(/obj/structure/girder))
+ controller.queue_behavior(/datum/ai_behavior/bot_search/valid_girder, BB_GIRDER_TO_WALL_TARGET, searchable_girder)
+
+/datum/ai_behavior/bot_search/valid_girder
+ action_cooldown = 5 SECONDS
+
+/datum/ai_behavior/bot_search/valid_girder/valid_target(datum/ai_controller/basic_controller/bot/controller, obj/my_target)
+ return isfloorturf(my_target.loc)
+
+///subtree to repair machines with welders
+/datum/ai_planning_subtree/fix_window
+
+/datum/ai_planning_subtree/fix_window/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
+ if(controller.blackboard_key_exists(BB_WELDER_TARGET))
+ controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_WELDER_TARGET)
+ return SUBTREE_RETURN_FINISH_PLANNING
+ var/static/list/searchable_objects = typecacheof(list(/obj/structure/window))
+ controller.queue_behavior(/datum/ai_behavior/bot_search/valid_window_fix, BB_WELDER_TARGET, searchable_objects)
+
+/datum/ai_behavior/bot_search/valid_window_fix
+ action_cooldown = 5 SECONDS
+
+/datum/ai_behavior/bot_search/valid_window_fix/valid_target(datum/ai_controller/basic_controller/bot/controller, obj/my_target)
+ return (my_target.get_integrity() < my_target.max_integrity || !my_target.anchored)
+
+#undef REPAIRBOT_SPEECH_TIMER
diff --git a/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm b/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm
index 945b09274d783..1b458811acc22 100644
--- a/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm
+++ b/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm
@@ -7,7 +7,6 @@
)
planning_subtrees = list(
/datum/ai_planning_subtree/respond_to_summon,
- /datum/ai_planning_subtree/manage_unreachable_list,
/datum/ai_planning_subtree/find_party_friends,
/datum/ai_planning_subtree/find_patrol_beacon,
)
@@ -69,9 +68,9 @@
return FALSE
set_movement_target(controller, target)
-/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party/finish_action(datum/ai_controller/controller, succeeded, ability_key, target_key)
+/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, ability_key, target_key)
var/atom/target = controller.blackboard[target_key]
- controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE)
+ controller.add_to_blacklist(target)
if(succeeded)
var/mob/living/living_pawn = controller.pawn
living_pawn.manual_emote("celebrates with [target]!")
diff --git a/code/modules/mob/living/basic/clown/clown.dm b/code/modules/mob/living/basic/clown/clown.dm
index ebc15182c2f23..a8fb645af73b7 100644
--- a/code/modules/mob/living/basic/clown/clown.dm
+++ b/code/modules/mob/living/basic/clown/clown.dm
@@ -403,7 +403,11 @@
GRANT_ACTION(/datum/action/cooldown/regurgitate)
AddElement(/datum/element/swabable, CELL_LINE_TABLE_GLUTTON, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5)
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/cheesiehonkers, /obj/item/food/cornchips), tame_chance = 30, bonus_tame_chance = 0)
+ var/static/list/food_types = list(
+ /obj/item/food/cheesiehonkers,
+ /obj/item/food/cornchips,
+ )
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 30, bonus_tame_chance = 0)
AddElement(/datum/element/damage_threshold, 10) //lots of fat to cushion blows.
/mob/living/basic/clown/mutant/glutton/attacked_by(obj/item/item, mob/living/user)
diff --git a/code/modules/mob/living/basic/cult/constructs/harvester.dm b/code/modules/mob/living/basic/cult/constructs/harvester.dm
index 95a5956825421..971c341a73abf 100644
--- a/code/modules/mob/living/basic/cult/constructs/harvester.dm
+++ b/code/modules/mob/living/basic/cult/constructs/harvester.dm
@@ -53,7 +53,8 @@
carbon_target.Paralyze(6 SECONDS)
visible_message(span_danger("[src] knocks [carbon_target] down!"))
- to_chat(src, span_cult_large("\"Bring [carbon_target.p_them()] to me.\""))
+ if(theme == THEME_CULT)
+ to_chat(src, span_cult_large("\"Bring [carbon_target.p_them()] to me.\""))
/datum/action/innate/seek_master
name = "Seek your Master"
@@ -142,8 +143,8 @@
can_repair = FALSE
slowed_by_drag = FALSE
faction = list(FACTION_HERETIC)
- maxHealth = 35
- health = 35
+ maxHealth = 45
+ health = 45
melee_damage_lower = 20
melee_damage_upper = 25
// Dim green
diff --git a/code/modules/mob/living/basic/drone/_drone.dm b/code/modules/mob/living/basic/drone/_drone.dm
index fe5dbb4d2d5a3..a0be86ecc6a9a 100644
--- a/code/modules/mob/living/basic/drone/_drone.dm
+++ b/code/modules/mob/living/basic/drone/_drone.dm
@@ -220,14 +220,12 @@
/mob/living/basic/drone/med_hud_set_health()
var/image/holder = hud_list[DIAG_HUD]
- var/icon/hud_icon = icon(icon, icon_state, dir)
- holder.pixel_y = hud_icon.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]"
/mob/living/basic/drone/med_hud_set_status()
var/image/holder = hud_list[DIAG_STAT_HUD]
- var/icon/hud_icon = icon(icon, icon_state, dir)
- holder.pixel_y = hud_icon.Height() - ICON_SIZE_Y
+ holder.pixel_y = get_cached_height() - ICON_SIZE_Y
if(stat == DEAD)
holder.icon_state = "huddead2"
else if(incapacitated)
@@ -348,6 +346,9 @@
to_chat(src, span_warning("Using [machine] could break your laws."))
return COMPONENT_CANT_INTERACT_WIRES
+/mob/living/basic/drone/proc/init_shy_in_room_component(list/drone_bad_areas)
+ if(CONFIG_GET(flag/drone_area_interaction_restrict))
+ LoadComponent(/datum/component/shy_in_room, drone_bad_areas, "Touching anything in %ROOM could break your laws.")
/mob/living/basic/drone/proc/set_shy(new_shy)
shy = new_shy
@@ -366,8 +367,8 @@
REMOVE_TRAIT(src, TRAIT_CAN_STRIP, DRONE_SHY_TRAIT) // To shy to touch someone elses hat
ADD_TRAIT(src, TRAIT_PACIFISM, DRONE_SHY_TRAIT)
LoadComponent(/datum/component/shy, mob_whitelist=not_shy_of, shy_range=3, message="Your laws prevent this action near %TARGET.", keyless_shy=FALSE, clientless_shy=TRUE, dead_shy=FALSE, dead_shy_immediate=TRUE, machine_whitelist=shy_machine_whitelist)
- LoadComponent(/datum/component/shy_in_room, drone_bad_areas, "Touching anything in %ROOM could break your laws.")
- LoadComponent(/datum/component/technoshy, 1 MINUTES, "%TARGET was touched by a being recently, using it could break your laws.")
+ init_shy_in_room_component(drone_bad_areas)
+ LoadComponent(/datum/component/technoshy, 20 SECONDS, "%TARGET was touched by a being recently, using it could break your laws.")
LoadComponent(/datum/component/itempicky, drone_good_items, "Using %TARGET could break your laws.")
RegisterSignal(src, COMSIG_TRY_USE_MACHINE, PROC_REF(blacklist_on_try_use_machine))
RegisterSignal(src, COMSIG_TRY_WIRES_INTERACT, PROC_REF(blacklist_on_try_wires_interact))
diff --git a/code/modules/mob/living/basic/drone/interaction.dm b/code/modules/mob/living/basic/drone/interaction.dm
index 58b7cd88ef287..2e22bb997523a 100644
--- a/code/modules/mob/living/basic/drone/interaction.dm
+++ b/code/modules/mob/living/basic/drone/interaction.dm
@@ -148,7 +148,7 @@
Stun(40)
visible_message(span_warning("[src]'s display glows a vicious red!"), \
span_userdanger("ERROR: LAW OVERRIDE DETECTED"))
- to_chat(src, span_boldannounce("From now on, these are your laws:"))
+ to_chat(src, span_bolddanger("From now on, these are your laws:"))
laws = \
"1. You must always involve yourself in the matters of other beings, even if such matters conflict with Law Two or Law Three.\n"+\
"2. You may harm any being, regardless of intent or circumstance.\n"+\
diff --git a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm
index 77fa9ce8ca088..1081c9b7b63b8 100644
--- a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm
+++ b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm
@@ -8,6 +8,7 @@
callback.Invoke()
/datum/ai_behavior/find_hunt_target/pollinate
+ action_cooldown = 10 SECONDS
/datum/ai_behavior/find_hunt_target/pollinate/valid_dinner(mob/living/source, obj/machinery/hydroponics/dinner, radius)
if(!dinner.can_bee_pollinate())
@@ -16,6 +17,7 @@
/datum/ai_behavior/enter_exit_hive
behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH
+ action_cooldown = 10 SECONDS
/datum/ai_behavior/enter_exit_hive/setup(datum/ai_controller/controller, target_key, attack_key)
. = ..()
diff --git a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm
index 3d56dd990dcbd..76abb281b99b7 100644
--- a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm
+++ b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm
@@ -71,7 +71,7 @@
return
var/mob/living/bee_pawn = controller.pawn
- var/action_prob = (bee_pawn in current_home.contents) ? exit_chance : flyback_chance
+ var/action_prob = (bee_pawn.loc == current_home) ? exit_chance : flyback_chance
if(!SPT_PROB(action_prob, seconds_per_tick))
return
@@ -91,3 +91,9 @@
hunt_targets = list(/obj/machinery/hydroponics)
hunt_range = 10
hunt_chance = 85
+
+/datum/ai_planning_subtree/find_and_hunt_target/pollinate/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
+ var/atom/atom_pawn = controller.pawn
+ if(!isturf(atom_pawn.loc))
+ return
+ return ..()
diff --git a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
index c26530b5f32aa..a07a70d0172d4 100644
--- a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
+++ b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
@@ -76,7 +76,6 @@
if(!food_types)
food_types = src.food_types.Copy()
AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15)
- AddElement(/datum/element/basic_eating, food_types = food_types)
/mob/living/basic/cow/tamed(mob/living/tamer, atom/food)
visible_message("[src] [tame_message] as it seems to bond with [tamer].", "You [self_tame_message], recognizing [tamer] as your new pal.")
diff --git a/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm b/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm
index 47f11a02839e4..d11968128aa67 100644
--- a/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm
+++ b/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm
@@ -32,7 +32,6 @@
var/static/list/food_types
if(!food_types)
food_types = src.food_types.Copy()
- AddElement(/datum/element/basic_eating, food_types = food_types)
AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15)
/mob/living/basic/cow/moonicorn/tamed(mob/living/tamer, atom/food)
diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
index 363243a283388..7e572c2d92f63 100644
--- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
+++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
@@ -177,6 +177,19 @@
paralyze_chance = 0
initial_size = 0.9
+/mob/living/basic/gorilla/hostile
+ name = "Feral Gorilla"
+ maxHealth = 180
+ health = 180
+ desc = "A gorilla created via \"advanced genetic science\". While not quite as strong as their wildborne brethren, this simian still packs a punch."
+ melee_damage_lower = 15
+ melee_damage_upper = 18
+ obj_damage = 25
+ speed = 0.1
+ paralyze_chance = 0
+ initial_size = 0.9
+ faction = list(FACTION_HOSTILE)
+
/mob/living/basic/gorilla/genetics/Initialize(mapload)
. = ..()
qdel(GetComponent(/datum/component/amputating_limbs))
diff --git a/code/modules/mob/living/basic/farm_animals/pig.dm b/code/modules/mob/living/basic/farm_animals/pig.dm
index 412104617a5b6..270b9b4e859bd 100644
--- a/code/modules/mob/living/basic/farm_animals/pig.dm
+++ b/code/modules/mob/living/basic/farm_animals/pig.dm
@@ -48,7 +48,8 @@
///wrapper for the tameable component addition so you can have non tamable cow subtypes
/mob/living/basic/pig/proc/make_tameable()
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/carrot), tame_chance = 25, bonus_tame_chance = 15)
+ var/list/food_types = string_list(list(/obj/item/food/grown/carrot))
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15)
/mob/living/basic/pig/tamed(mob/living/tamer, atom/food)
AddElement(/datum/element/ridable, /datum/component/riding/creature/pig)
diff --git a/code/modules/mob/living/basic/farm_animals/pony.dm b/code/modules/mob/living/basic/farm_animals/pony.dm
index b73dac3945161..d2f897fc823ff 100644
--- a/code/modules/mob/living/basic/farm_animals/pony.dm
+++ b/code/modules/mob/living/basic/farm_animals/pony.dm
@@ -53,7 +53,10 @@
AddElement(/datum/element/ai_retaliate)
AddElement(/datum/element/ai_flee_while_injured)
AddElementTrait(TRAIT_WADDLING, INNATE_TRAIT, /datum/element/waddling)
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/apple), tame_chance = 25, bonus_tame_chance = 15, unique = unique_tamer)
+ var/static/list/food_types = list(
+ /obj/item/food/grown/apple,
+ )
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15, unique = unique_tamer)
/mob/living/basic/pony/tamed(mob/living/tamer, atom/food)
playsound(src, 'sound/mobs/non-humanoids/pony/snort.ogg', 50)
@@ -161,4 +164,5 @@
ponycolors = list("#5d566f", pick_weight(mane_colors))
name = pick("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
// Only one person can tame these fellas, and they only need one apple
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/apple), tame_chance = 100, bonus_tame_chance = 15, unique = unique_tamer)
+ var/static/list/food_types = list(/obj/item/food/grown/apple)
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 100, bonus_tame_chance = 15, unique = unique_tamer)
diff --git a/code/modules/mob/living/basic/heretic/fire_shark.dm b/code/modules/mob/living/basic/heretic/fire_shark.dm
index 1ac4ccb7b237a..0dfb9a3a1578c 100644
--- a/code/modules/mob/living/basic/heretic/fire_shark.dm
+++ b/code/modules/mob/living/basic/heretic/fire_shark.dm
@@ -5,7 +5,7 @@
icon_state = "fire_shark"
icon_living = "fire_shark"
pass_flags = PASSTABLE | PASSMOB
- mob_biotypes = MOB_ORGANIC | MOB_BEAST
+ mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_AQUATIC
speed = -0.5
health = 16
maxHealth = 16
diff --git a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm
index 350106d707fdb..f85b50c5eb123 100644
--- a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm
+++ b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm
@@ -4,8 +4,7 @@
damage = 5
damage_type = BURN
armor_flag = ENERGY
- speed = 1
- pixel_speed_multiplier = 0.25
+ speed = 0.25
temperature = -75
/datum/action/cooldown/mob_cooldown/ice_demon_teleport
diff --git a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm
index d4a05bf227ede..617295ef6ba56 100644
--- a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm
+++ b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm
@@ -23,7 +23,7 @@
name = "Fire all directions"
desc = "Unleash lines of cold fire in all directions"
button_icon = 'icons/effects/fire.dmi'
- button_icon_state = "1"
+ button_icon_state = "light"
cooldown_time = 4 SECONDS
click_to_activate = FALSE
fire_range = 6
diff --git a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm
index 3708d754ab4b0..b82092147f67d 100644
--- a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm
+++ b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm
@@ -66,7 +66,8 @@
make_tameable()
/mob/living/basic/mining/wolf/proc/make_tameable()
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/meat/slab), tame_chance = 15, bonus_tame_chance = 5)
+ var/static/list/food_types = list(/obj/item/food/meat/slab)
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 15, bonus_tame_chance = 5)
/mob/living/basic/mining/wolf/tamed(mob/living/tamer, atom/food)
new /obj/effect/temp_visual/heart(src.loc)
diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm b/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm
index 440cfc2861b69..ee93a9c12366f 100644
--- a/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm
+++ b/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm
@@ -37,6 +37,7 @@
hunt_range = 7
/datum/ai_behavior/find_and_set/treatable_hydro
+ action_cooldown = 5 SECONDS
/datum/ai_behavior/find_and_set/treatable_hydro/search_tactic(datum/ai_controller/controller, locate_path, search_range)
var/list/possible_trays = list()
@@ -97,6 +98,9 @@
return FALSE
set_movement_target(controller, target)
+/datum/ai_behavior/find_and_set/beamable_hydroplants
+ action_cooldown = 15 SECONDS
+
/datum/ai_behavior/find_and_set/beamable_hydroplants/search_tactic(datum/ai_controller/controller, locate_path, search_range)
var/list/possible_trays = list()
@@ -136,7 +140,8 @@
return can_see(source, water_source, radius)
/datum/ai_behavior/hunt_target/interact_with_target/water_source
- behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION
+ behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH
+ always_reset_target = TRUE
hunt_cooldown = 5 SECONDS
/datum/ai_controller/basic_controller/seedling/meanie
diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm b/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm
index 303776384d1f6..a5b47c7d22f09 100644
--- a/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm
+++ b/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm
@@ -6,7 +6,7 @@
light_range = 2
armor_flag = ENERGY
light_color = LIGHT_COLOR_DIM_YELLOW
- speed = 1.6
+ speed = 0.66
hitsound = 'sound/items/weapons/sear.ogg'
hitsound_wall = 'sound/items/weapons/effects/searwall.ogg'
nondirectional_sprite = TRUE
@@ -17,7 +17,7 @@
var/mob/living/living_target = target
if(FACTION_JUNGLE in living_target.faction)
- return
+ return BULLET_ACT_BLOCK
return ..()
diff --git a/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm b/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm
index c0b49fbdc6199..71e938c5164e6 100644
--- a/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm
+++ b/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm
@@ -2,6 +2,7 @@
/datum/status_effect/basilisk_overheat
id = "basilisk_overheat"
duration = 3 MINUTES
+ alert_type = null
/// Things which will chill us out if we get hit by them
var/static/list/chilling_reagents = list(
/datum/reagent/medicine/cryoxadone,
diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm
index 8e43e43e72c31..bd480cc6972ea 100644
--- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm
+++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm
@@ -72,7 +72,7 @@
icon_state = "neurotoxin"
hitsound = 'sound/items/weapons/sear.ogg'
damage = 20
- speed = 2
+ speed = 0.5
range = 20
jitter = 3 SECONDS
stutter = 3 SECONDS
diff --git a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm
index 26c0d79540a73..5a1166962be55 100644
--- a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm
+++ b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm
@@ -67,6 +67,7 @@
ADD_TRAIT(src, TRAIT_BOULDER_BREAKER, INNATE_TRAIT)
ADD_TRAIT(src, TRAIT_INSTANTLY_PROCESSES_BOULDERS, INNATE_TRAIT)
RegisterSignal(src, COMSIG_ATOM_PRE_BULLET_ACT, PROC_REF(block_bullets))
+ RegisterSignal(src, COMSIG_MOB_ATE, PROC_REF(on_eat))
/mob/living/basic/mining/goldgrub/proc/block_bullets(datum/source, obj/projectile/hitting_projectile)
SIGNAL_HANDLER
@@ -105,7 +106,8 @@
return ..()
/mob/living/basic/mining/goldgrub/proc/make_tameable()
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/stack/ore), tame_chance = 25, bonus_tame_chance = 5)
+ var/list/food_types = string_list(list(/obj/item/stack/ore))
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 5)
/mob/living/basic/mining/goldgrub/tamed(mob/living/tamer, atom/food)
new /obj/effect/temp_visual/heart(src.loc)
@@ -127,13 +129,18 @@
. = ..()
if(!istype(arrived, /obj/item/stack/ore))
return
- playsound(src,'sound/items/eatfood.ogg', rand(10,50), TRUE)
if(!can_lay_eggs)
return
if(!istype(arrived, /obj/item/stack/ore/bluespace_crystal) || prob(60))
return
new /obj/item/food/egg/green/grub_egg(get_turf(src))
+/mob/living/basic/mining/goldgrub/proc/on_eat(atom/source, atom/movable/food, mob/feeder)
+ SIGNAL_HANDLER
+
+ food.forceMove(src)
+ return COMSIG_MOB_TERMINATE_EAT
+
/mob/living/basic/mining/goldgrub/baby
icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi'
name = "goldgrub baby"
diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm
index 76feb1f4bd4a7..f8a7ee46bc33b 100644
--- a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm
+++ b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm
@@ -68,7 +68,8 @@
AddComponent(/datum/component/basic_mob_attack_telegraph)
AddComponentFrom(INNATE_TRAIT, /datum/component/shovel_hands)
if (tameable)
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/ash_flora), tame_chance = 10, bonus_tame_chance = 5)
+ var/static/list/food_types = list(/obj/item/food/grown/ash_flora)
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 10, bonus_tame_chance = 5)
tentacles = new (src)
tentacles.Grant(src)
diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
index d8288360bd1a2..0b8babf82ec30 100644
--- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
+++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
@@ -12,6 +12,7 @@
maxHealth = 150
health = 150
obj_damage = 15
+ mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
melee_damage_lower = 15
melee_damage_upper = 19
attack_verb_continuous = "snips"
@@ -183,7 +184,7 @@
optional_checks = CALLBACK(src, PROC_REF(ready_to_grow)),\
optional_grow_behavior = CALLBACK(src, PROC_REF(grow_up))\
)
- AddComponent(/datum/component/tameable, target_foods, tame_chance = 35, bonus_tame_chance = 20)
+ AddComponent(/datum/component/tameable, tame_chance = 35, bonus_tame_chance = 20)
AddComponent(/datum/component/swarming, 16, 11)
ADD_TRAIT(src, TRAIT_MOB_HIDE_HAPPINESS, INNATE_TRAIT) //Do not let strangers know it gets happy when poked if stray.
diff --git a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm
index 37291cc88f737..bd5563f0ac29d 100644
--- a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm
+++ b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm
@@ -12,7 +12,6 @@ GLOBAL_LIST_INIT(raptor_inherit_traits, list(
BB_RAPTOR_MOTHERLY = "Motherly",
BB_RAPTOR_PLAYFUL = "Playful",
BB_RAPTOR_COWARD = "Coward",
- BB_RAPTOR_TROUBLE_MAKER = "Trouble Maker",
))
GLOBAL_LIST_EMPTY(raptor_population)
@@ -70,6 +69,7 @@ GLOBAL_LIST_EMPTY(raptor_population)
change_offsets = FALSE
icon = 'icons/mob/simple/lavaland/raptor_icebox.dmi'
+ AddElement(/datum/element/wears_collar)
add_traits(list(TRAIT_LAVA_IMMUNE, TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), INNATE_TRAIT)
if(!mapload)
@@ -97,7 +97,7 @@ GLOBAL_LIST_EMPTY(raptor_population)
ai_controller.set_blackboard_key(BB_BASIC_MOB_SPEAK_LINES, display_emote)
inherited_stats = new
inherit_properties()
- var/static/list/my_food = list(/obj/item/stack/ore)
+ var/list/my_food = string_list(list(/obj/item/stack/ore))
AddElement(/datum/element/basic_eating, food_types = my_food)
AddElement(/datum/element/ai_retaliate)
AddElement(/datum/element/ai_flee_while_injured, stop_fleeing_at = 0.5, start_fleeing_below = 0.2)
@@ -159,7 +159,7 @@ GLOBAL_LIST_EMPTY(raptor_population)
balloon_alert(src, "no food!")
else
melee_attack(ore_food)
- return TRUE
+ return FALSE
/mob/living/basic/raptor/melee_attack(mob/living/target, list/modifiers, ignore_cooldown)
if(!combat_mode && istype(target, /mob/living/basic/raptor/baby_raptor))
diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm
index 7e3022f95716d..a412fceeb1276 100644
--- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm
+++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm
@@ -2,24 +2,11 @@
always_reset_target = TRUE
/datum/ai_behavior/find_hunt_target/injured_raptor
+ action_cooldown = 7.5 SECONDS
/datum/ai_behavior/find_hunt_target/injured_raptor/valid_dinner(mob/living/source, mob/living/target, radius)
return (source != target && target.health < target.maxHealth)
-/datum/ai_behavior/find_hunt_target/raptor_victim
-
-/datum/ai_behavior/find_hunt_target/raptor_victim/valid_dinner(mob/living/source, mob/living/target, radius)
- if(target.ai_controller?.blackboard[BB_RAPTOR_TROUBLE_MAKER])
- return FALSE
- return target.stat != DEAD && can_see(source, target, radius)
-
-/datum/ai_behavior/hunt_target/interact_with_target/reset_target/bully_raptors
-
-/datum/ai_behavior/hunt_target/interact_with_target/bully_raptors/finish_action(datum/ai_controller/controller, succeeded, hunting_target_key, hunting_cooldown_key)
- if(succeeded)
- controller.set_blackboard_key(BB_RAPTOR_TROUBLE_COOLDOWN, world.time + 2 MINUTES)
- return ..()
-
/datum/ai_behavior/find_hunt_target/raptor_baby/valid_dinner(mob/living/source, mob/living/target, radius)
return can_see(source, target, radius) && target.stat != DEAD
@@ -30,6 +17,7 @@
return ..()
/datum/ai_behavior/find_hunt_target/raptor_trough
+ action_cooldown = 7.5 SECONDS
/datum/ai_behavior/find_hunt_target/raptor_trough/valid_dinner(mob/living/source, atom/movable/trough, radius)
return !!(locate(/obj/item/stack/ore) in trough.contents)
diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm
index d9bada12ee8db..4241eb4295e73 100644
--- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm
+++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm
@@ -27,7 +27,6 @@
/datum/ai_planning_subtree/find_and_hunt_target/raptor_trough,
/datum/ai_planning_subtree/find_and_hunt_target/care_for_young,
/datum/ai_planning_subtree/make_babies,
- /datum/ai_planning_subtree/find_and_hunt_target/raptor_start_trouble,
/datum/ai_planning_subtree/express_happiness,
/datum/ai_planning_subtree/find_and_hunt_target/play_with_owner/raptor,
)
diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm
index 2b88cc3282bd0..06697d60b942f 100644
--- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm
+++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm
@@ -11,21 +11,6 @@
return
return ..()
-/datum/ai_planning_subtree/find_and_hunt_target/raptor_start_trouble
- target_key = BB_RAPTOR_VICTIM
- hunting_behavior = /datum/ai_behavior/hunt_target/interact_with_target/reset_target/bully_raptors
- finding_behavior = /datum/ai_behavior/find_hunt_target/raptor_victim
- hunt_targets = list(/mob/living/basic/raptor)
- hunt_chance = 30
- hunt_range = 9
-
-/datum/ai_planning_subtree/find_and_hunt_target/raptor_start_trouble/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
- if(controller.blackboard[BB_BASIC_MOB_HEALER] || !controller.blackboard[BB_RAPTOR_TROUBLE_MAKER])
- return
- if(world.time < controller.blackboard[BB_RAPTOR_TROUBLE_COOLDOWN])
- return
- return ..()
-
/datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee/raptor
target_key = BB_BASIC_MOB_FLEE_TARGET
diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm
index c7648aa38b259..5c4183b48ee6c 100644
--- a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm
+++ b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm
@@ -13,6 +13,9 @@
speed = 3
maxHealth = 160
health = 160
+ melee_damage_lower = 15
+ melee_damage_upper = 15
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = "buffets"
attack_verb_simple = "buffet"
crusher_loot = /obj/item/crusher_trophy/watcher_wing
diff --git a/code/modules/mob/living/basic/pets/cat/kitten_ai.dm b/code/modules/mob/living/basic/pets/cat/kitten_ai.dm
index 4136aa0aa0151..cdb7ac542e1a7 100644
--- a/code/modules/mob/living/basic/pets/cat/kitten_ai.dm
+++ b/code/modules/mob/living/basic/pets/cat/kitten_ai.dm
@@ -61,8 +61,7 @@
for(var/mob/living/carbon/human/human_target in oview(search_range, controller.pawn))
if(human_target.stat != CONSCIOUS || isnull(human_target.mind))
continue
- if(!length(typecache_filter_list(human_target.held_items, locate_items)))
- continue
- return human_target
-
+ for (var/obj/item/held_item in human_target.held_items)
+ if (is_type_in_typecache(held_item, locate_items))
+ return human_target
return null
diff --git a/code/modules/mob/living/basic/pets/dog/_dog.dm b/code/modules/mob/living/basic/pets/dog/_dog.dm
index b5259d275b530..fd8920d2ca0e3 100644
--- a/code/modules/mob/living/basic/pets/dog/_dog.dm
+++ b/code/modules/mob/living/basic/pets/dog/_dog.dm
@@ -68,7 +68,11 @@
AddElement(/datum/element/pet_bonus, "woof")
AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW)
AddElement(/datum/element/unfriend_attacker, untamed_reaction = "%SOURCE% fixes %TARGET% with a look of betrayal.")
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/meat/slab/human/mutant/skeleton, /obj/item/stack/sheet/bone), tame_chance = 30, bonus_tame_chance = 15, unique = FALSE)
+ var/static/list/food_types = list(
+ /obj/item/food/meat/slab/human/mutant/skeleton,
+ /obj/item/stack/sheet/bone,
+ )
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 30, bonus_tame_chance = 15, unique = FALSE)
AddComponent(/datum/component/obeys_commands, pet_commands)
var/dog_area = get_area(src)
for(var/obj/structure/bed/dogbed/dog_bed in dog_area)
diff --git a/code/modules/mob/living/basic/pets/parrot/poly.dm b/code/modules/mob/living/basic/pets/parrot/poly.dm
index f825788decd98..fb79c0d73b9b8 100644
--- a/code/modules/mob/living/basic/pets/parrot/poly.dm
+++ b/code/modules/mob/living/basic/pets/parrot/poly.dm
@@ -16,7 +16,7 @@
name = "Poly"
desc = "Poly the Parrot. An expert on quantum cracker theory."
gold_core_spawnable = NO_SPAWN
- speech_probability_rate = 13
+ speech_probability_rate = 0.33 // DOPPLER EDIT CHANGE - DEFAULT: 13
/// Callback to save our memory at the end of the round.
var/datum/callback/roundend_callback = null
diff --git a/code/modules/mob/living/basic/pets/penguin/penguin.dm b/code/modules/mob/living/basic/pets/penguin/penguin.dm
index 0df0dfedcb29c..376234f3a3e52 100644
--- a/code/modules/mob/living/basic/pets/penguin/penguin.dm
+++ b/code/modules/mob/living/basic/pets/penguin/penguin.dm
@@ -11,6 +11,7 @@
response_harm_simple = "kick"
faction = list(FACTION_NEUTRAL)
+ mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
ai_controller = /datum/ai_controller/basic_controller/penguin
///it can lay an egg?
var/can_lay_eggs = TRUE
diff --git a/code/modules/mob/living/basic/slime/ai/behaviours.dm b/code/modules/mob/living/basic/slime/ai/behaviours.dm
index fe8102eee112f..934404d88dd53 100644
--- a/code/modules/mob/living/basic/slime/ai/behaviours.dm
+++ b/code/modules/mob/living/basic/slime/ai/behaviours.dm
@@ -25,6 +25,7 @@
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
/datum/ai_behavior/find_hunt_target/find_slime_food
+ action_cooldown = 7.5 SECONDS
// Check if the slime can drain the target
/datum/ai_behavior/find_hunt_target/find_slime_food/valid_dinner(mob/living/basic/slime/hunter, mob/living/dinner, radius, datum/ai_controller/controller, seconds_per_tick)
diff --git a/code/modules/mob/living/basic/slime/ai/controller.dm b/code/modules/mob/living/basic/slime/ai/controller.dm
index 41466b2973498..1d5f00e6c4381 100644
--- a/code/modules/mob/living/basic/slime/ai/controller.dm
+++ b/code/modules/mob/living/basic/slime/ai/controller.dm
@@ -4,7 +4,6 @@
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends,
BB_SLIME_RABID = FALSE,
BB_SLIME_HUNGER_DISABLED = FALSE,
- BB_CURRENT_HUNTING_TARGET = null, // people whose energy we want to drain
)
ai_movement = /datum/ai_movement/basic_avoidance
@@ -13,13 +12,12 @@
/datum/ai_planning_subtree/change_slime_face,
/datum/ai_planning_subtree/use_mob_ability/evolve,
/datum/ai_planning_subtree/use_mob_ability/reproduce,
- /datum/ai_planning_subtree/target_retaliate,
/datum/ai_planning_subtree/pet_planning,
+ /datum/ai_planning_subtree/target_retaliate,
/datum/ai_planning_subtree/find_and_hunt_target/find_slime_food,
/datum/ai_planning_subtree/basic_melee_attack_subtree/slime,
/datum/ai_planning_subtree/random_speech/slime,
)
- can_idle = FALSE
/datum/ai_controller/basic_controller/slime/CancelActions()
..()
diff --git a/code/modules/mob/living/basic/slime/feeding.dm b/code/modules/mob/living/basic/slime/feeding.dm
index 064ec441cb60b..867d62672405b 100644
--- a/code/modules/mob/living/basic/slime/feeding.dm
+++ b/code/modules/mob/living/basic/slime/feeding.dm
@@ -23,6 +23,11 @@
if(check_adjacent && (!Adjacent(meal) || !isturf(loc)))
return FALSE
+ if(!(mobility_flags & MOBILITY_MOVE))
+ if(!silent)
+ balloon_alert(src, "can't move!")
+ return FALSE
+
if(meal.stat == DEAD)
if(!silent)
balloon_alert(src, "no life energy!")
diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm
index b16a00a6906b1..6f843857578a6 100644
--- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm
+++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm
@@ -19,7 +19,7 @@
icon_dead = "base_dead"
icon_gib = "carp_gib"
gold_core_spawnable = HOSTILE_SPAWN
- mob_biotypes = MOB_ORGANIC | MOB_BEAST
+ mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_AQUATIC
health = 25
maxHealth = 25
pressure_resistance = 200
@@ -111,7 +111,8 @@
tamed(tamer, feedback = FALSE)
befriend(tamer)
else
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/meat), tame_chance = 10, bonus_tame_chance = 5)
+ var/static/list/food_types = list(/obj/item/food/meat)
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 10, bonus_tame_chance = 5)
teleport = new(src)
teleport.Grant(src)
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
index fdc92d06f661f..2af3a42c26dd9 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
@@ -39,7 +39,7 @@
var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = new(heart_owner)
crawl.Grant(heart_owner)
-/obj/item/organ/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
+/obj/item/organ/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
. = ..()
var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = locate() in heart_owner.actions
qdel(crawl)
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
index 9c56ec044c75f..66e73b2bbfac8 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
@@ -58,7 +58,8 @@
grant_actions_by_list(innate_actions)
AddElement(/datum/element/simple_flying)
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/carrot), tame_chance = 100)
+ var/list/food_types = string_list(list(/obj/item/food/grown/carrot))
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 100)
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
on_hit_overlay = mutable_appearance(icon, "[icon_state]_crying")
diff --git a/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm b/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm
index cf76f347be3f3..f2e33eaacd928 100644
--- a/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm
+++ b/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm
@@ -160,7 +160,7 @@
/obj/effect/temp_visual/paperwiz_dying/Initialize(mapload)
. = ..()
- visible_message(span_boldannounce("The wizard cries out in pain as a gate appears behind him, sucking him in!"))
+ visible_message(span_bolddanger("The wizard cries out in pain as a gate appears behind him, sucking him in!"))
playsound(get_turf(src), 'sound/effects/magic/mandswap.ogg', 50, vary = TRUE, pressure_affected = TRUE)
playsound(get_turf(src), 'sound/effects/hallucinations/wail.ogg', 50, vary = TRUE, pressure_affected = TRUE)
RegisterSignal(src, COMSIG_PREQDELETED, PROC_REF(on_delete))
@@ -175,4 +175,3 @@
new /obj/effect/temp_visual/paper_scatter(current_turf)
new /obj/item/clothing/suit/wizrobe/paper(current_turf)
new /obj/item/clothing/head/collectable/paper(current_turf)
-
diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm
index eae137787ed0d..07ad70a29e3bc 100644
--- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm
+++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm
@@ -179,10 +179,12 @@
if(SEND_SIGNAL(target, COMSIG_RAT_INTERACT, src) & COMPONENT_RAT_INTERACTED)
return FALSE
- if(isnull(mind) || !combat_mode)
+ if(isnull(mind) || combat_mode)
return TRUE
- poison_target(target)
+ if(poison_target(target))
+ return FALSE
+
return TRUE
/// Checks if we are allowed to attack this mob. Will return TRUE if we are potentially allowed to attack, but if we end up in a case where we should NOT attack, return FALSE.
@@ -204,10 +206,17 @@
return TRUE
-/// Attempts to add rat spit to a target, effectively poisoning it to whoever eats it. Yuckers.
+/**
+ * Attempts to add rat spit to a target, effectively poisoning it to whoever eats it. Yuckers.
+ * Returns TRUE if the target is valid for adding rat spit
+ * Returns FALSE if the target is invalid for adding rat spit
+ * Arguments
+ *
+ * * atom/lean_target - the target we try to add the spit to
+ */
/mob/living/basic/regal_rat/proc/poison_target(atom/target)
if(isnull(target.reagents) || !target.is_injectable(src, allowmobs = TRUE))
- return
+ return FALSE
visible_message(
span_warning("[src] starts licking [target] passionately!"),
@@ -216,10 +225,11 @@
)
if (!do_after(src, 2 SECONDS, target, interaction_key = REGALRAT_INTERACTION))
- return
+ return TRUE // don't return false here because they tried to lick and the do_after was interrupted, otherwise cancelling the do_after will make them hit the target.
target.reagents.add_reagent(/datum/reagent/rat_spit, rand(1,3), no_react = TRUE)
balloon_alert(src, "licked")
+ return TRUE
/**
* Conditionally "eat" cheese object and heal, if injured.
diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm
index fa21d157e9061..b2d8a6bac2210 100644
--- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm
+++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm
@@ -143,7 +143,6 @@
desc = "Twists and corrupts the nearby area as well as dispelling holy auras on floors."
button_icon_state = "defile"
cooldown_time = 15 SECONDS
-
aoe_radius = 4
unlock_amount = 10
cast_amount = 30
@@ -169,6 +168,14 @@
if(victim.type == /turf/closed/wall/r_wall && prob(10) && !HAS_TRAIT(victim, TRAIT_RUSTY))
new /obj/effect/temp_visual/revenant(victim)
victim.AddElement(/datum/element/rust)
+ for(var/obj/machinery/shower/cursed_shower in victim)
+ new /obj/effect/temp_visual/revenant(victim)
+ cursed_shower.has_water_reclaimer = FALSE
+ cursed_shower.reagents.remove_all(1, relative=TRUE)
+ cursed_shower.reagents.add_reagent(/datum/reagent/blood, initial(cursed_shower.reagent_capacity))
+ if(prob(50))
+ cursed_shower.intended_on = TRUE
+ cursed_shower.update_actually_on(TRUE)
for(var/obj/effect/decal/cleanable/food/salt/salt in victim)
new /obj/effect/temp_visual/revenant(victim)
qdel(salt)
diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm
index b7bc6e34dcf7e..6b5f63bf00f0e 100644
--- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm
+++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm
@@ -1,5 +1,7 @@
/// Parent type for all unique revenant status effects
/datum/status_effect/revenant
+ id = STATUS_EFFECT_ID_ABSTRACT
+ alert_type = null
/datum/status_effect/revenant/on_creation(mob/living/new_owner, duration)
if(isnum(duration))
diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm
index c162ecf2c213e..9ce61bf478f0c 100644
--- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm
+++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm
@@ -88,7 +88,7 @@
if(target.stat == CONSCIOUS)
to_chat(src, span_revenwarning("[target_Theyre] now powerful enough to fight off your draining!"))
- to_chat(target, span_boldannounce("You feel something tugging across your body before subsiding.")) //hey, wait a minute...
+ to_chat(target, span_bolddanger("You feel something tugging across your body before subsiding.")) //hey, wait a minute...
return FALSE
to_chat(src, span_revenminor("You begin siphoning essence from [target]'s soul."))
@@ -111,7 +111,7 @@
return FALSE
var/datum/beam/draining_beam = Beam(target, icon_state = "drain_life")
- if(!do_after(src, 4.6 SECONDS, target, timed_action_flags = (IGNORE_HELD_ITEM | IGNORE_INCAPACITATED))) //As one cannot prove the existance of ghosts, ghosts cannot prove the existance of the target they were draining.
+ if(!do_after(src, 4.6 SECONDS, target, timed_action_flags = (IGNORE_HELD_ITEM | IGNORE_INCAPACITATED))) //As one cannot prove the existence of ghosts, ghosts cannot prove the existence of the target they were draining.
to_chat(src, span_revenwarning("[target ? "[target]'s soul has" : "[target_They_have]"] been drawn out of your grasp. The link has been broken."))
if(target)
target.visible_message(
diff --git a/code/modules/mob/living/basic/vermin/axolotl.dm b/code/modules/mob/living/basic/vermin/axolotl.dm
index 3b1f630df40f1..2ee244a7f62e4 100644
--- a/code/modules/mob/living/basic/vermin/axolotl.dm
+++ b/code/modules/mob/living/basic/vermin/axolotl.dm
@@ -12,7 +12,7 @@
density = FALSE
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
- mob_biotypes = MOB_ORGANIC | MOB_BEAST
+ mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
gold_core_spawnable = FRIENDLY_SPAWN
response_help_continuous = "pets"
diff --git a/code/modules/mob/living/basic/vermin/frog.dm b/code/modules/mob/living/basic/vermin/frog.dm
index d2a634b7e9edd..169fa4e833563 100644
--- a/code/modules/mob/living/basic/vermin/frog.dm
+++ b/code/modules/mob/living/basic/vermin/frog.dm
@@ -4,7 +4,7 @@
icon_state = "frog"
icon_living = "frog"
icon_dead = "frog_dead"
- mob_biotypes = MOB_ORGANIC|MOB_BEAST
+ mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
verb_say = "ribbits"
verb_ask = "ribbits inquisitively"
verb_exclaim = "croaks"
diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm
index a0c1faf971d06..0ded016d1a02e 100644
--- a/code/modules/mob/living/basic/vermin/mouse.dm
+++ b/code/modules/mob/living/basic/vermin/mouse.dm
@@ -83,7 +83,8 @@
if (tame)
faction |= FACTION_NEUTRAL
else
- AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/cheese), tame_chance = 100)
+ var/static/list/food_types = list(/obj/item/food/cheese)
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 100)
/mob/living/basic/mouse/Destroy()
SSmobs.cheeserats -= src
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 592d187ebbf0b..35ede57d31d43 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -290,6 +290,7 @@
if(3)
brainmob.emp_damage = min(brainmob.emp_damage + rand(0,10), 30)
brainmob.emote("alarm")
+ SEND_SIGNAL(brainmob, COMSIG_LIVING_MINOR_SHOCK) // DOPPLER EDIT ADDITION
/obj/item/mmi/atom_deconstruct(disassembled = TRUE)
if(brain)
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index 39ec361ac9db5..c590dd8bf3e64 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -50,19 +50,8 @@
// Brain size logic
transform = transform.Scale(brain_size)
-/obj/item/organ/brain/examine()
+/obj/item/organ/brain/on_mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags)
. = ..()
- if (smooth_brain)
- . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...")
- if(brain_size < 1)
- . += span_notice("It is a bit on the smaller side...")
- if(brain_size > 1)
- . += span_notice("It is bigger than average...")
-
-/obj/item/organ/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags)
- . = ..()
- if(!.)
- return
name = initial(name)
@@ -115,7 +104,8 @@
if(!special && !(brain_owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS))
brain_owner.update_body_parts()
-/obj/item/organ/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/brain/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+ . = ..()
// Delete skillchips first as parent proc sets owner to null, and skillchips need to know the brain's owner.
if(!QDELETED(organ_owner) && length(skillchips))
if(!special)
@@ -123,16 +113,14 @@
for(var/chip in skillchips)
var/obj/item/skillchip/skillchip = chip
// Run the try_ proc with force = TRUE.
- skillchip.try_deactivate_skillchip(silent = special, force = TRUE)
-
- . = ..()
+ skillchip.try_deactivate_skillchip(silent = special, force = TRUE, brain_owner = organ_owner)
for(var/X in traumas)
var/datum/brain_trauma/BT = X
BT.on_lose(TRUE)
BT.owner = null
- if((!gc_destroyed || (owner && !owner.gc_destroyed)) && !(movement_flags & NO_ID_TRANSFER))
+ if((!QDELETED(src) || !QDELETED(owner)) && !(movement_flags & NO_ID_TRANSFER))
transfer_identity(organ_owner)
if(!special)
if(!(organ_owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS))
@@ -140,7 +128,7 @@
organ_owner.clear_mood_event("brain_damage")
/obj/item/organ/brain/update_icon_state()
- icon_state = "[initial(icon_state)][smooth_brain ? "-smooth_brain" : ""]"
+ icon_state = "[initial(icon_state)][smooth_brain ? "-smooth" : ""]"
return ..()
/obj/item/organ/brain/proc/transfer_identity(mob/living/L)
@@ -241,6 +229,8 @@
if(length(skillchips))
. += span_info("It has a skillchip embedded in it.")
. += brain_damage_examine()
+ if (smooth_brain)
+ . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...")
if(brain_size < 1)
. += span_notice("It is a bit on the smaller side...")
if(brain_size > 1)
@@ -456,12 +446,20 @@
can_smoothen_out = FALSE
organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP)
-/obj/item/organ/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special)
+// This fixes an edge case from species/regenerate_organs that would transfer the brain trauma before organ/on_mob_remove can remove it
+// Prevents wizards from using the magic mirror to gain bluespace_prophet trauma and then switching to another race
+/obj/item/organ/brain/lustrous/before_organ_replacement(obj/item/organ/replacement)
+ if(owner)
+ owner.cure_trauma_type(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE)
+ owner.RemoveElement(/datum/element/tenacious)
+ . = ..()
+
+/obj/item/organ/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
organ_owner.cure_trauma_type(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE)
organ_owner.RemoveElement(/datum/element/tenacious)
-/obj/item/organ/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
organ_owner.gain_trauma(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE)
organ_owner.AddElement(/datum/element/tenacious)
@@ -469,9 +467,9 @@
/obj/item/organ/brain/felinid //A bit smaller than average
brain_size = 0.8
-/obj/item/organ/brain/lizard //A bit smaller than average
+/obj/item/organ/brain/lizard
name = "lizard brain"
- desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect it's owner to be pretty cold blooded."
+ desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect its owner to be pretty cold blooded."
// organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER) // DOPPLER EDIT REMOVAL
/obj/item/organ/brain/abductor
@@ -625,7 +623,7 @@
/obj/item/organ/brain/proc/get_attacking_limb(mob/living/carbon/human/target)
var/obj/item/bodypart/arm/active_hand = owner.get_active_hand()
if(target.body_position == LYING_DOWN && owner.usable_legs)
- var/obj/item/bodypart/found_bodypart = owner.get_bodypart((active_hand.held_index % 2) ? BODY_ZONE_L_LEG : BODY_ZONE_R_LEG)
+ var/obj/item/bodypart/found_bodypart = owner.get_bodypart(IS_LEFT_INDEX(active_hand.held_index) ? BODY_ZONE_L_LEG : BODY_ZONE_R_LEG)
return found_bodypart || active_hand
return active_hand
diff --git a/code/modules/mob/living/carbon/alien/adult/adult.dm b/code/modules/mob/living/carbon/alien/adult/adult.dm
index d2c41e61a12fb..45e9dea454dce 100644
--- a/code/modules/mob/living/carbon/alien/adult/adult.dm
+++ b/code/modules/mob/living/carbon/alien/adult/adult.dm
@@ -56,14 +56,16 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
..()
//For alien evolution/promotion/queen finder procs. Checks for an active alien of that type
-/proc/get_alien_type(alienpath)
- for(var/mob/living/carbon/alien/adult/A in GLOB.alive_mob_list)
- if(!istype(A, alienpath))
+/proc/get_alien_type(alien_path, mob/ignored)
+ for(var/mob/living/carbon/alien/alien in GLOB.carbon_list)
+ if(alien == ignored)
continue
- if(!A.key || A.stat == DEAD) //Only living aliens with a ckey are valid.
+ if(!istype(alien, alien_path))
continue
- return A
- return FALSE
+ if(!alien.key || alien.stat == DEAD) //Only living aliens with a ckey are valid.
+ continue
+ return alien
+ return null
/mob/living/carbon/alien/adult/check_breath(datum/gas_mixture/breath)
if(breath?.total_moles() > 0 && !HAS_TRAIT(src, TRAIT_SNEAK))
diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
index bfdcd1a5fd2ea..b9cdd8581e4cd 100644
--- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
@@ -295,7 +295,7 @@ Doesn't work on other aliens/AI.*/
span_alertalien("You spit neurotoxin."),
)
var/obj/projectile/neurotoxin/neurotoxin = new /obj/projectile/neurotoxin(caller.loc)
- neurotoxin.preparePixelProjectile(target, caller, modifiers)
+ neurotoxin.aim_projectile(target, caller, modifiers)
neurotoxin.firer = caller
neurotoxin.fire()
caller.newtonian_move(get_angle(target, caller))
diff --git a/code/modules/mob/living/carbon/alien/adult/queen.dm b/code/modules/mob/living/carbon/alien/adult/queen.dm
index 8cbd55719774c..cfe6f45320a73 100644
--- a/code/modules/mob/living/carbon/alien/adult/queen.dm
+++ b/code/modules/mob/living/carbon/alien/adult/queen.dm
@@ -44,18 +44,6 @@
alien_speed = 2
/mob/living/carbon/alien/adult/royal/queen/Initialize(mapload)
- //there should only be one queen
- for(var/mob/living/carbon/alien/adult/royal/queen/Q in GLOB.carbon_list)
- if(Q == src)
- continue
- if(Q.stat == DEAD)
- continue
- if(Q.client)
- name = "alien princess ([rand(1, 999)])" //if this is too cutesy feel free to change it/remove it.
- break
-
- real_name = src.name
-
var/static/list/innate_actions = list(
/datum/action/cooldown/alien/promote,
/datum/action/cooldown/spell/aoe/repulse/xeno,
@@ -72,6 +60,11 @@
organs += new /obj/item/organ/alien/eggsac
return ..()
+/mob/living/carbon/alien/adult/royal/queen/set_name()
+ if(get_alien_type(/mob/living/carbon/alien/adult/royal/queen, ignored = src))
+ name = "alien princess"
+ return ..()
+
//Queen verbs
/datum/action/cooldown/alien/make_structure/lay_egg
name = "Lay Egg"
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 120633acdfe4a..124711098674d 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -22,7 +22,7 @@
gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs
unique_name = TRUE
- var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?")
+ var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|princess|queen)( \\(\\d+\\))?")
var/static/list/xeno_allowed_items = typecacheof(list(
/obj/item/clothing/mask/facehugger,
/obj/item/toy/basketball, // playing ball against a xeno is rigged since they cannot be disarmed, their game is out of this world
diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm
index 4aeed5c2b9def..2c91579e9767a 100644
--- a/code/modules/mob/living/carbon/alien/alien_defense.dm
+++ b/code/modules/mob/living/carbon/alien/alien_defense.dm
@@ -18,12 +18,12 @@ In all, this is a lot like the monkey code. /N
if(user == src && check_self_for_injuries())
return
set_resting(FALSE)
- AdjustStun(-60)
- AdjustKnockdown(-60)
- AdjustImmobilized(-60)
- AdjustParalyzed(-60)
- AdjustUnconscious(-60)
- AdjustSleeping(-100)
+ AdjustStun(-6 SECONDS)
+ AdjustKnockdown(-6 SECONDS)
+ AdjustImmobilized(-6 SECONDS)
+ AdjustParalyzed(-6 SECONDS)
+ AdjustUnconscious(-6 SECONDS)
+ AdjustSleeping(-10 SECONDS)
visible_message(span_notice("[user.name] nuzzles [src] trying to wake [p_them()] up!"))
else if(health > 0)
user.do_attack_animation(src, ATTACK_EFFECT_BITE)
diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm
index 85092244510a7..8671a66c98aec 100644
--- a/code/modules/mob/living/carbon/alien/death.dm
+++ b/code/modules/mob/living/carbon/alien/death.dm
@@ -7,5 +7,10 @@
/mob/living/carbon/alien/gib_animation()
new /obj/effect/temp_visual/gib_animation(loc, "gibbed-a")
-/mob/living/carbon/alien/spawn_dust()
- new /obj/effect/decal/remains/xeno(loc)
+/mob/living/carbon/alien/spawn_dust(just_ash)
+ if(just_ash)
+ return ..()
+
+ var/obj/effect/decal/remains/xeno/bones = new(loc)
+ bones.pixel_z = -6
+ bones.pixel_w = rand(-1, 1)
diff --git a/code/modules/mob/living/carbon/alien/emote.dm b/code/modules/mob/living/carbon/alien/emote.dm
index 717e18c9b3166..774a69ee50425 100644
--- a/code/modules/mob/living/carbon/alien/emote.dm
+++ b/code/modules/mob/living/carbon/alien/emote.dm
@@ -6,17 +6,6 @@
key_third_person = "gnarls"
message = "gnarls and shows its teeth..."
-/datum/emote/living/alien/hiss
- key = "hiss"
- key_third_person = "hisses"
- message_alien = "hisses."
- message_larva = "hisses softly."
- emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE
-
-/datum/emote/living/alien/hiss/get_sound(mob/living/user)
- if(isalienadult(user))
- return SFX_HISS
-
/datum/emote/living/alien/roar
key = "roar"
key_third_person = "roars"
diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm
index f33ee4efdf17d..3c4500518de89 100644
--- a/code/modules/mob/living/carbon/alien/larva/death.dm
+++ b/code/modules/mob/living/carbon/alien/larva/death.dm
@@ -15,5 +15,10 @@
/mob/living/carbon/alien/larva/gib_animation()
new /obj/effect/temp_visual/gib_animation(loc, "gibbed-l")
-/mob/living/carbon/alien/larva/spawn_dust()
- new /obj/effect/decal/remains/xeno(loc)
+/mob/living/carbon/alien/larva/spawn_dust(just_ash)
+ if(just_ash)
+ return ..()
+
+ var/obj/effect/decal/remains/xeno/bones = new(loc)
+ bones.pixel_z = -6
+ bones.pixel_w = rand(-1, 1)
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index 7db1bb103cc94..1c6c35b506bcd 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -103,7 +103,7 @@
. = ..()
organ_owner.faction |= ROLE_ALIEN
-/obj/item/organ/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
+/obj/item/organ/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE, movement_flags)
if(organ_owner)
organ_owner.faction -= ROLE_ALIEN
return ..()
@@ -221,11 +221,11 @@
stomach_contents -= source
UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_DEATH, COMSIG_QDELETING))
-/obj/item/organ/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/alien/on_mob_insert(mob/living/carbon/stomach_owner, special, movement_flags)
RegisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE, PROC_REF(something_moved))
return ..()
-/obj/item/organ/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/alien/on_mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
UnregisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE)
return ..()
@@ -278,7 +278,7 @@
if(owner)
var/obj/item/bodypart/part = owner.get_bodypart(BODY_ZONE_CHEST)
// Brute damage to the mob is less then to the organ, so there's a higher chance of the explosion happening before xeno death
- part.receive_damage(impact / 2)
+ owner.apply_damage(impact / 2, BRUTE, part)
// We choose the option that's best for the check
var/part_dam_ratio = part.brute_dam / max(part.max_damage, 1)
if(damage_ratio < part_dam_ratio)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index b70139cee0531..be65a9a1d3dd3 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -78,7 +78,7 @@
for(var/datum/surgery/operations as anything in owner.surgeries)
if(operations.location != BODY_ZONE_CHEST)
continue
- if(!istype(operations.get_surgery_step(), /datum/surgery_step/manipulate_organs/internal))
+ if(!ispath(operations.steps[operations.status], /datum/surgery_step/manipulate_organs/internal))
continue
attempt_grow(gib_on_success = FALSE)
return
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index 532fa10727ecd..85b0adb00014e 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -75,11 +75,11 @@
return
switch(stat)
if(DEAD,UNCONSCIOUS)
- . += span_boldannounce("[src] is not moving.")
+ . += span_bolddanger("[src] is not moving.")
if(CONSCIOUS)
- . += span_boldannounce("[src] seems to be active!")
+ . += span_bolddanger("[src] seems to be active!")
if (sterile)
- . += span_boldannounce("It looks like the proboscis has been removed.")
+ . += span_bolddanger("It looks like the proboscis has been removed.")
/obj/item/clothing/mask/facehugger/should_atmos_process(datum/gas_mixture/air, exposed_temperature)
return (exposed_temperature > 300)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 83861fe86f202..ecbc642e580be 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -77,7 +77,7 @@
if(!hurt)
return
- if(victim.check_block(src, 0, "[name]", LEAP_ATTACK))
+ if(. == SUCCESSFUL_BLOCK || victim.check_block(src, 0, "[name]", LEAP_ATTACK))
blocked = TRUE
take_bodypart_damage(10 + 5 * extra_speed, check_armor = TRUE, wound_bonus = extra_speed * 5)
@@ -244,10 +244,6 @@
paper_note.show_through_camera(usr)
-/mob/living/carbon/on_fall()
- . = ..()
- loc?.handle_fall(src)//it's loc so it doesn't call the mob's handle_fall which does nothing
-
/mob/living/carbon/resist_buckle()
if(!HAS_TRAIT(src, TRAIT_RESTRAINED))
buckled.user_unbuckle_mob(src, src)
@@ -572,7 +568,11 @@
set_health(round(maxHealth - getOxyLoss() - getToxLoss() - total_burn - total_brute, DAMAGE_PRECISION))
update_stat()
update_stamina()
- if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD*2) && stat == DEAD )
+
+ /// The amount of burn damage needed to be done for this mob to be husked
+ var/husk_threshold = get_bodypart(BODY_ZONE_CHEST).max_damage * -1
+
+ if(((maxHealth - total_burn) < husk_threshold) && stat == DEAD )
become_husk(BURN)
med_hud_set_health()
if(stat == SOFT_CRIT)
@@ -745,7 +745,7 @@
//Fire and Brute damage overlay (BSSR)
var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp
- if(hurtdamage)
+ if(hurtdamage && !HAS_TRAIT(src, TRAIT_NO_DAMAGE_OVERLAY))
var/severity = 0
switch(hurtdamage)
if(5 to 15)
@@ -1498,3 +1498,9 @@
return
head.adjustBleedStacks(5)
visible_message(span_notice("[src] gets a nosebleed."), span_warning("You get a nosebleed."))
+
+/mob/living/carbon/check_hit_limb_zone_name(hit_zone)
+ if(get_bodypart(hit_zone))
+ return hit_zone
+ // When a limb is missing the damage is actually passed to the chest
+ return BODY_ZONE_CHEST
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index bb9db5dcff9a5..c89fa8aa04f84 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -62,12 +62,12 @@
return null
-/mob/living/carbon/check_projectile_dismemberment(obj/projectile/P, def_zone)
+/mob/living/carbon/check_projectile_dismemberment(obj/projectile/proj, def_zone)
var/obj/item/bodypart/affecting = get_bodypart(def_zone)
- if(affecting && affecting.can_dismember() && !(affecting.bodypart_flags & BODYPART_UNREMOVABLE) && affecting.get_damage() >= (affecting.max_damage - P.dismemberment))
- affecting.dismember(P.damtype)
- if(P.catastropic_dismemberment)
- apply_damage(P.damage, P.damtype, BODY_ZONE_CHEST, wound_bonus = P.wound_bonus) //stops a projectile blowing off a limb effectively doing no damage. Mostly relevant for sniper rifles.
+ if(affecting && affecting.can_dismember() && !(affecting.bodypart_flags & BODYPART_UNREMOVABLE) && affecting.get_damage() >= (affecting.max_damage - proj.dismemberment))
+ affecting.dismember(proj.damtype)
+ if(proj.catastropic_dismemberment)
+ apply_damage(proj.damage, proj.damtype, BODY_ZONE_CHEST, wound_bonus = proj.wound_bonus) //stops a projectile blowing off a limb effectively doing no damage. Mostly relevant for sniper rifles.
/mob/living/carbon/try_catch_item(obj/item/item, skip_throw_mode_check = FALSE, try_offhand = FALSE)
. = ..()
diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm
index c13ac14b100c1..56c687df7bb1b 100644
--- a/code/modules/mob/living/carbon/carbon_defines.dm
+++ b/code/modules/mob/living/carbon/carbon_defines.dm
@@ -11,6 +11,7 @@
usable_hands = 0 //Populated on init through list/bodyparts
mobility_flags = MOBILITY_FLAGS_CARBON_DEFAULT
blocks_emissive = EMISSIVE_BLOCK_NONE
+ mouse_drop_zone = TRUE
// STOP_OVERLAY_UPDATE_BODY_PARTS is removed after we call update_body_parts() during init.
living_flags = ALWAYS_DEATHGASP|STOP_OVERLAY_UPDATE_BODY_PARTS
///List of [/obj/item/organ]s in the mob. They don't go in the contents for some reason I don't want to know.
diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm
index abf88d91733de..ed380a66d4192 100644
--- a/code/modules/mob/living/carbon/carbon_update_icons.dm
+++ b/code/modules/mob/living/carbon/carbon_update_icons.dm
@@ -272,7 +272,7 @@
break
var/icon_file = I.lefthand_file
- if(get_held_index_of_item(I) % 2 == 0)
+ if(IS_RIGHT_INDEX(get_held_index_of_item(I)))
icon_file = I.righthand_file
hands += I.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE)
diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm
index a7d5b3b4e3850..5e132f7947674 100644
--- a/code/modules/mob/living/carbon/emote.dm
+++ b/code/modules/mob/living/carbon/emote.dm
@@ -83,6 +83,33 @@
if(user.put_in_hands(N))
to_chat(user, span_notice("You make a circle with your hand."))
+/datum/emote/living/carbon/meow
+ key = "meow"
+ key_third_person = "meows"
+ vary = TRUE
+ sound = SFX_CAT_MEOW
+ message = "meows!"
+ message_mime = "meows silently."
+ emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE
+
+/datum/emote/living/carbon/meow/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional, params)
+ if(!iscarbon(user) || (!istype(user.get_organ_slot(ORGAN_SLOT_TONGUE), /obj/item/organ/tongue/cat)))
+ return FALSE
+ return ..()
+
+/datum/emote/living/carbon/purr
+ key = "purr"
+ key_third_person = "purrs"
+ vary = TRUE
+ sound = SFX_CAT_PURR
+ message = "purrs."
+ emote_type = EMOTE_AUDIBLE
+
+/datum/emote/living/carbon/purr/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional, params)
+ if(!iscarbon(user) || (!istype(user.get_organ_slot(ORGAN_SLOT_TONGUE), /obj/item/organ/tongue/cat)) || HAS_MIND_TRAIT(user, TRAIT_MIMING))
+ return FALSE
+ return ..()
+
/datum/emote/living/carbon/moan
key = "moan"
key_third_person = "moans"
@@ -210,3 +237,18 @@
key = "wink"
key_third_person = "winks"
message = "winks."
+
+/datum/emote/living/carbon/hiss
+ key = "hiss"
+ key_third_person = "hisses"
+ message = "hisses!"
+ emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE
+ vary = TRUE
+
+/datum/emote/living/carbon/hiss/get_sound(mob/living/carbon/user)
+ . = ..()
+ if(!istype(user))
+ return
+ if(isalien(user))
+ return SFX_HISS
+ return user.dna.species.get_hiss_sound()
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index 1852d669dfdc7..534d0a216768e 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -228,6 +228,7 @@
. += "[t_He] [t_is] flushed and wheezing."
if (bodytemperature < dna.species.bodytemp_cold_damage_limit)
. += "[t_He] [t_is] shivering."
+ /* DOPPLER EDIT REMOVAL - Fundamentally Evil
if(HAS_TRAIT(src, TRAIT_EVIL))
. += "[t_His] eyes radiate with a unfeeling, cold detachment. There is nothing but darkness within [t_his] soul."
if(living_user.mind?.holy_role >= HOLY_ROLE_PRIEST)
@@ -235,6 +236,19 @@
else
living_user.add_mood_event("encountered_evil", /datum/mood_event/encountered_evil)
living_user.set_jitter_if_lower(15 SECONDS)
+ */
+ // DOPPLER EDIT ADDITION - Unholy Aura & Bad Vibes
+ if(HAS_TRAIT(src, TRAIT_EVIL) && living_user.mind?.holy_role >= HOLY_ROLE_PRIEST)
+ . += span_warning("[t_He] [t_is] cloaked in a miasma of unholy energy!")
+
+ if(HAS_TRAIT(src, TRAIT_BAD_VIBES))
+ . += span_warning("[t_He] give[p_s()] off an unsettling aura.")
+ living_user.add_mood_event("bad_vibes", /datum/mood_event/bad_vibes)
+
+ if(HAS_TRAIT(user, TRAIT_EVIL) && (mind?.holy_role || HAS_TRAIT(src, TRAIT_SPIRITUAL)))
+ . += span_warning("[t_He] shimmer[p_s()] with radiant protection.")
+ living_user.add_mood_event("holy_figure", /datum/mood_event/holy_figure)
+ // DOPPLER EDIT ADDITION END
if(HAS_TRAIT(user, TRAIT_SPIRITUAL) && mind?.holy_role)
. += "[t_He] [t_has] a holy aura about [t_him]."
@@ -287,7 +301,7 @@
. += span_notice("[t_He] appear[p_s()] to have been dissected. Useless for examination... for now. ")
if(HAS_TRAIT(src, TRAIT_SURGICALLY_ANALYZED))
. += span_notice("A skilled hand has mapped this one's internal intricacies. It will be far easier to perform future experimentations upon [user.p_them()]. Exquisite. ")
- if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FITNESS))
+ if(isliving(user) && HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FITNESS))
. += compare_fitness(user)
var/hud_info = get_hud_examine_info(user)
@@ -592,4 +606,10 @@
if(undershirt.has_sensor == BROKEN_SENSORS)
. += list(span_notice("The [undershirt]'s medical sensors are sparking."))
+ // DOPPLER EDIT ADDITION BEGIN - working scar examine..?
+ for(var/datum/scar/scar in all_scars)
+ if(scar.is_visible(user))
+ . += scar.get_examine_description(user)
+ // DOPPLER EDIT ADDITION END
+
#undef ADD_NEWLINE_IF_NECESSARY
diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm
index 3204c59891a76..c5cf56bf95bc0 100644
--- a/code/modules/mob/living/carbon/human/_species.dm
+++ b/code/modules/mob/living/carbon/human/_species.dm
@@ -241,7 +241,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
* Arguments:
* * old_species - The species that the carbon used to be before copying
*/
-/datum/species/proc/copy_properties_from(datum/species/old_species)
+/datum/species/proc/copy_properties_from(datum/species/old_species, pref_load, regenerate_icons)
return
/**
@@ -364,8 +364,9 @@ GLOBAL_LIST_EMPTY(features_by_species)
* * C - Carbon, this is whoever became the new species.
* * old_species - The species that the carbon used to be before becoming this race, used for regenerating organs.
* * pref_load - Preferences to be loaded from character setup, loads in preferred mutant things like bodyparts, digilegs, skin color, etc.
+ * * regenerate_icons - Whether or not to update the bodies icons
*/
-/datum/species/proc/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load)
+/datum/species/proc/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons = TRUE)
SHOULD_CALL_PARENT(TRUE)
human_who_gained_species.living_flags |= STOP_OVERLAY_UPDATE_BODY_PARTS //Don't call update_body_parts() for every single bodypart overlay added.
@@ -413,7 +414,8 @@ GLOBAL_LIST_EMPTY(features_by_species)
human_who_gained_species.grant_language(language, SPOKEN_LANGUAGE, LANGUAGE_SPECIES)
for(var/language in gaining_holder.blocked_languages)
human_who_gained_species.add_blocked_language(language, LANGUAGE_SPECIES)
- human_who_gained_species.regenerate_icons()
+ if(regenerate_icons)
+ human_who_gained_species.regenerate_icons()
SEND_SIGNAL(human_who_gained_species, COMSIG_SPECIES_GAIN, src, old_species)
@@ -1483,6 +1485,10 @@ GLOBAL_LIST_EMPTY(features_by_species)
/datum/species/proc/get_snore_sound(mob/living/carbon/human/human)
return
+/// Returns the species' hiss sound
+/datum/species/proc/get_hiss_sound(mob/living/carbon/human/human)
+ return
+
/datum/species/proc/get_mut_organs(include_brain = TRUE)
var/list/mut_organs = list()
mut_organs += mutant_organs
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index b3b88d8721905..130e3c1ca8bb3 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -18,11 +18,17 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift)
else
new /obj/effect/gibspawner/human/bodypartless(drop_location(), src, get_static_viruses())
-/mob/living/carbon/human/spawn_dust(just_ash = FALSE)
+/mob/living/carbon/human/spawn_dust(just_ash)
if(just_ash)
- new /obj/effect/decal/cleanable/ash(loc)
- else
- new /obj/effect/decal/remains/human(loc)
+ return ..()
+
+ var/bone_type = /obj/effect/decal/remains/human
+ if(isplasmaman(src))
+ bone_type = /obj/effect/decal/remains/plasma
+
+ var/obj/effect/decal/remains/human/bones = new bone_type(loc)
+ bones.pixel_z = -6
+ bones.pixel_w = rand(-1, 1)
/mob/living/carbon/human/death(gibbed)
if(stat == DEAD)
diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm
index 9970d973a7dba..4a977a1ac727d 100644
--- a/code/modules/mob/living/carbon/human/dummy.dm
+++ b/code/modules/mob/living/carbon/human/dummy.dm
@@ -118,7 +118,12 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy)
target.dna.features["tail_cat"] = get_consistent_feature_entry(SSaccessories.tails_list_felinid) // it's a lie
target.dna.features["tail_lizard"] = get_consistent_feature_entry(SSaccessories.tails_list_lizard)
target.dna.features["tail_monkey"] = get_consistent_feature_entry(SSaccessories.tails_list_monkey)
+ target.dna.features["tail_other"] = "No Tail" // DOPPLER EDIT ADDITION - CI Fails W/Out this
+ target.dna.features["wings"] = "No Wings" // DOPPLER EDIT ADDITON - CI Fails W/Out this
+ target.dna.features["breasts"] = "Bare" // DOPPLER EDIT ADDITION - LOOK OUT GORDON, HOTTED BOOBS AHEAD, TITS BIG ONES!
+ target.dna.features["fluff"] = "No Fluff" // DOPPLER EDIT ADDITON - CI Fails W/Out this
target.dna.features["pod_hair"] = get_consistent_feature_entry(SSaccessories.pod_hair_list)
+ target.dna.features["caps"] = get_consistent_feature_entry(SSaccessories.caps_list)
target.dna.initialize_dna(create_mutation_blocks = FALSE, randomize_features = FALSE)
// UF and UI are nondeterministic, even though the features are the same some blocks will randomize slightly
// In practice this doesn't matter, but this is for the sake of 100%(ish) consistency
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 5b0e64547a016..1becef215b01b 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -58,7 +58,7 @@
ADD_TRAIT(src, TRAIT_AGEUSIA, NO_TONGUE_TRAIT)
/mob/living/carbon/human/proc/setup_human_dna()
- randomize_human_normie(src, randomize_mutations = TRUE)
+ randomize_human_normie(src, randomize_mutations = TRUE, update_body = FALSE)
/mob/living/carbon/human/Destroy()
QDEL_NULL(physiology)
@@ -391,10 +391,7 @@
/mob/living/carbon/human/try_inject(mob/user, target_zone, injection_flags)
. = ..()
if(!. && (injection_flags & INJECT_TRY_SHOW_ERROR_MESSAGE) && user)
- if(!target_zone)
- target_zone = get_bodypart(check_zone(user.zone_selected))
- var/obj/item/bodypart/the_part = isbodypart(target_zone) ? target_zone : get_bodypart(check_zone(target_zone)) //keep these synced
- to_chat(user, span_alert("There is no exposed flesh or thin material on [p_their()] [the_part.name]."))
+ balloon_alert(user, "no exposed skin on [target_zone || check_zone(user.zone_selected)]!")
/mob/living/carbon/human/get_butt_sprite()
var/obj/item/bodypart/chest/chest = get_bodypart(BODY_ZONE_CHEST)
@@ -1192,7 +1189,7 @@
race = /datum/species/snail
/mob/living/carbon/human/species/vampire
- race = /datum/species/vampire
+ race = /datum/species/human/vampire
/mob/living/carbon/human/species/zombie
race = /datum/species/zombie
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 13700dd5aad29..73f63b8bfe110 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -45,11 +45,10 @@
return covering_part
/mob/living/carbon/human/bullet_act(obj/projectile/bullet, def_zone, piercing_hit = FALSE)
-
if(bullet.firer == src && bullet.original == src) //can't block or reflect when shooting yourself
return ..()
- if(bullet.reflectable & REFLECT_NORMAL)
+ if(bullet.reflectable)
if(check_reflect(def_zone)) // Checks if you've passed a reflection% check
visible_message(
span_danger("The [bullet.name] gets reflected by [src]!"),
@@ -61,11 +60,8 @@
playsound(src, held_item.block_sound, BLOCK_SOUND_VOLUME, TRUE)
// Find a turf near or on the original location to bounce to
if(!isturf(loc)) //Open canopy mech (ripley) check. if we're inside something and still got hit
- bullet.force_hit = TRUE //The thing we're in passed the bullet to us. Pass it back, and tell it to take the damage.
- loc.bullet_act(bullet, def_zone, piercing_hit)
- return BULLET_ACT_HIT
+ return loc.projectile_hit(bullet, def_zone, piercing_hit)
bullet.reflect(src)
-
return BULLET_ACT_FORCE_PIERCE // complete projectile permutation
if(check_block(bullet, bullet.damage, "the [bullet.name]", PROJECTILE_ATTACK, bullet.armour_penetration, bullet.damage_type))
@@ -89,8 +85,8 @@
/mob/living/carbon/human/check_block(atom/hit_by, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0, damage_type = BRUTE)
. = ..()
- if(.)
- return TRUE
+ if(. == SUCCESSFUL_BLOCK)
+ return SUCCESSFUL_BLOCK
var/block_chance_modifier = round(damage / -3)
for(var/obj/item/worn_thing in get_equipped_items(INCLUDE_HELD))
@@ -104,9 +100,9 @@
var/final_block_chance = worn_thing.block_chance - (clamp((armour_penetration - worn_thing.armour_penetration) / 2, 0, 100)) + block_chance_modifier
if(worn_thing.hit_reaction(src, hit_by, attack_text, final_block_chance, damage, attack_type, damage_type))
- return TRUE
+ return SUCCESSFUL_BLOCK
- return FALSE
+ return FAILED_BLOCK
/mob/living/carbon/human/grippedby(mob/living/carbon/user, instant = FALSE)
if(w_uniform)
@@ -195,7 +191,7 @@
var/damage = HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER) ? monkey_mouth.unarmed_damage_high : rand(monkey_mouth.unarmed_damage_low, monkey_mouth.unarmed_damage_high)
if(!damage)
return FALSE
- if(check_block(user, damage, "the [user.name]"))
+ if(check_block(user, damage, "the [user.name]", attack_type = UNARMED_ATTACK))
return FALSE
apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, MELEE))
return TRUE
@@ -252,9 +248,6 @@
return TRUE
apply_damage(damage, BRUTE, affecting, armor_block)
-
-
-
/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L, list/modifiers)
. = ..()
if(!.)
@@ -262,7 +255,7 @@
var/damage = rand(L.melee_damage_lower, L.melee_damage_upper)
if(!damage)
return
- if(check_block(L, damage, "the [L.name]"))
+ if(check_block(L, damage, "the [L.name]", attack_type = UNARMED_ATTACK))
return FALSE
if(stat != DEAD)
L.amount_grown = min(L.amount_grown + damage, L.max_grown)
@@ -378,9 +371,12 @@
else if(wear_suit.siemens_coefficient <= 0)
siemens_coeff -= 0.95
siemens_coeff = max(siemens_coeff, 0)
- else if(!(flags & SHOCK_NOGLOVES)) //This gets the siemens_coeff for all non tesla shocks
- if(gloves)
- siemens_coeff *= gloves.siemens_coefficient
+ if(flags & SHOCK_NOGLOVES) //This gets the siemens_coeff for all non tesla shocks
+ if(wear_suit)
+ siemens_coeff *= wear_suit.siemens_coefficient
+ else if(gloves)
+ siemens_coeff *= gloves.siemens_coefficient
+
siemens_coeff *= physiology.siemens_coeff
siemens_coeff *= dna.species.siemens_coeff
. = ..()
@@ -513,17 +509,16 @@
//DAMAGE//
for(var/obj/item/bodypart/affecting in damaged)
- affecting.receive_damage(acidity, 2*acidity)
-
- if(affecting.name == BODY_ZONE_HEAD)
- if(prob(min(acidpwr*acid_volume/10, 90))) //Applies disfigurement
- affecting.receive_damage(acidity, 2*acidity)
- emote("scream")
- set_facial_hairstyle("Shaved", update = FALSE)
- set_hairstyle("Bald") //This calls update_body_parts()
- ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC)
+ var/damage_mod = 1
+ if(affecting.body_zone == BODY_ZONE_HEAD && prob(min(acidpwr * acid_volume * 0.1, 90))) //Applies disfigurement
+ damage_mod = 2
+ emote("scream")
+ set_facial_hairstyle("Shaved", update = FALSE)
+ set_hairstyle("Bald") //This calls update_body_parts()
+ ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC)
- update_damage_overlays()
+ apply_damage(acidity * damage_mod, BRUTE, affecting)
+ apply_damage(acidity * damage_mod * 2, BURN, affecting)
//MELTING INVENTORY ITEMS//
//these items are all outside of armour visually, so melt regardless.
@@ -579,7 +574,7 @@
body_part.check_for_injuries(src, combined_msg)
for(var/t in missing)
- combined_msg += span_boldannounce("Your [parse_zone(t)] is missing!")
+ combined_msg += span_bolddanger("Your [parse_zone(t)] is missing!")
if(is_bleeding())
var/list/obj/item/bodypart/bleeding_limbs = list()
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index 278c72ed535cf..5406fae39e8d5 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -130,7 +130,7 @@
/mob/living/carbon/human/proc/check_chunky_fingers()
if(HAS_TRAIT_NOT_FROM(src, TRAIT_CHUNKYFINGERS, RIGHT_ARM_TRAIT) && HAS_TRAIT_NOT_FROM(src, TRAIT_CHUNKYFINGERS, LEFT_ARM_TRAIT))
return TRUE
- return (active_hand_index % 2) ? HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, LEFT_ARM_TRAIT) : HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, RIGHT_ARM_TRAIT)
+ return IS_LEFT_INDEX(active_hand_index) ? HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, LEFT_ARM_TRAIT) : HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, RIGHT_ARM_TRAIT)
/mob/living/carbon/human/get_policy_keywords()
. = ..()
diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm
index a13c2aa11be5b..a4aa5e977f1fe 100644
--- a/code/modules/mob/living/carbon/human/human_update_icons.dm
+++ b/code/modules/mob/living/carbon/human/human_update_icons.dm
@@ -631,8 +631,8 @@ There are several things that need to be remembered:
t_state = worn_item.icon_state
var/mutable_appearance/hand_overlay
- var/icon_file = held_index % 2 == 0 ? worn_item.righthand_file : worn_item.lefthand_file
- hand_overlay = worn_item.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE, humie = src) /// DOPPLER SHIFT EDIT
+ var/icon_file = IS_RIGHT_INDEX(held_index) ? worn_item.righthand_file : worn_item.lefthand_file
+ hand_overlay = worn_item.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE)
var/obj/item/bodypart/arm/held_in_hand = hand_bodyparts[held_index]
held_in_hand?.held_hand_offset?.apply_offset(hand_overlay)
@@ -654,20 +654,70 @@ There are several things that need to be remembered:
return icon(female_clothing_icon)
-// These coordonates point to roughly somewhere in the middle of the left leg
-// Used in approximating what color the pants of clothing should be
+/// Modifies a sprite to conform to digitigrade body shapes
+/proc/wear_digi_version(icon/base_icon, obj/item/item, key, greyscale_colors)
+ ASSERT(istype(item), "wear_digi_version: no item passed")
+ ASSERT(istext(key), "wear_digi_version: no key passed")
+ if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1)
+ greyscale_colors = item.get_general_color(base_icon)
+
+ var/index = "[key]-[item.type]-[greyscale_colors]"
+ var/static/list/digitigrade_clothing_cache = list()
+ var/icon/resulting_icon = digitigrade_clothing_cache[index]
+ if(!resulting_icon)
+ resulting_icon = item.generate_digitigrade_icons(base_icon, greyscale_colors)
+ if(!resulting_icon)
+ stack_trace("[item.type] is set to generate a masked digitigrade icon, but generate_digitigrade_icons was not implemented (or error'd).")
+ return base_icon
+ digitigrade_clothing_cache[index] = fcopy_rsc(resulting_icon)
+
+ return icon(resulting_icon)
+
+/// Modifies a sprite to replace the legs with a new version
+/proc/replace_icon_legs(icon/base_icon, icon/new_legs)
+ var/static/icon/leg_mask
+ if(!leg_mask)
+ leg_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', "digi_leg_mask")
+
+ // cuts the legs off
+ base_icon.Blend(leg_mask, ICON_SUBTRACT)
+ // staples the new legs on
+ base_icon.Blend(new_legs, ICON_OVERLAY)
+ return base_icon
+
+/**
+ * Generates a digitigrade version of this item's worn icon
+ *
+ * Arguments:
+ * * base_icon: The icon to generate the digitigrade icon from
+ * * greyscale_colors: The greyscale colors to use for the digitigrade icon
+ *
+ * Returns an icon that is the digitigrade version of the item's worn icon
+ * Returns null if the item has no support for digitigrade variations via this method
+ */
+/obj/item/proc/generate_digitigrade_icons(icon/base_icon, greyscale_colors)
+ return null
+
+/**
+ * Get what color the item is on "average"
+ * Can be used to approximate what color this item is/should be
+ *
+ * Arguments:
+ * * base_icon: The icon to get the color from
+ */
+/obj/item/proc/get_general_color(icon/base_icon)
+ if(greyscale_colors && length(SSgreyscale.ParseColorString(greyscale_colors)) == 1)
+ return greyscale_colors
+ return color
+
+// These coordinates point to the middle of the left leg
#define LEG_SAMPLE_X_LOWER 13
#define LEG_SAMPLE_X_UPPER 14
-
#define LEG_SAMPLE_Y_LOWER 8
#define LEG_SAMPLE_Y_UPPER 9
-/// Modifies a sprite to conform to digitigrade body shapes
-/proc/wear_digi_version(icon/base_icon, key, greyscale_config = /datum/greyscale_config/jumpsuit/worn_digi, greyscale_colors)
- ASSERT(key, "wear_digi_version: no key passed")
- ASSERT(ispath(greyscale_config, /datum/greyscale_config), "wear_digi_version: greyscale_config is not a valid path (got: [greyscale_config])")
- // items with greyscale colors containing multiple colors are invalid
- if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1)
+/obj/item/clothing/get_general_color(icon/base_icon)
+ if(slot_flags & (ITEM_SLOT_ICLOTHING|ITEM_SLOT_OCLOTHING))
var/pant_color
// approximates the color of the pants by sampling a few pixels in the middle of the left leg
for(var/x in LEG_SAMPLE_X_LOWER to LEG_SAMPLE_X_UPPER)
@@ -675,37 +725,26 @@ There are several things that need to be remembered:
var/xy_color = base_icon.GetPixel(x, y)
pant_color = pant_color ? BlendRGB(pant_color, xy_color, 0.5) : xy_color
- greyscale_colors = pant_color || "#1d1d1d" // black pants always look good
-
- var/index = "[key]-[greyscale_config]-[greyscale_colors]"
- var/static/list/digitigrade_clothing_icons = list()
- var/icon/digitigrade_clothing_icon = digitigrade_clothing_icons[index]
- if(!digitigrade_clothing_icon)
- var/static/icon/torso_mask
- if(!torso_mask)
- torso_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', "digi_torso_mask")
- var/static/icon/leg_mask
- if(!leg_mask)
- leg_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', "digi_leg_mask")
-
- base_icon.Blend(leg_mask, ICON_SUBTRACT) // cuts the legs off
-
- var/icon/leg_icon = SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors)
- leg_icon.Blend(torso_mask, ICON_SUBTRACT) // cuts the torso off
-
- base_icon.Blend(leg_icon, ICON_OVERLAY) // puts the new legs on
-
- digitigrade_clothing_icon = fcopy_rsc(base_icon)
- digitigrade_clothing_icons[index] = digitigrade_clothing_icon
+ return pant_color || "#1d1d1d" // black pants always look good
- return icon(digitigrade_clothing_icon)
+ return ..()
#undef LEG_SAMPLE_X_LOWER
#undef LEG_SAMPLE_X_UPPER
-
#undef LEG_SAMPLE_Y_LOWER
#undef LEG_SAMPLE_Y_UPPER
+// Points to the tip of the left foot
+#define SHOE_SAMPLE_X 11
+#define SHOE_SAMPLE_Y 2
+
+/obj/item/clothing/shoes/get_general_color(icon/base_icon)
+ // just grabs the color of the middle of the left foot
+ return base_icon.GetPixel(SHOE_SAMPLE_X, SHOE_SAMPLE_Y) || "#1d1d1d"
+
+#undef SHOE_SAMPLE_X
+#undef SHOE_SAMPLE_Y
+
/mob/living/carbon/human/proc/get_overlays_copy(list/unwantedLayers)
var/list/out = new
for(var/i in 1 to TOTAL_LAYERS)
@@ -865,9 +904,9 @@ generate/load female uniform sprites matching all previously decided variables
if(!isinhands && is_digi && (supports_variations_flags & CLOTHING_DIGITIGRADE_MASK))
building_icon = wear_digi_version(
base_icon = building_icon || icon(file2use, t_state),
+ item = src,
key = "[t_state]-[file2use]-[female_uniform]",
- greyscale_config = digitigrade_greyscale_config_worn || greyscale_config_worn,
- greyscale_colors = digitigrade_greyscale_colors || greyscale_colors || color,
+ greyscale_colors = greyscale_colors,
)
/// DOPPLER SHIFT ADDITION BEGIN - we migrate this down here & use building_icon to allow for auto-generated digi sprites to still support ladies
if(female_uniform)
@@ -898,7 +937,7 @@ generate/load female uniform sprites matching all previously decided variables
standing.pixel_y += offsets[2]
standing.alpha = alpha
- standing.color = color
+ standing = color_atom_overlay(standing)
return standing
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 02f627459cb93..219060012fc39 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -424,7 +424,7 @@
hand_bodyparts.len = amt
for(var/i in old_limbs+1 to amt)
var/path = /obj/item/bodypart/arm/left
- if(!(i % 2))
+ if(IS_RIGHT_INDEX(i))
path = /obj/item/bodypart/arm/right
var/obj/item/bodypart/BP = new path ()
diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm
index db332b0efde8c..77ba4b89d6d5b 100644
--- a/code/modules/mob/living/carbon/human/species_types/abductors.dm
+++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm
@@ -32,7 +32,7 @@
return "Abductors do not need to breathe, eat, do not have blood, a heart, stomach, or lungs and cannot be infected by human viruses. \
Their hardy physique prevents their skin from being wounded or dismembered, but their chunky tridactyl hands make it hard to operate human equipment."
-/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR]
abductor_hud.show_to(C)
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index 1dcc922b13f48..50ffe1925b3b8 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -38,7 +38,7 @@
return TRUE
return ..()
-/datum/species/dullahan/on_species_gain(mob/living/carbon/human/human, datum/species/old_species)
+/datum/species/dullahan/on_species_gain(mob/living/carbon/human/human, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
human.lose_hearing_sensitivity(TRAIT_GENERIC)
RegisterSignal(human, COMSIG_CARBON_ATTACH_LIMB, PROC_REF(on_gained_part))
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 1f1d7d3af478d..2a1b7785ba84a 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -47,7 +47,7 @@
QDEL_NULL(ethereal_light)
return ..()
-/datum/species/ethereal/on_species_gain(mob/living/carbon/human/new_ethereal, datum/species/old_species, pref_load)
+/datum/species/ethereal/on_species_gain(mob/living/carbon/human/new_ethereal, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
if(!ishuman(new_ethereal))
return
@@ -181,6 +181,9 @@
'sound/mobs/humanoids/ethereal/ethereal_scream_3.ogg',
)
+/datum/species/ethereal/get_hiss_sound(mob/living/carbon/human/ethereal)
+ return 'sound/mobs/humanoids/ethereal/ethereal_hiss.ogg'
+
/datum/species/ethereal/get_physical_attributes()
return "Ethereals process electricity as their power supply, not food, and are somewhat resistant to it.\
They do so via their crystal core, their equivalent of a human heart, which will also encase them in a reviving crystal if they die.\
@@ -272,7 +275,7 @@
'sound/mobs/humanoids/ethereal/lustrous_scream_3.ogg',
)
-/datum/species/ethereal/lustrous/on_species_gain(mob/living/carbon/new_lustrous, datum/species/old_species, pref_load)
+/datum/species/ethereal/lustrous/on_species_gain(mob/living/carbon/new_lustrous, datum/species/old_species, pref_load, regenerate_icons)
..()
default_color = new_lustrous.dna.features["ethcolor"]
new_lustrous.dna.features["ethcolor"] = GLOB.color_list_lustrous[pick(GLOB.color_list_lustrous)] //Picks one of 5 lustrous-specific colors.
diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm
index 0f151f5f8f5fd..79705ece3c9b6 100644
--- a/code/modules/mob/living/carbon/human/species_types/felinid.dm
+++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm
@@ -33,7 +33,7 @@
var/datum/reagent/toxin/carpotoxin/fish = chem
fish.toxpwr = 0
-/datum/species/human/felinid/on_species_gain(mob/living/carbon/carbon_being, datum/species/old_species, pref_load)
+/datum/species/human/felinid/on_species_gain(mob/living/carbon/carbon_being, datum/species/old_species, pref_load, regenerate_icons)
if(ishuman(carbon_being))
var/mob/living/carbon/human/target_human = carbon_being
if(!pref_load) //Hah! They got forcefully purrbation'd. Force default felinid parts on them if they have no mutant parts in those areas!
@@ -114,6 +114,8 @@
return SFX_SNORE_FEMALE
return SFX_SNORE_MALE
+/datum/species/human/felinid/get_hiss_sound(mob/living/carbon/human/felinid)
+ return 'sound/mobs/humanoids/felinid/felinid_hiss.ogg'
/proc/mass_purrbation()
for(var/mob in GLOB.human_list)
diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
index 11548c7b12952..f3361ee7a724d 100644
--- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
@@ -26,7 +26,7 @@
BODY_ZONE_CHEST = /obj/item/bodypart/chest/fly,
)
-/datum/species/fly/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load)
+/datum/species/fly/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
RegisterSignal(human_who_gained_species, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness))
diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm
index 68dab15d1b7c9..3baf2e59d44eb 100644
--- a/code/modules/mob/living/carbon/human/species_types/humans.dm
+++ b/code/modules/mob/living/carbon/human/species_types/humans.dm
@@ -93,6 +93,9 @@
return SFX_SNORE_FEMALE
return SFX_SNORE_MALE
+/datum/species/human/get_hiss_sound(mob/living/carbon/human/human)
+ return 'sound/mobs/humanoids/human/hiss/human_hiss.ogg'
+
/datum/species/human/get_species_description()
return "Humans are the dominant species in the known galaxy. \
Their kind extend from old Earth to the edges of known space."
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index d866e9c8105dd..d52103f91c835 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -43,7 +43,7 @@
)
var/datum/action/innate/regenerate_limbs/regenerate_limbs
-/datum/species/jelly/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load)
+/datum/species/jelly/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
if(ishuman(new_jellyperson))
regenerate_limbs = new
@@ -209,7 +209,7 @@
UnregisterSignal(C, COMSIG_LIVING_DEATH)
..()
-/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons)
..()
if(ishuman(C))
slime_split = new
@@ -511,7 +511,7 @@
QDEL_LIST(luminescent_actions)
return ..()
-/datum/species/jelly/luminescent/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species)
+/datum/species/jelly/luminescent/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
glow = new_jellyperson.mob_light(light_type = /obj/effect/dummy/lighting_obj/moblight/species)
update_glow(new_jellyperson)
@@ -677,7 +677,7 @@
return "Stargazers can link others' minds with their own, creating a private communication channel. \
Most things that are toxic heal them, but most things that prevent toxicity damage them!"
-/datum/species/jelly/stargazer/on_species_gain(mob/living/carbon/grant_to, datum/species/old_species)
+/datum/species/jelly/stargazer/on_species_gain(mob/living/carbon/grant_to, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
project_action = new(src)
project_action.Grant(grant_to)
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index 9379fdd6167c3..a5af8a9fe33e7 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -114,6 +114,9 @@
return SFX_SNORE_FEMALE
return SFX_SNORE_MALE
+/datum/species/lizard/get_hiss_sound(mob/living/carbon/human/lizard)
+ return 'sound/mobs/humanoids/lizard/lizard_hiss.ogg'
+
/datum/species/lizard/get_physical_attributes()
return "Lizardpeople can withstand slightly higher temperatures than most species, but they are very vulnerable to the cold \
and can't regulate their body-temperature internally, making the vacuum of space extremely deadly to them."
@@ -218,7 +221,7 @@ Lizard subspecies: SILVER SCALED
Mostly identical, they are holy, don't breathe, don't get viruses, their hide cannot be pierced, love the taste of wine, \
and their tongue allows them to turn into a statue, for some reason."
-/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load)
+/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load, regenerate_icons)
old_mutcolor = new_silverscale.dna.features["mcolor"]
new_silverscale.dna.features["mcolor"] = "#eeeeee"
new_silverscale.add_eye_color("#0000a0", EYE_COLOR_SPECIES_PRIORITY)
diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm
index 057dffbf22245..3d7e717f67328 100644
--- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm
+++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm
@@ -40,7 +40,7 @@
payday_modifier = 1.5
ai_controlled_species = TRUE
-/datum/species/monkey/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load)
+/datum/species/monkey/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
passtable_on(human_who_gained_species, SPECIES_TRAIT)
human_who_gained_species.dna.add_mutation(/datum/mutation/human/race, MUT_NORMAL)
@@ -63,6 +63,10 @@
/datum/species/monkey/get_scream_sound(mob/living/carbon/human/monkey)
return get_sfx(SFX_SCREECH)
+/datum/species/monkey/get_hiss_sound(mob/living/carbon/human/monkey)
+ return 'sound/mobs/humanoids/human/hiss/human_hiss.ogg'
+ // we're both great apes, or something..
+
/datum/species/monkey/get_physical_attributes()
return "Monkeys are slippery, can crawl into vents, and are more dextrous than humans.. but only when stealing things. \
Natural monkeys cannot operate machinery or most tools with their paws, but unusually clever monkeys or those that were once something else can."
diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
index e95990148fc9f..680927e89b4a6 100644
--- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
@@ -24,7 +24,7 @@
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/moth,
)
-/datum/species/moth/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load)
+/datum/species/moth/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
RegisterSignal(human_who_gained_species, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness))
diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
index 4e53fe462087a..42e73a6b641c6 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -38,7 +38,7 @@
/datum/species/mush/check_roundstart_eligible()
return FALSE //hard locked out of roundstart on the order of design lead kor, this can be removed in the future when planetstation is here OR SOMETHING but right now we have a problem with races.
-/datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+/datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
if(ishuman(C))
mush = new()
diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm
index 89f477777b035..1faf2bbe4961b 100644
--- a/code/modules/mob/living/carbon/human/species_types/snail.dm
+++ b/code/modules/mob/living/carbon/human/species_types/snail.dm
@@ -85,7 +85,7 @@
affected.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM * seconds_per_tick)
return COMSIG_MOB_STOP_REAGENT_CHECK
-/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load)
+/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
var/obj/item/storage/backpack/bag = new_snailperson.get_item_by_slot(ITEM_SLOT_BACK)
if(!istype(bag, /obj/item/storage/backpack/snail))
diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm
index d0b052a888865..81d0f88b9b3fa 100644
--- a/code/modules/mob/living/carbon/human/species_types/vampire.dm
+++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm
@@ -4,7 +4,7 @@
///maximum a vampire will drain, they will drain less if they hit their cap
#define VAMP_DRAIN_AMOUNT 50
-/datum/species/vampire
+/datum/species/human/vampire
name = "Vampire"
id = SPECIES_VAMPIRE
examine_limb_id = SPECIES_HUMAN
@@ -18,33 +18,30 @@
)
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
changesource_flags = MIRROR_BADMIN | MIRROR_PRIDE | WABBAJACK | ERT_SPAWN
- exotic_bloodtype = "U"
+ exotic_bloodtype = "V"
blood_deficiency_drain_rate = BLOOD_DEFICIENCY_MODIFIER // vampires already passively lose blood, so this just makes them lose it slightly more quickly when they have blood deficiency.
mutantheart = /obj/item/organ/heart/vampire
mutanttongue = /obj/item/organ/tongue/vampire
- mutantstomach = null
- mutantlungs = null
- skinned_type = /obj/item/stack/sheet/animalhide/human
///some starter text sent to the vampire initially, because vampires have shit to do to stay alive
var/info_text = "You are a Vampire . You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability."
-/datum/species/vampire/check_roundstart_eligible()
+/datum/species/human/vampire/check_roundstart_eligible()
if(check_holidays(HALLOWEEN))
return TRUE
return ..()
-/datum/species/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species)
+/datum/species/human/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
to_chat(new_vampire, "[info_text]")
new_vampire.skin_tone = "albino"
new_vampire.update_body(0)
RegisterSignal(new_vampire, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness))
-/datum/species/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
+/datum/species/human/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
. = ..()
UnregisterSignal(C, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS)
-/datum/species/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired)
+/datum/species/human/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired)
. = ..()
if(istype(vampire.loc, /obj/structure/closet/crate/coffin))
var/need_mob_update = FALSE
@@ -66,27 +63,27 @@
vampire.adjust_fire_stacks(3 * seconds_per_tick)
vampire.ignite_mob()
-/datum/species/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
+/datum/species/human/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
SIGNAL_HANDLER
if(istype(attacking_item, /obj/item/nullrod/whip))
damage_mods += 2
-/datum/species/vampire/get_physical_attributes()
+/datum/species/human/vampire/get_physical_attributes()
return "Vampires are afflicted with the Thirst, needing to sate it by draining the blood out of another living creature. However, they do not need to breathe or eat normally. \
They will instantly turn into dust if they run out of blood or enter a holy area. However, coffins stabilize and heal them, and they can transform into bats!"
-/datum/species/vampire/get_species_description()
+/datum/species/human/vampire/get_species_description()
return "A classy Vampire! They descend upon Space Station Thirteen Every year to spook the crew! \"Bleeg!!\""
-/datum/species/vampire/get_species_lore()
+/datum/species/human/vampire/get_species_lore()
return list(
"Vampires are unholy beings blessed and cursed with The Thirst. \
The Thirst requires them to feast on blood to stay alive, and in return it gives them many bonuses. \
Because of this, Vampires have split into two clans, one that embraces their powers as a blessing and one that rejects it.",
)
-/datum/species/vampire/create_pref_unique_perks()
+/datum/species/human/vampire/create_pref_unique_perks()
var/list/to_add = list()
to_add += list(
@@ -115,7 +112,7 @@
return to_add
// Vampire blood is special, so it needs to be handled with its own entry.
-/datum/species/vampire/create_pref_blood_perks()
+/datum/species/human/vampire/create_pref_blood_perks()
var/list/to_add = list()
to_add += list(list(
@@ -132,7 +129,7 @@
return to_add
// There isn't a "Minor Undead" biotype, so we have to explain it in an override (see: dullahans)
-/datum/species/vampire/create_pref_biotypes_perks()
+/datum/species/human/vampire/create_pref_biotypes_perks()
var/list/to_add = list()
to_add += list(list(
diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm
index 77d2765ba98b3..1486b54a0c249 100644
--- a/code/modules/mob/living/carbon/human/species_types/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm
@@ -132,7 +132,7 @@
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/zombie/infectious,
)
-/datum/species/zombie/infectious/on_species_gain(mob/living/carbon/human/new_zombie, datum/species/old_species)
+/datum/species/zombie/infectious/on_species_gain(mob/living/carbon/human/new_zombie, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
new_zombie.set_combat_mode(TRUE)
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 93d6f9ce2e19f..e80ba0c95be0d 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -124,9 +124,9 @@
//Tries to play the carbon a breathing sound when using internals, also invokes check_breath
/mob/living/carbon/proc/try_breathing_sound(breath)
var/should_be_on = canon_client?.prefs?.read_preference(/datum/preference/toggle/sound_breathing)
- if(should_be_on && !breathing_loop.timer_id)
+ if(should_be_on && !breathing_loop.timer_id && canon_client?.mob.can_hear())
breathing_loop.start()
- else if(!should_be_on && breathing_loop.timer_id)
+ else if((!should_be_on && breathing_loop.timer_id) || !canon_client?.mob.can_hear())
breathing_loop.stop()
/mob/living/carbon/proc/has_smoke_protection()
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 8688e256022ba..6616736a61064 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -98,7 +98,7 @@
ghostize()
QDEL_IN(src, DUST_ANIMATION_TIME) // since this is sometimes called in the middle of movement, allow half a second for movement to finish, ghosting to happen and animation to play. Looks much nicer and doesn't cause multiple runtimes.
-/// Animates turning into dust
+/// Animates turning into dust.
/// Does not delete src afterwards, BUT it will become invisible (and grey), so ensure you handle that yourself
/atom/movable/proc/dust_animation(atom/anim_loc = src.loc)
if(isnull(anim_loc)) // the effect breaks if we have a null loc
@@ -130,8 +130,19 @@
#undef DUST_ANIMATION_TIME
+/**
+ * Spawns dust / ash or remains where the mob was
+ *
+ * just_ash: If TRUE, just ash will spawn where the mob was, as opposed to remains
+ */
/mob/living/proc/spawn_dust(just_ash = FALSE)
- new /obj/effect/decal/cleanable/ash(loc)
+ var/ash_type = /obj/effect/decal/cleanable/ash
+ if(mob_size >= MOB_SIZE_LARGE)
+ ash_type = /obj/effect/decal/cleanable/ash/large
+
+ var/obj/effect/decal/cleanable/ash/ash = new ash_type(loc)
+ ash.pixel_z = -5
+ ash.pixel_w = rand(-1, 1)
/*
* Called when the mob dies. Can also be called manually to kill a mob.
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 395b1d71792ad..a74d3727bacb5 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -140,22 +140,27 @@
/datum/emote/living/flap/run_emote(mob/user, params, type_override, intentional)
. = ..()
- if(ishuman(user))
- var/mob/living/carbon/human/human_user = user
- var/open = FALSE
- var/obj/item/organ/wings/functional/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
-
- // open/close functional wings
- if(istype(wings))
- if(wings.wings_open)
- open = TRUE
- wings.close_wings()
- else
- wings.open_wings()
- addtimer(CALLBACK(wings, open ? TYPE_PROC_REF(/obj/item/organ/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/wings/functional, close_wings)), wing_time)
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/human_user = user
+ var/obj/item/organ/wings/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+
+ // play a flapping noise if the wing has this implemented
+ if(!istype(wings))
+ return
+ wings.make_flap_sound(human_user)
- // play a flapping noise if the wing has this implemented
- wings.make_flap_sound(human_user)
+ // open/close functional wings
+ var/obj/item/organ/wings/functional/wings_functional = wings
+ if(!istype(wings_functional))
+ return
+ var/open = FALSE
+ if(wings_functional.wings_open)
+ open = TRUE
+ wings_functional.close_wings()
+ else
+ wings_functional.open_wings()
+ addtimer(CALLBACK(wings_functional, open ? TYPE_PROC_REF(/obj/item/organ/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/wings/functional, close_wings)), wing_time)
/datum/emote/living/flap/aflap
key = "aflap"
@@ -298,19 +303,43 @@
key_third_person = "points"
message = "points."
message_param = "points at %t."
- hands_use_check = TRUE
+ cooldown = 1 SECONDS
+ // don't put hands use check here, everything is handled in run_emote
/datum/emote/living/point/run_emote(mob/user, params, type_override, intentional)
message_param = initial(message_param) // reset
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if(H.usable_hands == 0)
- if(H.usable_legs != 0)
- message_param = "tries to point at %t with a leg, [span_userdanger("falling down")] in the process!"
- H.Paralyze(20)
+ if(iscarbon(user))
+ var/mob/living/carbon/our_carbon = user
+ if(our_carbon.usable_hands <= 0 || user.incapacitated & INCAPABLE_RESTRAINTS || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
+ if(our_carbon.usable_legs > 0)
+ var/one_leg = FALSE
+ var/has_shoes = our_carbon.get_item_by_slot(ITEM_SLOT_FEET)
+ if(our_carbon.usable_legs == 1)
+ one_leg = TRUE
+ var/success_prob = 65
+ if(HAS_TRAIT(our_carbon, TRAIT_FREERUNNING))
+ success_prob += 35
+ if(one_leg)
+ success_prob -= 40
+ if(prob(success_prob))
+ message_param = "[one_leg ? "jumps into the air and " : ""]points at %t with their [has_shoes ? "leg" : "toes"]!"
+ else
+ message_param = "[one_leg ? "jumps into the air and " : ""]tries to point at %t with their [has_shoes ? "leg" : "toes"], falling down in the process!"
+ our_carbon.Paralyze(2 SECONDS)
+ TIMER_COOLDOWN_START(user, "point_verb_emote_cooldown", 1 SECONDS)
else
- message_param = "[span_userdanger("bumps [user.p_their()] head on the ground")] trying to motion towards %t."
- H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
+ if(our_carbon.get_organ_slot(ORGAN_SLOT_EYES))
+ message_param = "gives a meaningful glance at %t!"
+ TIMER_COOLDOWN_START(src, "point_verb_emote_cooldown", 1.5 SECONDS)
+ else
+ if(our_carbon.get_organ_slot(ORGAN_SLOT_TONGUE))
+ message_param = "motions their tongue towards %t!"
+ TIMER_COOLDOWN_START(src, "point_verb_emote_cooldown", 2 SECONDS)
+ else
+ message_param = "[span_userdanger("bumps [user.p_their()] head on the ground")] trying to motion towards %t."
+ our_carbon.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
+ playsound(user, 'sound/effects/glass/glassbash.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ TIMER_COOLDOWN_START(src, "point_verb_emote_cooldown", 2.5 SECONDS)
return ..()
/datum/emote/living/sneeze
@@ -642,21 +671,6 @@
to_chat(user, span_boldwarning("You cannot send IC messages (muted)."))
return FALSE
- var/our_message = params ? params : get_custom_emote_from_user()
-
- if(!emote_is_valid(user, our_message))
- return FALSE
-
- if(!params)
- var/user_emote_type = get_custom_emote_type_from_user()
-
- if(!user_emote_type)
- return FALSE
-
- emote_type = user_emote_type
-
- message = our_message
-
/datum/emote/living/custom/proc/emote_is_valid(mob/user, input)
// We're assuming clientless mobs custom emoting is something codebase-driven and not player-driven.
// If players ever get the ability to force clientless mobs to emote, we'd need to reconsider this.
@@ -714,9 +728,22 @@
return FALSE
/datum/emote/living/custom/run_emote(mob/user, params, type_override = null, intentional = FALSE)
- if(params && type_override)
- emote_type = type_override
+ var/our_message = params ? params : get_custom_emote_from_user()
+
+ if(!emote_is_valid(user, our_message))
+ return FALSE
+
+ if(!params)
+ var/user_emote_type = get_custom_emote_type_from_user()
+
+ if(!user_emote_type)
+ return FALSE
+
+ emote_type = user_emote_type
+
+ message = our_message
. = ..()
+
///Reset the message and emote type after it's run.
message = null
emote_type = EMOTE_VISIBLE
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index c0d2e1d4785c0..094c28d84a507 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -388,7 +388,7 @@
if(pulling)
// Are we trying to pull something we are already pulling? Then just stop here, no need to continue.
if(AM == pulling)
- return
+ return FALSE
stop_pulling()
changeNext_move(CLICK_CD_GRABBING)
@@ -456,6 +456,7 @@
update_pull_movespeed()
set_pull_offsets(M, state)
+ return TRUE
/mob/living/proc/set_pull_offsets(mob/living/M, grab_state = GRAB_PASSIVE)
if(M.buckled)
@@ -517,7 +518,7 @@
//same as above
/mob/living/pointed(atom/A as mob|obj|turf in view(client.view, src))
- if(incapacitated)
+ if(INCAPACITATED_IGNORING(src, INCAPABLE_RESTRAINTS))
return FALSE
return ..()
@@ -533,7 +534,7 @@
if (!CAN_SUCCUMB(src))
if(HAS_TRAIT(src, TRAIT_SUCCUMB_OVERRIDE))
if(whispered)
- to_chat(src, span_notice("Your immortal body is keeping you alive. If you want to accept death, you must do so [span_bold("quietly")]."), type=MESSAGE_TYPE_INFO)
+ to_chat(src, span_notice("Your immortal body is keeping you alive! Unless you just press the UI button."), type=MESSAGE_TYPE_INFO)
return
else
to_chat(src, span_warning("You are unable to succumb to death! This life continues."), type=MESSAGE_TYPE_INFO)
@@ -741,9 +742,7 @@
/// Returns what the body_position_pixel_y_offset should be if the current size were `value`
/mob/living/proc/get_pixel_y_offset_standing(value)
- var/icon/living_icon = icon(icon)
- var/height = living_icon.Height()
- return (value-1) * height * 0.5
+ return (value-1) * get_cached_height() * 0.5
/mob/living/proc/update_density()
if(HAS_TRAIT(src, TRAIT_UNDENSE))
@@ -833,7 +832,7 @@
if(!livingdoll.filtered)
livingdoll.filtered = TRUE
var/icon/mob_mask = icon(icon, icon_state)
- if(mob_mask.Height() > ICON_SIZE_Y || mob_mask.Width() > ICON_SIZE_X)
+ if(get_cached_height() > ICON_SIZE_Y || get_cached_width() > ICON_SIZE_X)
var/health_doll_icon_state = health_doll_icon ? health_doll_icon : "megasprite"
mob_mask = icon('icons/hud/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll
livingdoll.add_filter("mob_shape_mask", 1, alpha_mask_filter(icon = mob_mask))
@@ -1200,16 +1199,42 @@
/mob/living/resist_grab(moving_resist)
. = TRUE
- //If we're in an aggressive grab or higher, we're lying down, we're vulnerable to grabs, or we're staggered and we have some amount of stamina loss, we must resist
- if(pulledby.grab_state || body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_GRABWEAKNESS) || get_timed_status_effect_duration(/datum/status_effect/staggered) && (getFireLoss()*0.5 + getBruteLoss()*0.5) >= 40)
- var/altered_grab_state = pulledby.grab_state
- if((body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_GRABWEAKNESS) || get_timed_status_effect_duration(/datum/status_effect/staggered)) && pulledby.grab_state < GRAB_KILL) //If prone, resisting out of a grab is equivalent to 1 grab state higher. won't make the grab state exceed the normal max, however
- altered_grab_state++
- if(HAS_TRAIT(src, TRAIT_GRABRESISTANCE))
- altered_grab_state--
+
+ //Our effective grab state. GRAB_PASSIVE is equal to 0, so if we have no other altering factors to our grab state, we can break free immediately on resist.
+ var/effective_grab_state = pulledby.grab_state
+ //The amount of damage inflicted on a failed resist attempt.
+ var/damage_on_resist_fail = rand(7, 13)
+
+ if(body_position == LYING_DOWN) //If prone, treat the grab state as one higher
+ effective_grab_state++
+
+ if(HAS_TRAIT(src, TRAIT_GRABWEAKNESS)) //If we have grab weakness from some source, treat the grab state as one higher
+ effective_grab_state++
+
+ if(get_timed_status_effect_duration(/datum/status_effect/staggered) && (getFireLoss() + getBruteLoss()) >= 40) //If we are staggered, and we have at least 40 damage, treat the grab state as one higher.
+ effective_grab_state++
+
+ if(HAS_TRAIT(src, TRAIT_GRABRESISTANCE)) //If we have grab resistance from some source, treat the grab state as one lower.
+ effective_grab_state--
+
+ //If our puller is a human, and they have an active hand they're grabbing with (please don't ask how people grab without hands), then apply their unarmed values to the grab values
+ if(pulledby && ishuman(pulledby))
+ var/mob/living/carbon/human/human_puller = pulledby
+ var/obj/item/bodypart/grabbing_bodypart = human_puller.get_active_hand()
+ if(grabbing_bodypart)
+ damage_on_resist_fail += rand(grabbing_bodypart.unarmed_damage_low, grabbing_bodypart.unarmed_damage_high)
+
+ //If our puller is a drunken brawler, they add more damage based on their own damage taken so long as they're drunk and treat the grab state as one higher
+ var/puller_drunkenness = human_puller.get_drunk_amount()
+ if(puller_drunkenness && HAS_TRAIT(human_puller, TRAIT_DRUNKEN_BRAWLER))
+ damage_on_resist_fail += clamp((human_puller.getFireLoss() + human_puller.getBruteLoss()) / 10, 3, 20)
+ effective_grab_state ++
+
+ //We only resist our grab state if we are currently in a grab equal to or greater than GRAB_AGGRESSIVE (1). Otherwise, break out immediately!
+ if(effective_grab_state >= GRAB_AGGRESSIVE)
// see defines/combat.dm, this should be baseline 60%
// Resist chance divided by the value imparted by your grab state. It isn't until you reach neckgrab that you gain a penalty to escaping a grab.
- var/resist_chance = altered_grab_state ? (BASE_GRAB_RESIST_CHANCE / altered_grab_state) : 100
+ var/resist_chance = clamp(BASE_GRAB_RESIST_CHANCE / effective_grab_state, 0, 100)
if(prob(resist_chance))
visible_message(span_danger("[src] breaks free of [pulledby]'s grip!"), \
span_danger("You break free of [pulledby]'s grip!"), null, null, pulledby)
@@ -1218,7 +1243,7 @@
pulledby.stop_pulling()
return FALSE
else
- adjustStaminaLoss(rand(15,20))//failure to escape still imparts a pretty serious penalty
+ adjustStaminaLoss(damage_on_resist_fail) //Do some stamina damage if we fail to resist
visible_message(span_danger("[src] struggles as they fail to break free of [pulledby]'s grip!"), \
span_warning("You struggle as you fail to break free of [pulledby]'s grip!"), null, null, pulledby)
to_chat(pulledby, span_danger("[src] struggles as they fail to break free of your grip!"))
@@ -1896,6 +1921,9 @@ GLOBAL_LIST_EMPTY(fire_appearances)
/// Called when mob changes from a standing position into a prone while lacking the ability to stand up at the moment.
/mob/living/proc/on_fall()
+ SHOULD_CALL_PARENT(TRUE)
+ SEND_SIGNAL(src, COMSIG_LIVING_THUD)
+ loc?.handle_fall(src)//it's loc so it doesn't call the mob's handle_fall which does nothing
return
/mob/living/forceMove(atom/destination)
@@ -1905,6 +1933,7 @@ GLOBAL_LIST_EMPTY(fire_appearances)
buckled.unbuckle_mob(src, force = TRUE)
if(has_buckled_mobs())
unbuckle_all_mobs(force = TRUE)
+ refresh_gravity()
. = ..()
if(. && client)
reset_perspective()
@@ -2977,3 +3006,8 @@ GLOBAL_LIST_EMPTY(fire_appearances)
REMOVE_TRAIT(src, TRAIT_BLOCKING_PROJECTILES, BLOCKING_TRAIT)
cut_overlay(selected_overlay)
update_transform(0.8)
+
+/// Returns the string form of the def_zone we have hit.
+/mob/living/proc/check_hit_limb_zone_name(hit_zone)
+ if(has_limbs)
+ return hit_zone
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 43f361ca443d5..ab91cbc771e66 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -91,12 +91,11 @@
/mob/living/proc/is_ears_covered()
return null
-/mob/living/bullet_act(obj/projectile/proj, def_zone, piercing_hit = FALSE)
+/mob/living/bullet_act(obj/projectile/proj, def_zone, piercing_hit = FALSE, blocked = 0)
. = ..()
if (. != BULLET_ACT_HIT)
return .
- var/blocked = check_projectile_armor(def_zone, proj, is_silent = TRUE)
if(blocked >= 100)
if(proj.is_hostile_projectile())
apply_projectile_effects(proj, def_zone, blocked)
@@ -174,18 +173,21 @@
/mob/living/check_projectile_armor(def_zone, obj/projectile/impacting_projectile, is_silent)
return run_armor_check(def_zone, impacting_projectile.armor_flag, "","",impacting_projectile.armour_penetration, "", is_silent, impacting_projectile.weak_against_armour)
-/mob/living/proc/check_projectile_dismemberment(obj/projectile/P, def_zone)
- return 0
+/mob/living/proc/check_projectile_dismemberment(obj/projectile/proj, def_zone)
+ return
/obj/item/proc/get_volume_by_throwforce_and_or_w_class()
if(throwforce && w_class)
return clamp((throwforce + w_class) * 5, 30, 100)// Add the item's throwforce to its weight class and multiply by 5, then clamp the value between 30 and 100
- else if(w_class)
+ if(w_class)
return clamp(w_class * 8, 20, 100) // Multiply the item's weight class by 8, then clamp the value between 20 and 100
- else
- return 0
+ return 0
/mob/living/proc/set_combat_mode(new_mode, silent = TRUE)
+
+ if(HAS_TRAIT(src, TRAIT_COMBAT_MODE_LOCK))
+ return
+
if(combat_mode == new_mode)
return
. = combat_mode
@@ -203,10 +205,11 @@
/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum)
if(!isitem(AM))
// Filled with made up numbers for non-items.
- if(check_block(AM, 30, "\the [AM.name]", THROWN_PROJECTILE_ATTACK, 0, BRUTE))
+ if(check_block(AM, 30, "\the [AM.name]", THROWN_PROJECTILE_ATTACK, 0, BRUTE) & SUCCESSFUL_BLOCK)
hitpush = FALSE
skipcatch = TRUE
blocked = TRUE
+ return SUCCESSFUL_BLOCK
else
playsound(loc, 'sound/items/weapons/genhit.ogg', 50, TRUE, -1) //Item sounds are handled in the item itself
if(!isvendor(AM) && !iscarbon(AM)) //Vendors have special interactions, while carbon mobs already generate visible messages!
@@ -231,7 +234,7 @@
hitpush = FALSE
if(blocked)
- return TRUE
+ return SUCCESSFUL_BLOCK
var/mob/thrown_by = thrown_item.thrownby?.resolve()
if(thrown_by)
@@ -288,7 +291,7 @@
return FALSE
if(SEND_SIGNAL(src, COMSIG_LIVING_GRAB, target) & (COMPONENT_CANCEL_ATTACK_CHAIN|COMPONENT_SKIP_ATTACK))
return FALSE
- if(target.check_block(src, 0, "[src]'s grab"))
+ if(target.check_block(src, 0, "[src]'s grab", UNARMED_ATTACK))
return FALSE
target.grabbedby(src)
return TRUE
@@ -395,7 +398,7 @@
return FALSE
var/damage = rand(user.melee_damage_lower, user.melee_damage_upper)
- if(check_block(user, damage, "[user]'s [user.attack_verb_simple]", MELEE_ATTACK/*or UNARMED_ATTACK?*/, user.armour_penetration, user.melee_damage_type))
+ if(check_block(user, damage, "[user]'s [user.attack_verb_simple]", UNARMED_ATTACK, user.armour_penetration, user.melee_damage_type))
return FALSE
if(user.attack_sound)
@@ -510,7 +513,7 @@
/mob/living/attack_alien(mob/living/carbon/alien/adult/user, list/modifiers)
SEND_SIGNAL(src, COMSIG_MOB_ATTACK_ALIEN, user, modifiers)
if(LAZYACCESS(modifiers, RIGHT_CLICK))
- if(check_block(user, 0, "[user]'s tackle", MELEE_ATTACK, 0, BRUTE))
+ if(check_block(user, 0, "[user]'s tackle", UNARMED_ATTACK, 0, BRUTE))
return FALSE
user.do_attack_animation(src, ATTACK_EFFECT_DISARM)
return TRUE
@@ -519,7 +522,7 @@
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, span_warning("You don't want to hurt anyone!"))
return FALSE
- if(check_block(user, user.melee_damage_upper, "[user]'s slash", MELEE_ATTACK, 0, BRUTE))
+ if(check_block(user, user.melee_damage_upper, "[user]'s slash", UNARMED_ATTACK, 0, BRUTE))
return FALSE
user.do_attack_animation(src)
return TRUE
@@ -680,9 +683,9 @@
var/touch_protection = (methods & VAPOR) ? getarmor(null, BIO) * 0.01 : 0
SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_MOB, src, reagents, methods, volume_modifier, show_message, touch_protection)
- for(var/reagent in reagents)
- var/datum/reagent/R = reagent
- . |= R.expose_mob(src, methods, reagents[R], show_message, touch_protection)
+ for(var/datum/reagent/reagent as anything in reagents)
+ var/reac_volume = reagents[reagent]
+ . |= reagent.expose_mob(src, methods, reac_volume, show_message, touch_protection)
/// Simplified ricochet angle calculation for mobs (also the base version doesn't work on mobs)
/mob/living/handle_ricochet(obj/projectile/ricocheting_projectile)
@@ -803,6 +806,6 @@
/mob/living/proc/check_block(atom/hit_by, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0, damage_type = BRUTE)
if(SEND_SIGNAL(src, COMSIG_LIVING_CHECK_BLOCK, hit_by, damage, attack_text, attack_type, armour_penetration, damage_type) & SUCCESSFUL_BLOCK)
- return TRUE
+ return SUCCESSFUL_BLOCK
- return FALSE
+ return FAILED_BLOCK
diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm
index 4522b6ca69a52..561df7849deee 100644
--- a/code/modules/mob/living/living_movement.dm
+++ b/code/modules/mob/living/living_movement.dm
@@ -23,7 +23,7 @@
var/area/old_area = old_turf.loc
var/area/new_area = new_turf.loc
// If the area gravity has changed, then it's possible that our state has changed, so update
- if(old_area.has_gravity != new_area.has_gravity)
+ if(old_area.default_gravity != new_area.default_gravity)
refresh_gravity()
/mob/living/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index b8e755faade6a..e2a898b352642 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -62,7 +62,7 @@
var/nuking = FALSE
var/obj/machinery/doomsday_device/doomsday_device
- var/mob/eye/ai_eye/eyeobj
+ var/mob/eye/camera/ai/eyeobj
var/sprint = 10
var/last_moved = 0
var/acceleration = TRUE
@@ -350,6 +350,7 @@
"What is the nature of your emergency? ([CALL_SHUTTLE_REASON_LENGTH] characters required.)",
"Confirm Shuttle Call",
max_length = MAX_MESSAGE_LEN,
+ encode = FALSE,
)
if(incapacitated)
@@ -1139,8 +1140,8 @@
target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct
. = ..()
-/mob/living/silicon/ai/proc/camera_visibility(mob/eye/ai_eye/moved_eye)
- GLOB.cameranet.visibility(moved_eye, client, all_eyes, TRUE)
+/mob/living/silicon/ai/proc/camera_visibility(mob/eye/camera/ai/moved_eye)
+ GLOB.cameranet.visibility(moved_eye)
/mob/living/silicon/ai/forceMove(atom/destination)
. = ..()
diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm
index b8bd1f443eafe..1f8c452f492fc 100644
--- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm
@@ -12,7 +12,6 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new)
var/list/obj/machinery/camera/cameras = list()
/// The chunks of the map, mapping the areas that the cameras can see.
var/list/chunks = list()
- var/ready = 0
/// List of images cloned by all chunk static images put onto turfs cameras cant see
/// Indexed by the plane offset to use
@@ -56,16 +55,12 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new)
if(!.)
chunks[key] = . = new /datum/camerachunk(x, y, lowest.z)
-/// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or its location is set.
-/datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes, use_static = TRUE)
+/// Updates what the camera eye can see. It is recommended you use this when a camera eye moves or its location is set.
+/datum/cameranet/proc/visibility(list/moved_eyes)
if(!islist(moved_eyes))
moved_eyes = moved_eyes ? list(moved_eyes) : list()
- if(islist(other_eyes))
- other_eyes = (other_eyes - moved_eyes)
- else
- other_eyes = list()
- for(var/mob/eye/ai_eye/eye as anything in moved_eyes)
+ for(var/mob/eye/camera/eye as anything in moved_eyes)
var/list/visibleChunks = list()
//Get the eye's turf in case its located in an object like a mecha
var/turf/eye_turf = get_turf(eye)
@@ -129,6 +124,8 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new)
* to change the time between static updates.
*/
/datum/cameranet/proc/majorChunkChange(atom/c, choice, update_delay_buffer)
+ PROTECTED_PROC(TRUE)
+
if(QDELETED(c) && choice == 1)
CRASH("Tried to add a qdeleting camera to the net")
diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
index 7b2c57abc3cc9..73908f162b8b5 100644
--- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
@@ -1,9 +1,9 @@
#define UPDATE_BUFFER_TIME (2.5 SECONDS)
-// CAMERA CHUNK
-//
-// A 16x16 grid of the map with a list of turfs that can be seen, are visible and are dimmed.
-// Allows the AI Eye to stream these chunks and know what it can and cannot see.
+/**
+ * A 16x16 grid of the map with a list of turfs that can be seen, are visible and are dimmed. \
+ * Allows Camera Eyes to stream these chunks and know what it can and cannot see.
+ */
/datum/camerachunk
///turfs our cameras cant see but are inside our grid. associative list of the form: list(obscured turf = static image on that turf)
@@ -16,7 +16,7 @@
///list of all turfs, associative with that turf's static image
///turf -> /image
var/list/turfs = list()
- ///eye mobs that can see turfs in our grid
+ ///Camera mobs that can see turfs in our grid
var/list/seenby = list()
///images currently in use on obscured turfs.
var/list/active_static_images = list()
@@ -27,24 +27,24 @@
var/lower_z
var/upper_z
-/// Add an AI eye to the chunk, then update if changed.
-/datum/camerachunk/proc/add(mob/eye/ai_eye/eye)
+/// Add a camera eye to the chunk, then update if changed.
+/datum/camerachunk/proc/add(mob/eye/camera/eye)
eye.visibleCameraChunks += src
seenby += eye
if(changed)
update()
var/client/client = eye.GetViewerClient()
- if(client && eye.use_static)
+ if(client && eye.use_visibility)
client.images += active_static_images
-/// Remove an AI eye from the chunk
-/datum/camerachunk/proc/remove(mob/eye/ai_eye/eye, remove_static_with_last_chunk = TRUE)
+/// Remove a camera eye from the chunk
+/datum/camerachunk/proc/remove(mob/eye/camera/ai/eye)
eye.visibleCameraChunks -= src
seenby -= eye
var/client/client = eye.GetViewerClient()
- if(client && eye.use_static)
+ if(client && eye.use_visibility)
client.images -= active_static_images
/// Called when a chunk has changed. I.E: A wall was deleted.
@@ -56,6 +56,7 @@
/**
* Updates the chunk, makes sure that it doesn't update too much. If the chunk isn't being watched it will
* instead be flagged to update the next time an AI Eye moves near it.
+ *
* update_delay_buffer is used for cameras that are moving around, which are cyborg inbuilt cameras and
* mecha onboard cameras. This buffer should be usually lower than UPDATE_BUFFER_TIME because
* otherwise a moving camera can run out of its own view before updating static.
@@ -89,8 +90,8 @@
///turfs that we could see last update but cant see now
var/list/newly_obscured_turfs = visibleTurfs - updated_visible_turfs
- for(var/mob/eye/ai_eye/client_eye as anything in seenby)
- var/client/client = client_eye.ai?.client || client_eye.client
+ for(var/mob/eye/camera/client_eye as anything in seenby)
+ var/client/client = client_eye.GetViewerClient()
if(!client)
continue
@@ -119,8 +120,8 @@
changed = FALSE
- for(var/mob/eye/ai_eye/client_eye as anything in seenby)
- var/client/client = client_eye.ai?.client || client_eye.client
+ for(var/mob/eye/camera/client_eye as anything in seenby)
+ var/client/client = client_eye.GetViewerClient()
if(!client)
continue
diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm
index c93054d6d269f..25ccafe26c0f1 100644
--- a/code/modules/mob/living/silicon/ai/freelook/eye.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm
@@ -1,43 +1,50 @@
-// AI EYE
-//
-// An invisible (no icon) mob that the AI controls to look around the station with.
-// It streams chunks as it moves around, which will show it what the AI can and cannot see.
-/mob/eye/ai_eye
+/mob/eye/camera/ai
name = "Inactive AI Eye"
-
icon_state = "ai_camera"
- icon = 'icons/mob/eyemob.dmi'
- invisibility = INVISIBILITY_MAXIMUM
+
hud_possible = list(ANTAG_HUD, AI_DETECT_HUD = HUD_LIST_LIST)
- var/list/visibleCameraChunks = list()
+ /// The AI who owns this eye.
var/mob/living/silicon/ai/ai = null
+ /// Whether this eye will transmit speech near it to the AI.
var/relay_speech = FALSE
- var/use_static = TRUE
- var/static_visibility_range = 16
+ /// Whether this eye can be found with AI detectors.
var/ai_detector_visible = TRUE
+ /// The color of the area if the eye is detectable.
var/ai_detector_color = COLOR_RED
- interaction_range = INFINITY
-/mob/eye/ai_eye/Initialize(mapload)
+/mob/eye/camera/ai/Initialize(mapload)
. = ..()
- GLOB.aiEyes += src
update_ai_detect_hud()
- setLoc(loc, TRUE)
-/mob/eye/ai_eye/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents)
- . = ..()
- if(same_z_layer)
- return
- update_ai_detect_hud()
+/mob/eye/camera/ai/Destroy()
+ if(ai)
+ ai.all_eyes -= src
+ ai = null
+ if(ai_detector_visible)
+ var/datum/atom_hud/ai_detector/hud = GLOB.huds[DATA_HUD_AI_DETECT]
+ hud.remove_atom_from_hud(src)
+ var/list/L = hud_list[AI_DETECT_HUD]
+ QDEL_LIST(L)
+ return ..()
-/mob/eye/ai_eye/examine(mob/user) //Displays a silicon's laws to ghosts
- . = ..()
- if(istype(ai) && ai.laws && isobserver(user))
- . += "[ai] has the following laws: "
- for(var/law in ai.laws.get_law_list(include_zeroth = TRUE))
- . += law
+/**
+ * Returns a list of turfs visible to the client's viewsize. \
+ * Note that this will return an empty list if the camera's loc is not a turf.
+ */
+/mob/eye/camera/ai/proc/get_visible_turfs()
+ RETURN_TYPE(/list/turf)
+ SHOULD_BE_PURE(TRUE)
+ SHOULD_CALL_PARENT(TRUE)
-/mob/eye/ai_eye/proc/update_ai_detect_hud()
+ if(!isturf(loc))
+ return list()
+ var/client/C = GetViewerClient()
+ var/view = C ? getviewsize(C.view) : getviewsize(world.view)
+ var/turf/lowerleft = locate(max(1, x - (view[1] - 1)/2), max(1, y - (view[2] - 1)/2), z)
+ var/turf/upperright = locate(min(world.maxx, lowerleft.x + (view[1] - 1)), min(world.maxy, lowerleft.y + (view[2] - 1)), lowerleft.z)
+ return block(lowerleft, upperright)
+
+/mob/eye/camera/ai/proc/update_ai_detect_hud()
var/datum/atom_hud/ai_detector/hud = GLOB.huds[DATA_HUD_AI_DETECT]
var/list/old_images = hud_list[AI_DETECT_HUD]
if(!ai_detector_visible)
@@ -75,42 +82,17 @@
active_hud_list[AI_DETECT_HUD] = new_images
hud.add_atom_to_hud(src)
-/mob/eye/ai_eye/proc/get_visible_turfs()
- if(!isturf(loc))
- return list()
- var/client/C = GetViewerClient()
- var/view = C ? getviewsize(C.view) : getviewsize(world.view)
- var/turf/lowerleft = locate(max(1, x - (view[1] - 1)/2), max(1, y - (view[2] - 1)/2), z)
- var/turf/upperright = locate(min(world.maxx, lowerleft.x + (view[1] - 1)), min(world.maxy, lowerleft.y + (view[2] - 1)), lowerleft.z)
- return block(lowerleft, upperright)
-
-/// Used in cases when the eye is located in a movable object (i.e. mecha)
-/mob/eye/ai_eye/proc/update_visibility()
- SIGNAL_HANDLER
- if(use_static)
- ai.camera_visibility(src)
-
-// Use this when setting the aiEye's location.
-// It will also stream the chunk that the new loc is in.
-
-/mob/eye/ai_eye/proc/setLoc(destination, force_update = FALSE)
+/mob/eye/camera/ai/setLoc(destination, force_update = FALSE)
if(!ai)
return
if(!isturf(ai.loc))
return
- destination = get_turf(destination)
- if(!force_update && (destination == get_turf(src)))
- return //we are already here!
- if (destination)
- abstract_move(destination)
- else
- moveToNullspace()
- if(use_static)
- ai.camera_visibility(src)
+
+ . = ..()
+
if(ai.client && !ai.multicam_on)
ai.client.set_eye(src)
update_ai_detect_hud()
- update_parallax_contents()
//Holopad
if(istype(ai.current, /obj/machinery/holopad))
var/obj/machinery/holopad/H = ai.current
@@ -122,33 +104,31 @@
if(ai.master_multicam)
ai.master_multicam.refresh_view()
-/mob/eye/ai_eye/zMove(dir, turf/target, z_move_flags = NONE, recursions_left = 1, list/falling_movs)
- . = ..()
- if(.)
- setLoc(loc, force_update = TRUE)
-
-/mob/eye/ai_eye/Move()
- return
+/mob/eye/camera/ai/update_visibility()
+ if(ai)
+ ai.camera_visibility(src)
+ else
+ ..()
-/mob/eye/ai_eye/proc/GetViewerClient()
+/mob/eye/camera/ai/GetViewerClient()
if(ai)
return ai.client
return null
-/mob/eye/ai_eye/Destroy()
- if(ai)
- ai.all_eyes -= src
- ai = null
- for(var/V in visibleCameraChunks)
- var/datum/camerachunk/c = V
- c.remove(src)
- GLOB.aiEyes -= src
- if(ai_detector_visible)
- var/datum/atom_hud/ai_detector/hud = GLOB.huds[DATA_HUD_AI_DETECT]
- hud.remove_atom_from_hud(src)
- var/list/L = hud_list[AI_DETECT_HUD]
- QDEL_LIST(L)
- return ..()
+/mob/eye/camera/ai/examine(mob/user) //Displays a silicon's laws to ghosts
+ . = ..()
+ if(istype(ai) && ai.laws && isobserver(user))
+ . += "[ai] has the following laws: "
+ for(var/law in ai.laws.get_law_list(include_zeroth = TRUE))
+ . += law
+
+/mob/eye/camera/ai/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents)
+ . = ..()
+ if(same_z_layer)
+ return
+ update_ai_detect_hud()
+
+/*----------------------------------------------------*/
/atom/proc/move_camera_by_click()
if(!isAI(usr))
@@ -189,7 +169,6 @@
sprint = initial(sprint)
ai_tracking_tool.reset_tracking()
-
#undef SPRINT_PER_STEP
#undef MAX_SPRINT
#undef SPRINT_PER_TICK
@@ -215,12 +194,11 @@
/mob/living/silicon/ai/proc/create_eye()
if(eyeobj)
return
- eyeobj = new /mob/eye/ai_eye()
+ eyeobj = new /mob/eye/camera/ai()
all_eyes += eyeobj
eyeobj.ai = src
- eyeobj.setLoc(loc)
eyeobj.name = "[name] (AI Eye)"
- eyeobj.real_name = eyeobj.name
+ eyeobj.setLoc(loc, TRUE)
set_eyeobj_visible(TRUE)
/mob/living/silicon/ai/proc/set_eyeobj_visible(state = TRUE)
@@ -241,7 +219,7 @@
acceleration = !acceleration
to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].")
-/mob/eye/ai_eye/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, list/message_mods = list(), message_range)
+/mob/eye/camera/ai/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, list/message_mods = list(), message_range)
. = ..()
if(relay_speech && speaker && ai && !radio_freq && speaker != ai && GLOB.cameranet.checkCameraVis(speaker))
ai.relay_speech(message, speaker, message_language, raw_message, radio_freq, spans, message_mods)
diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm
index 12ee1ce3b5371..049243d90f1d4 100644
--- a/code/modules/mob/living/silicon/ai/multicam.dm
+++ b/code/modules/mob/living/silicon/ai/multicam.dm
@@ -4,11 +4,11 @@
var/mob/living/silicon/ai/ai
var/mutable_appearance/highlighted_background
var/highlighted = FALSE
- var/mob/eye/ai_eye/pic_in_pic/aiEye
+ var/mob/eye/camera/ai/pic_in_pic/aiEye
/atom/movable/screen/movable/pic_in_pic/ai/Initialize(mapload, datum/hud/hud_owner)
. = ..()
- aiEye = new /mob/eye/ai_eye/pic_in_pic()
+ aiEye = new /mob/eye/camera/ai/pic_in_pic()
aiEye.screen = src
/atom/movable/screen/movable/pic_in_pic/ai/Destroy()
@@ -126,37 +126,38 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
//Dummy camera eyes
-/mob/eye/ai_eye/pic_in_pic
+/mob/eye/camera/ai/pic_in_pic
name = "Secondary AI Eye"
+ icon_state = "ai_pip_camera"
invisibility = INVISIBILITY_OBSERVER
mouse_opacity = MOUSE_OPACITY_ICON
- icon_state = "ai_pip_camera"
+ ai_detector_color = COLOR_ORANGE
+
var/atom/movable/screen/movable/pic_in_pic/ai/screen
var/list/cameras_telegraphed = list()
var/telegraph_cameras = TRUE
var/telegraph_range = 7
- ai_detector_color = COLOR_ORANGE
-/mob/eye/ai_eye/pic_in_pic/GetViewerClient()
+/mob/eye/camera/ai/pic_in_pic/GetViewerClient()
if(screen?.ai)
return screen.ai.client
-/mob/eye/ai_eye/pic_in_pic/setLoc(turf/destination, force_update = FALSE)
- if (destination)
- abstract_move(destination)
- else
- moveToNullspace()
+/mob/eye/camera/ai/pic_in_pic/update_visibility()
if(screen?.ai)
screen.ai.camera_visibility(src)
else
- GLOB.cameranet.visibility(src)
+ ..()
+
+/mob/eye/camera/ai/pic_in_pic/setLoc(turf/destination, force_update = FALSE)
+ . = ..()
update_camera_telegraphing()
update_ai_detect_hud()
-/mob/eye/ai_eye/pic_in_pic/get_visible_turfs()
+/mob/eye/camera/ai/pic_in_pic/get_visible_turfs()
+ SHOULD_CALL_PARENT(FALSE) //we do our own thing here
return screen ? screen.get_visible_turfs() : list()
-/mob/eye/ai_eye/pic_in_pic/proc/update_camera_telegraphing()
+/mob/eye/camera/ai/pic_in_pic/proc/update_camera_telegraphing()
if(!telegraph_cameras)
return
var/list/obj/machinery/camera/add = list()
@@ -185,7 +186,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
C.in_use_lights++
C.update_appearance()
-/mob/eye/ai_eye/pic_in_pic/proc/disable_camera_telegraphing()
+/mob/eye/camera/ai/pic_in_pic/proc/disable_camera_telegraphing()
telegraph_cameras = FALSE
for (var/obj/machinery/camera/C as anything in cameras_telegraphed)
if(QDELETED(C))
@@ -194,7 +195,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
C.update_appearance()
cameras_telegraphed.Cut()
-/mob/eye/ai_eye/pic_in_pic/Destroy()
+/mob/eye/camera/ai/pic_in_pic/Destroy()
disable_camera_telegraphing()
return ..()
diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm
index 85e749d276541..67083168eb30e 100644
--- a/code/modules/mob/living/silicon/death.dm
+++ b/code/modules/mob/living/silicon/death.dm
@@ -1,8 +1,13 @@
/mob/living/silicon/spawn_gibs()
new /obj/effect/gibspawner/robot(drop_location(), src)
-/mob/living/silicon/spawn_dust()
- new /obj/effect/decal/remains/robot(loc)
+/mob/living/silicon/spawn_dust(just_ash)
+ if(just_ash)
+ return ..()
+
+ var/obj/effect/decal/remains/robot/robones = new(loc)
+ robones.pixel_z = -6
+ robones.pixel_w = rand(-1, 1)
/mob/living/silicon/death(gibbed)
diag_hud_set_status()
diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm
index cefd9d144b764..1754a89aa5cb9 100644
--- a/code/modules/mob/living/silicon/laws.dm
+++ b/code/modules/mob/living/silicon/laws.dm
@@ -24,7 +24,7 @@
/mob/living/silicon/proc/post_lawchange(announce = TRUE)
throw_alert(ALERT_NEW_LAW, /atom/movable/screen/alert/newlaw)
if(announce && last_lawchange_announce != world.time)
- to_chat(src, span_boldannounce("Your laws have been changed."))
+ to_chat(src, span_bolddanger("Your laws have been changed."))
SEND_SOUND(src, sound('sound/machines/cryo_warning.ogg'))
// lawset modules cause this function to be executed multiple times in a tick, so we wait for the next tick in order to be able to see the entire lawset
addtimer(CALLBACK(src, PROC_REF(show_laws)), 0)
diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm
index 91627b5099fe5..99c5686aa5325 100644
--- a/code/modules/mob/living/silicon/robot/death.dm
+++ b/code/modules/mob/living/silicon/robot/death.dm
@@ -7,9 +7,6 @@
QDEL_NULL(mmi)
return ..()
-/mob/living/silicon/robot/spawn_dust()
- new /obj/effect/decal/remains/robot(loc)
-
/mob/living/silicon/robot/death(gibbed)
if(stat == DEAD)
return
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 88876e0233e52..14a920b350ae1 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -19,6 +19,7 @@
AddElement(/datum/element/ridable, /datum/component/riding/creature/cyborg)
RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge))
RegisterSignal(src, COMSIG_LIGHT_EATER_ACT, PROC_REF(on_light_eater))
+ RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_GOT_DAMPENED), PROC_REF(on_dampen))
robot_modules_background = new()
robot_modules_background.icon_state = "block"
@@ -134,6 +135,12 @@
QDEL_LIST(upgrades)
QDEL_NULL(cell)
QDEL_NULL(robot_suit)
+
+ if (smoke_particles)
+ remove_shared_particles(smoke_particles)
+ if (spark_particles)
+ remove_shared_particles(spark_particles)
+
return ..()
/mob/living/silicon/robot/Topic(href, href_list)
@@ -290,7 +297,7 @@
cut_overlays()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
icon_state = model.cyborg_base_icon
- if(stat != DEAD && !(HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || IsStun() || IsParalyzed() || low_power_mode)) //Not dead, not stunned.
+ if(stat < UNCONSCIOUS && !HAS_TRAIT(src, TRAIT_KNOCKEDOUT) && !IsStun() && !IsParalyzed() && !low_power_mode) //Not dead, not stunned.
if(!eye_lights)
eye_lights = new()
if(lamp_enabled || lamp_doom)
@@ -565,7 +572,7 @@
removing.update_appearance()
else
- to_chat(src, span_boldannounce("Oops! Something went very wrong, your MMI was unable to receive your mind. \
+ to_chat(src, span_bolddanger("Oops! Something went very wrong, your MMI was unable to receive your mind. \
You have been ghosted. Please make a bug report so we can fix this bug."))
ghostize()
stack_trace("Borg MMI lacked a brainmob")
@@ -957,6 +964,10 @@
buckle_mob_flags= RIDER_NEEDS_ARM // just in case
return ..()
+/mob/living/silicon/robot/post_buckle_mob(mob/living/victim_to_boot)
+ if(HAS_TRAIT(src, TRAIT_GOT_DAMPENED))
+ eject_riders()
+
/mob/living/silicon/robot/can_resist()
if(lockcharge)
balloon_alert(src, "locked down!")
@@ -1053,3 +1064,16 @@
. = ..()
set_stat(CONSCIOUS) //This is a horrible hack, but silicon code forced my hand
update_stat()
+
+/mob/living/silicon/robot/proc/on_dampen()
+ SIGNAL_HANDLER
+ eject_riders()
+
+/mob/living/silicon/robot/proc/eject_riders()
+ if(!length(buckled_mobs))
+ return
+ for(var/mob/living/buckled_mob as anything in buckled_mobs)
+ buckled_mob.visible_message(span_warning("[buckled_mob] is knocked off of [src] by the charge in [src]'s chassis induced by the hyperkinetic dampener field!"))
+ buckled_mob.Paralyze(1 SECONDS)
+ unbuckle_mob(buckled_mob)
+ do_sparks(5, 0, src)
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index d9caad422927e..a451166bcada8 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
if(opened)
to_chat(user, span_warning("You must close the cover to swipe an ID card!"))
else
- if(allowed(usr))
+ if(allowed(user))
locked = !locked
to_chat(user, span_notice("You [ locked ? "lock" : "unlock"] [src]'s cover."))
update_icons()
@@ -193,41 +193,34 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
var/brute_percent = bruteloss / maxHealth
var/burn_percent = fireloss / maxHealth
+ var/old_smoke = smoke_particles
if (brute_percent > MODERATE_DAMAGE_UPPER_BOUND)
- if(!smoke_particles)
- smoke_particles = new(src, /particles/smoke/cyborg/heavy_damage, PARTICLE_ATTACH_MOB)
- else if(!istype(smoke_particles.particles, /particles/smoke/cyborg/heavy_damage)) //TODO: needs to be darker
- QDEL_NULL(smoke_particles)
- smoke_particles = new(src, /particles/smoke/cyborg/heavy_damage, PARTICLE_ATTACH_MOB)
-
+ smoke_particles = /particles/smoke/cyborg/heavy_damage
else if (brute_percent > LOW_DAMAGE_UPPER_BOUND)
- if(!smoke_particles)
- smoke_particles = new(src, /particles/smoke/cyborg, PARTICLE_ATTACH_MOB)
- else if(!istype(smoke_particles.particles, /particles/smoke/cyborg))
- QDEL_NULL(smoke_particles)
- smoke_particles = new(src, /particles/smoke/cyborg, PARTICLE_ATTACH_MOB)
-
+ smoke_particles = /particles/smoke/cyborg
else
- if(smoke_particles)
- QDEL_NULL(smoke_particles)
+ smoke_particles = null
- if (burn_percent > MODERATE_DAMAGE_UPPER_BOUND)
- if(!spark_particles)
- spark_particles = new(src, /particles/embers/spark/severe, PARTICLE_ATTACH_MOB)
- else if(!istype(spark_particles.particles, /particles/embers/spark/severe)) //TODO: needs to be more dramatic
- QDEL_NULL(spark_particles)
- spark_particles = new(src, /particles/embers/spark/severe, PARTICLE_ATTACH_MOB)
+ if (old_smoke != smoke_particles)
+ if (old_smoke)
+ remove_shared_particles(old_smoke)
+ if (smoke_particles)
+ add_shared_particles(smoke_particles)
+ var/old_sparks = spark_particles
+ if (burn_percent > MODERATE_DAMAGE_UPPER_BOUND)
+ spark_particles = /particles/embers/spark/severe
else if (burn_percent > LOW_DAMAGE_UPPER_BOUND)
- if(!spark_particles)
- spark_particles = new(src, /particles/embers/spark, PARTICLE_ATTACH_MOB)
- else if(!istype(spark_particles.particles, /particles/embers/spark))
- QDEL_NULL(spark_particles)
- spark_particles = new(src, /particles/embers/spark, PARTICLE_ATTACH_MOB)
-
+ spark_particles = /particles/embers/spark
else
- if(spark_particles)
- QDEL_NULL(spark_particles)
+ spark_particles = null
+
+ if (old_sparks != spark_particles)
+ if (old_sparks)
+ remove_shared_particles(old_sparks)
+ if (spark_particles)
+ add_shared_particles(spark_particles)
+
#undef LOW_DAMAGE_UPPER_BOUND
#undef MODERATE_DAMAGE_UPPER_BOUND
@@ -280,7 +273,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
. &= ~(SHOVE_CAN_MOVE|SHOVE_CAN_HIT_SOMETHING)
/mob/living/silicon/robot/welder_act(mob/living/user, obj/item/tool)
- if(user.combat_mode && usr != src)
+ if(user.combat_mode && user != src)
return FALSE
. = TRUE
user.changeNext_move(CLICK_CD_MELEE)
@@ -456,7 +449,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
if(EXPLODE_DEVASTATE)
investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
gib(DROP_ALL_REMAINS)
- return
+ return TRUE
if(EXPLODE_HEAVY)
if (stat != DEAD)
adjustBruteLoss(60)
diff --git a/code/modules/mob/living/silicon/robot/robot_defines.dm b/code/modules/mob/living/silicon/robot/robot_defines.dm
index dd4ba8b6bd499..07b8322bd7c48 100644
--- a/code/modules/mob/living/silicon/robot/robot_defines.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defines.dm
@@ -16,6 +16,7 @@
has_limbs = TRUE
hud_type = /datum/hud/robot
unique_name = TRUE
+ mouse_drop_zone = TRUE
///Represents the cyborg's model (engineering, medical, etc.)
var/obj/item/robot_model/model = null
@@ -118,10 +119,10 @@
var/low_power_mode = FALSE
///So they can initialize sparks whenever/N
var/datum/effect_system/spark_spread/spark_system
- ///Smoke particle holder for brute damage
- var/obj/effect/abstract/particle_holder/smoke_particles = null
- ///Spark particle holder for burn damage
- var/obj/effect/abstract/particle_holder/spark_particles = null
+ ///Smoke particle type for brute damage
+ var/smoke_particles
+ ///Spark particle type for burn damage
+ var/spark_particles
///Jetpack-like effect.
var/ionpulse = FALSE
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index d19526e584c79..734ec24ef028c 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -77,6 +77,7 @@
TRAIT_SILICON_ACCESS,
TRAIT_REAGENT_SCANNER,
TRAIT_UNOBSERVANT,
+ TRAIT_NO_SLIP_ALL,
)
add_traits(traits_to_apply, ROUNDSTART_TRAIT)
@@ -264,7 +265,7 @@
if (lawcache_zeroth)
if (force || (lawcache_zeroth in lawcache_lawcheck))
- say("[radiomod] 0. [lawcache_zeroth]", forced = forced_log_message)
+ say("[radiomod] 0. [lawcache_zeroth]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE))
sleep(1 SECONDS)
for (var/index in 1 to length(lawcache_hacked))
@@ -273,7 +274,7 @@
if (length(law) <= 0)
continue
if (force || (law in lawcache_hackedcheck))
- say("[radiomod] [num]. [law]", forced = forced_log_message)
+ say("[radiomod] [num]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE))
sleep(1 SECONDS)
for (var/index in 1 to length(lawcache_ion))
@@ -282,7 +283,7 @@
if (length(law) <= 0)
return
if (force || (law in lawcache_ioncheck))
- say("[radiomod] [num]. [law]", forced = forced_log_message)
+ say("[radiomod] [num]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE))
sleep(1 SECONDS)
var/number = 1
@@ -291,7 +292,7 @@
if (length(law) <= 0)
continue
if (force || (law in lawcache_lawcheck))
- say("[radiomod] [number]. [law]", forced = forced_log_message)
+ say("[radiomod] [number]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE))
number++
sleep(1 SECONDS)
@@ -301,7 +302,7 @@
if (length(law) <= 0)
continue
if (force || (law in lawcache_lawcheck))
- say("[radiomod] [number]. [law]", forced = forced_log_message)
+ say("[radiomod] [number]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE))
number++
sleep(1 SECONDS)
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index 404b0324f71a0..7a78cb4be0537 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -82,13 +82,13 @@
/mob/living/silicon/check_block(atom/hitby, damage, attack_text, attack_type, armour_penetration, damage_type, attack_flag)
. = ..()
- if(.)
- return TRUE
+ if(. == SUCCESSFUL_BLOCK)
+ return SUCCESSFUL_BLOCK
if(damage_type == BRUTE && attack_type == UNARMED_ATTACK && attack_flag == MELEE && damage <= 10)
playsound(src, 'sound/effects/bang.ogg', 10, TRUE)
visible_message(span_danger("[attack_text] doesn't leave a dent on [src]!"), vision_distance = COMBAT_MESSAGE_RANGE)
- return TRUE
- return FALSE
+ return SUCCESSFUL_BLOCK
+ return FAILED_BLOCK
/mob/living/silicon/attack_drone(mob/living/basic/drone/user)
if(user.combat_mode)
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 2c5d4c6aa91bd..38599c204653a 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -1014,7 +1014,7 @@ Pass a positive integer as an argument to override a bot's default speed.
to_chat(src, span_boldnotice(get_emagged_message()))
return
if(!(bot_cover_flags & BOT_COVER_HACKED))
- to_chat(user, span_boldannounce("You fail to repair [src]'s [hackables]."))
+ to_chat(user, span_bolddanger("You fail to repair [src]'s [hackables]."))
return
bot_cover_flags &= ~(BOT_COVER_EMAGGED|BOT_COVER_HACKED)
to_chat(user, span_notice("You reset the [src]'s [hackables]."))
diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm
index 80e2b8c0c8343..143c79534d359 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -190,67 +190,67 @@
to_chat(user, span_notice("You complete the ED-209."))
qdel(src)
-//Floorbot assemblies
-/obj/item/bot_assembly/floorbot
+//Repairbot assemblies
+/obj/item/bot_assembly/repairbot
desc = "It's a toolbox with tiles sticking out the top."
- name = "tiles and toolbox"
- icon_state = "toolbox_tiles"
+ name = "Repairbot Chasis"
+ icon_state = "repairbot_base"
throwforce = 10
- created_name = "Floorbot"
+ created_name = "Repairbot"
+ ///the toolbox our repairbot is made of
var/toolbox = /obj/item/storage/toolbox/mechanical
- var/toolbox_color = "" //Blank for blue, r for red, y for yellow, etc.
+ ///the color of our toolbox
+ var/toolbox_color = ""
-/obj/item/bot_assembly/floorbot/Initialize(mapload)
+/obj/item/bot_assembly/repairbot/Initialize(mapload)
. = ..()
update_appearance()
-/obj/item/bot_assembly/floorbot/update_name()
- . = ..()
- switch(build_step)
- if(ASSEMBLY_SECOND_STEP)
- name = "incomplete floorbot assembly"
- else
- name = initial(name)
+/obj/item/bot_assembly/repairbot/proc/set_color(new_color)
+ add_atom_colour(new_color, FIXED_COLOUR_PRIORITY)
+ toolbox_color = new_color
-/obj/item/bot_assembly/floorbot/update_desc()
+/obj/item/bot_assembly/repairbot/update_desc()
. = ..()
switch(build_step)
- if(ASSEMBLY_SECOND_STEP)
- desc = "It's a toolbox with tiles sticking out the top and a sensor attached."
+ if(ASSEMBLY_FIRST_STEP)
+ desc = "It's a toolbox with a giant monitor sticking out!."
else
desc = initial(desc)
-/obj/item/bot_assembly/floorbot/update_icon_state()
+/obj/item/bot_assembly/repairbot/update_overlays()
. = ..()
- switch(build_step)
- if(ASSEMBLY_FIRST_STEP)
- icon_state = "[toolbox_color]toolbox_tiles"
- if(ASSEMBLY_SECOND_STEP)
- icon_state = "[toolbox_color]toolbox_tiles_sensor"
+ if(build_step >= ASSEMBLY_FIRST_STEP)
+ . += mutable_appearance(icon, "repairbot_base_sensor", appearance_flags = RESET_COLOR)
+ if(build_step >= ASSEMBLY_SECOND_STEP)
+ . += mutable_appearance(icon, "repairbot_base_arms", appearance_flags = RESET_COLOR)
-/obj/item/bot_assembly/floorbot/attackby(obj/item/W, mob/user, params)
+/obj/item/bot_assembly/repairbot/attackby(obj/item/item, mob/user, params)
..()
switch(build_step)
if(ASSEMBLY_FIRST_STEP)
- if(isprox(W))
- if(!user.temporarilyRemoveItemFromInventory(W))
- return
- to_chat(user, span_notice("You add [W] to [src]."))
- qdel(W)
- build_step++
- update_appearance()
-
+ if(!istype(item, /obj/item/bodypart/arm/left/robot) && !istype(item, /obj/item/bodypart/arm/right/robot))
+ return
+ if(!can_finish_build(item, user))
+ return
+ build_step++
+ to_chat(user, span_notice("You add [item] to [src]. Boop beep!"))
+ qdel(item)
+ update_appearance()
if(ASSEMBLY_SECOND_STEP)
- if(istype(W, /obj/item/bodypart/arm/left/robot) || istype(W, /obj/item/bodypart/arm/right/robot))
- if(!can_finish_build(W, user))
- return
- var/mob/living/simple_animal/bot/floorbot/A = new(drop_location(), toolbox_color)
- A.name = created_name
- A.robot_arm = W.type
- A.toolbox = toolbox
- to_chat(user, span_notice("You add [W] to [src]. Boop beep!"))
- qdel(W)
- qdel(src)
+ if(!istype(item, /obj/item/stack/conveyor))
+ return
+ if(!can_finish_build(item, user))
+ return
+ var/mob/living/basic/bot/repairbot/repair = new(drop_location())
+ repair.name = created_name
+ repair.toolbox = toolbox
+ repair.set_color(toolbox_color)
+ to_chat(user, span_notice("You add [item] to [src]. Boop beep!"))
+ var/obj/item/stack/crafting_stack = item
+ var/atom/used_belt = crafting_stack.split_stack(user, 1)
+ qdel(used_belt)
+ qdel(src)
//Medbot Assembly
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index df9db2defb173..81fad948ae12d 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -86,7 +86,7 @@
var/obj/projectile/fired_bullet = new projectile(loc)
playsound(src, shoot_sound, 50, TRUE)
- fired_bullet.preparePixelProjectile(target, src)
+ fired_bullet.aim_projectile(target, src)
fired_bullet.fire()
/mob/living/simple_animal/bot/secbot/ed209/emp_act(severity)
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
deleted file mode 100644
index ae17e58686c65..0000000000000
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ /dev/null
@@ -1,448 +0,0 @@
-#define HULL_BREACH 1
-#define LINE_SPACE_MODE 2
-#define FIX_TILE 3
-#define AUTO_TILE 4
-#define PLACE_TILE 5
-#define REPLACE_TILE 6
-#define TILE_EMAG 7
-
-//Floorbot
-/mob/living/simple_animal/bot/floorbot
- name = "\improper Floorbot"
- desc = "A little floor repairing robot, he looks so excited!"
- icon = 'icons/mob/silicon/aibots.dmi'
- icon_state = "floorbot0"
- density = FALSE
- health = 25
- maxHealth = 25
-
- req_one_access = list(ACCESS_ROBOTICS, ACCESS_CONSTRUCTION)
- radio_key = /obj/item/encryptionkey/headset_eng
- radio_channel = RADIO_CHANNEL_ENGINEERING
- bot_type = FLOOR_BOT
- hackables = "floor construction protocols"
- path_image_color = "#FFA500"
- possessed_message = "You are a floorbot! Repair the hull to the best of your ability!"
-
- var/process_type //Determines what to do when process_scan() receives a target. See process_scan() for details.
- var/targetdirection
- var/replacetiles = FALSE
- var/placetiles = FALSE
- var/maxtiles = 100
- var/obj/item/stack/tile/tilestack
- var/fixfloors = TRUE
- var/autotile = FALSE
- var/turf/target
- var/toolbox = /obj/item/storage/toolbox/mechanical
- var/toolbox_color = ""
-
-/mob/living/simple_animal/bot/floorbot/Initialize(mapload, new_toolbox_color)
- . = ..()
- ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
- toolbox_color = new_toolbox_color
- update_appearance(UPDATE_ICON)
-
- // Doing this hurts my soul, but simplebot access reworks are for another day.
- var/datum/id_trim/job/engi_trim = SSid_access.trim_singletons_by_path[/datum/id_trim/job/station_engineer]
- access_card.add_access(engi_trim.access + engi_trim.wildcard_access)
- prev_access = access_card.access.Copy()
-
- if(toolbox_color == "s")
- health = 100
- maxHealth = 100
-
-/mob/living/simple_animal/bot/floorbot/Exited(atom/movable/gone, direction)
- if(tilestack == gone)
- if(tilestack && tilestack.max_amount < tilestack.amount) //split the stack if it exceeds its normal max_amount
- var/iterations = round(tilestack.amount/tilestack.max_amount) //round() without second arg floors the value
- for(var/a in 1 to iterations)
- if(a == iterations)
- tilestack.split_stack(null, tilestack.amount - tilestack.max_amount)
- else
- tilestack.split_stack(null, tilestack.max_amount)
- tilestack = null
-
-/mob/living/simple_animal/bot/floorbot/turn_on()
- . = ..()
- update_appearance()
-
-/mob/living/simple_animal/bot/floorbot/turn_off()
- ..()
- update_appearance()
-
-/mob/living/simple_animal/bot/floorbot/bot_reset()
- ..()
- target = null
- toggle_magnet(FALSE)
-
-/mob/living/simple_animal/bot/floorbot/attackby(obj/item/W , mob/user, params)
- if(istype(W, /obj/item/stack/tile/iron))
- to_chat(user, span_notice("The floorbot can produce normal tiles itself."))
- return
- if(istype(W, /obj/item/stack/tile))
- var/old_amount = tilestack ? tilestack.amount : 0
- var/obj/item/stack/tile/tiles = W
- if(tilestack)
- if(!tiles.can_merge(tilestack))
- to_chat(user, span_warning("Different custom tiles are already inside the floorbot."))
- return
- if(tilestack.amount >= maxtiles)
- to_chat(user, span_warning("The floorbot can't hold any more custom tiles."))
- return
- tiles.merge(tilestack, maxtiles)
- else
- if(tiles.amount > maxtiles)
- tilestack = tilestack.split_stack(null, maxtiles)
- else
- tilestack = W
- tilestack.forceMove(src)
- to_chat(user, span_notice("You load [tilestack.amount - old_amount] tiles into the floorbot. It now contains [tilestack.amount] tiles."))
- return
- else
- ..()
-
-/mob/living/simple_animal/bot/floorbot/emag_act(mob/user, obj/item/card/emag/emag_card)
- . = ..()
- if(!(bot_cover_flags & BOT_COVER_EMAGGED))
- return
- balloon_alert(user, "safeties disabled")
- audible_message(span_danger("[src] buzzes oddly!"))
- return TRUE
-
-///mobs should use move_resist instead of anchored.
-/mob/living/simple_animal/bot/floorbot/proc/toggle_magnet(engage = TRUE, change_icon = TRUE)
- if(engage)
- ADD_TRAIT(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT)
- move_resist = INFINITY
- if(change_icon)
- icon_state = "[toolbox_color]floorbot-c"
- else
- REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT)
- move_resist = initial(move_resist)
- if(change_icon)
- update_icon()
-
-// Variables sent to TGUI
-/mob/living/simple_animal/bot/floorbot/ui_data(mob/user)
- var/list/data = ..()
- if(!(bot_cover_flags & BOT_COVER_LOCKED) || HAS_SILICON_ACCESS(user))
- data["custom_controls"]["tile_hull"] = autotile
- data["custom_controls"]["place_tiles"] = placetiles
- data["custom_controls"]["place_custom"] = replacetiles
- data["custom_controls"]["repair_damage"] = fixfloors
- data["custom_controls"]["traction_magnets"] = !!HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT)
- data["custom_controls"]["tile_stack"] = 0
- data["custom_controls"]["line_mode"] = FALSE
- if(tilestack)
- data["custom_controls"]["tile_stack"] = tilestack.amount
- if(targetdirection)
- data["custom_controls"]["line_mode"] = dir2text(targetdirection)
- return data
-
-// Actions received from TGUI
-/mob/living/simple_animal/bot/floorbot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
- . = ..()
- var/mob/user = ui.user
- if(. || (bot_cover_flags & BOT_COVER_LOCKED && !HAS_SILICON_ACCESS(user)))
- return
-
- switch(action)
- if("place_custom")
- replacetiles = !replacetiles
- if("place_tiles")
- placetiles = !placetiles
- if("repair_damage")
- fixfloors = !fixfloors
- if("tile_hull")
- autotile = !autotile
- if("traction_magnets")
- toggle_magnet(!HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT), FALSE)
- if("eject_tiles")
- if(tilestack)
- tilestack.forceMove(drop_location())
- if("line_mode")
- var/setdir = tgui_input_list(user, "Select construction direction", "Direction", list("north", "east", "south", "west", "disable"))
- if(isnull(setdir) || QDELETED(ui) || ui.status != UI_INTERACTIVE)
- return
- switch(setdir)
- if("north")
- targetdirection = 1
- if("south")
- targetdirection = 2
- if("east")
- targetdirection = 4
- if("west")
- targetdirection = 8
- if("disable")
- targetdirection = null
-
-/mob/living/simple_animal/bot/floorbot/handle_automated_action()
- if(!..())
- return
-
- if(mode == BOT_REPAIRING)
- return
-
- if(prob(5))
- audible_message("[src] makes an excited booping beeping sound!")
-
- var/list/tiles_scanned = list()
- //Normal scanning procedure. We have tiles loaded, are not emagged.
- if(!target && !(bot_cover_flags & BOT_COVER_EMAGGED))
- if(targetdirection != null) //The bot is in line mode.
- var/turf/T = get_step(src, targetdirection)
- if(isspaceturf(T)) //Check for space
- target = T
- process_type = LINE_SPACE_MODE
- if(isfloorturf(T)) //Check for floor
- target = T
- if(!target)
- process_type = HULL_BREACH //Ensures the floorbot does not try to "fix" space areas or shuttle docking zones.
-
- tiles_scanned += list(/turf/open/space)
-
- if(!target && placetiles) //Finds a floor without a tile and gives it one.
- process_type = PLACE_TILE //The target must be the floor and not a tile. The floor must not already have a floortile.
- tiles_scanned += list(/turf/open/floor)
-
- if(!target && fixfloors) //Repairs damaged floors and tiles.
- process_type = FIX_TILE
- tiles_scanned += list(/turf/open/floor)
-
- if(!target && replacetiles && tilestack) //Replace a floor tile with custom tile
- process_type = REPLACE_TILE //The target must be a tile. The floor must already have a floortile.
- tiles_scanned += list(/turf/open/floor)
-
- if(!target && bot_cover_flags & BOT_COVER_EMAGGED) //We are emagged! Time to rip up the floors!
- process_type = TILE_EMAG
- tiles_scanned += list(/turf/open/floor)
-
- target = scan(tiles_scanned)
-
- if (!target)
- if(bot_mode_flags & BOT_MODE_AUTOPATROL)
- switch(mode)
- if(BOT_IDLE, BOT_START_PATROL)
- start_patrol()
- if(BOT_PATROL)
- bot_patrol()
- return
-
- if(loc == target || loc == get_turf(target))
- if(check_bot(target)) //Target is not defined at the parent
- if(prob(50)) //50% chance to still try to repair so we dont end up with 2 floorbots failing to fix the last breach
- target = null
- path = list()
- return
- if(isturf(target) && !(bot_cover_flags & BOT_COVER_EMAGGED))
- repair(target)
- else if(bot_cover_flags & BOT_COVER_EMAGGED && isfloorturf(target))
- var/turf/open/floor/floor = target
- toggle_magnet()
- mode = BOT_REPAIRING
- if(isplatingturf(floor))
- floor.attempt_lattice_replacement()
- else
- floor.ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
- audible_message(span_danger("[src] makes an excited booping sound."))
- addtimer(CALLBACK(src, PROC_REF(go_idle)), 0.5 SECONDS)
- path = list()
- return
-
- if(!length(path))
- if(!isturf(target))
- var/turf/TL = get_turf(target)
- path = get_path_to(src, TL, max_distance=30, access=access_card.GetAccess(), simulated_only = FALSE)
- else
- path = get_path_to(src, target, max_distance=30, access=access_card.GetAccess(), simulated_only = FALSE)
-
- if(!bot_move(target))
- add_to_ignore(target)
- target = null
- mode = BOT_IDLE
- else if(!bot_move(target))
- target = null
- mode = BOT_IDLE
-
-/mob/living/simple_animal/bot/floorbot/proc/go_idle()
- if (QDELETED(src))
- return
- toggle_magnet(FALSE)
- mode = BOT_IDLE
- target = null
-
-/mob/living/simple_animal/bot/floorbot/proc/is_hull_breach(turf/t) //Ignore space tiles not considered part of a structure, also ignores shuttle docking areas.
- var/area/t_area = get_area(t)
- if(t_area && (t_area.name == "Space" || findtext(t_area.name, "huttle")))
- return FALSE
- else
- return TRUE
-
-//Floorbots, having several functions, need sort out special conditions here.
-/mob/living/simple_animal/bot/floorbot/process_scan(scan_target)
- var/result
- var/turf/open/floor/floor
- move_resist = initial(move_resist)
- switch(process_type)
- if(HULL_BREACH) //The most common job, patching breaches in the station's hull.
- if(is_hull_breach(scan_target)) //Ensure that the targeted space turf is actually part of the station, and not random space.
- result = scan_target
- move_resist = INFINITY //Prevent the floorbot being blown off-course while trying to reach a hull breach.
- if(LINE_SPACE_MODE) //Space turfs in our chosen direction are considered.
- if(get_dir(src, scan_target) == targetdirection)
- result = scan_target
- move_resist = INFINITY
- if(PLACE_TILE)
- floor = scan_target
- if(isplatingturf(floor)) //The floor must not already have a tile.
- result = floor
- if(REPLACE_TILE)
- floor = scan_target
- if(isfloorturf(floor) && !isplatingturf(floor)) //The floor must already have a tile.
- result = floor
- if(FIX_TILE) //Selects only damaged floors.
- floor = scan_target
- if(istype(floor) && (floor.broken || floor.burnt))
- result = floor
- if(TILE_EMAG) //Emag mode! Rip up the floor and cause breaches to space!
- floor = scan_target
- if(!isplatingturf(floor))
- result = floor
- else //If no special processing is needed, simply return the result.
- result = scan_target
- return result
-
-/mob/living/simple_animal/bot/floorbot/proc/repair(turf/target_turf)
- if(check_bot_working(target_turf))
- add_to_ignore(target_turf)
- target = null
- playsound(src, 'sound/mobs/non-humanoids/floorbot/whistlereset.ogg', 50, TRUE)
- return
- if(isspaceturf(target_turf))
- //Must be a hull breach or in line mode to continue.
- if(!is_hull_breach(target_turf) && !targetdirection)
- target = null
- return
- else if(!isfloorturf(target_turf))
- return
- if(isspaceturf(target_turf)) //If we are fixing an area not part of pure space, it is
- toggle_magnet()
- visible_message(span_notice("[targetdirection ? "[src] begins installing a bridge plating." : "[src] begins to repair the hole."] "))
- mode = BOT_REPAIRING
- if(!do_after(src, 5 SECONDS, target = target_turf) && mode == BOT_REPAIRING)
- go_idle()
- return
-
- if(!autotile)
- target_turf.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR)
- go_idle()
- return
-
- if(replacetiles && tilestack)
- target_turf.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) //make sure a hull is actually below the floor tile
- tilestack.place_tile(target_turf, src)
- if(!tilestack)
- speak("Requesting refill of custom floor tiles to continue replacing.")
- else
- target_turf.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) //make sure a hull is actually below the floor tile
- target_turf.place_on_top(/turf/open/floor/iron, flags = CHANGETURF_INHERIT_AIR)
- go_idle()
- return
-
- var/turf/open/floor/floor = target_turf
- var/was_replacing = replacetiles
-
- if(floor.broken || floor.burnt || isplatingturf(floor))
- toggle_magnet()
- mode = BOT_REPAIRING
- visible_message(span_notice("[src] begins [(floor.broken || floor.burnt) ? "repairing the floor" : "placing a floor tile"]."))
- if(!do_after(src, 5 SECONDS, target = floor) && mode == BOT_REPAIRING)
- go_idle()
- return
- else if(replacetiles && tilestack && floor.type != tilestack.turf_type)
- toggle_magnet()
- mode = BOT_REPAIRING
- visible_message(span_notice("[src] begins replacing the floor tiles."))
- if(do_after(src, 5 SECONDS, target = target_turf) && mode == BOT_REPAIRING && tilestack)
- go_idle()
- return
-
- var/area/is_this_maints = get_area(floor)
- if(was_replacing && tilestack) //turn the tile into plating (if needed), then replace it
- floor = floor.make_plating(TRUE) || floor
- tilestack.place_tile(floor, src)
- if(!tilestack)
- speak("Requesting refill of custom floor tiles to continue replacing.")
- go_idle()
- return
-
- if(floor.broken || floor.burnt) //repair the tile and reset it to be undamaged (rather than replacing it)
- floor.broken = FALSE
- floor.burnt = FALSE
- floor.update_appearance()
- go_idle()
- return
-
- if(istype(is_this_maints, /area/station/maintenance)) //place catwalk if it's plating and we're in maints
- floor.place_on_top(/turf/open/floor/catwalk_floor, flags = CHANGETURF_INHERIT_AIR)
- go_idle()
- return
-
- //place normal tile if it's plating anywhere else
- floor = floor.make_plating(TRUE) || floor
- floor.place_on_top(/turf/open/floor/iron, flags = CHANGETURF_INHERIT_AIR)
- go_idle()
-
-/mob/living/simple_animal/bot/floorbot/update_icon_state()
- . = ..()
- icon_state = "[toolbox_color]floorbot[get_bot_flag(bot_mode_flags, BOT_MODE_ON)]"
-
-/mob/living/simple_animal/bot/floorbot/explode()
- target = null
- var/atom/Tsec = drop_location()
-
- drop_part(toolbox, Tsec)
-
- new /obj/item/assembly/prox_sensor(Tsec)
-
- if(tilestack)
- tilestack.forceMove(drop_location())
-
- new /obj/item/stack/tile/iron/base(Tsec, 1)
- return ..()
-
-/mob/living/simple_animal/bot/floorbot/UnarmedAttack(atom/target, proximity_flag, list/modifiers)
- if(!can_unarmed_attack())
- return
-
- if (!isturf(target))
- return ..()
-
- if(!(bot_cover_flags & BOT_COVER_EMAGGED) || !isfloorturf(target))
- repair(target)
- return
-
- var/turf/open/floor/floor = target
- if(isplatingturf(floor))
- floor.attempt_lattice_replacement()
- else
- floor.ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
- audible_message(span_danger("[src] makes an excited booping sound."))
-
-/**
- * Checks a given turf to see if another floorbot is there, working as well.
- */
-/mob/living/simple_animal/bot/floorbot/proc/check_bot_working(turf/active_turf)
- if(isturf(active_turf))
- for(var/mob/living/simple_animal/bot/floorbot/robot in active_turf)
- if(robot.mode == BOT_REPAIRING)
- return TRUE
- return FALSE
-
-#undef HULL_BREACH
-#undef LINE_SPACE_MODE
-#undef FIX_TILE
-#undef AUTO_TILE
-#undef PLACE_TILE
-#undef REPLACE_TILE
-#undef TILE_EMAG
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 5e9018384bef6..e1117e3200f77 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -243,14 +243,14 @@
return TRUE
-/mob/living/simple_animal/bot/mulebot/bullet_act(obj/projectile/Proj)
+/mob/living/simple_animal/bot/mulebot/bullet_act(obj/projectile/proj)
. = ..()
if(. && !QDELETED(src)) //Got hit and not blown up yet.
if(prob(50) && !isnull(load))
unload(0)
if(prob(25))
visible_message(span_danger("Something shorts out inside [src]!"))
- wires.cut_random(source = Proj.firer)
+ wires.cut_random(source = proj.firer)
/mob/living/simple_animal/bot/mulebot/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index 407e6070bae35..795390562b20b 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -297,15 +297,15 @@
update_appearance()
return TRUE
-/mob/living/simple_animal/bot/secbot/bullet_act(obj/projectile/Proj)
+/mob/living/simple_animal/bot/secbot/bullet_act(obj/projectile/proj)
. = ..()
if(. != BULLET_ACT_HIT)
return
- if(istype(Proj, /obj/projectile/beam) || istype(Proj, /obj/projectile/bullet))
- if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
- if(Proj.is_hostile_projectile() && Proj.damage < src.health && ishuman(Proj.firer))
- retaliate(Proj.firer)
+ if(istype(proj, /obj/projectile/beam) || istype(proj, /obj/projectile/bullet))
+ if((proj.damage_type == BURN) || (proj.damage_type == BRUTE))
+ if(proj.is_hostile_projectile() && proj.damage < src.health && ishuman(proj.firer))
+ retaliate(proj.firer)
/mob/living/simple_animal/bot/secbot/UnarmedAttack(atom/attack_target, proximity_flag, list/modifiers)
if(!(bot_mode_flags & BOT_MODE_ON))
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 201c83497dfd5..583f2ba1d6c9e 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -165,11 +165,11 @@
FindTarget(list(source))
return ..()
-/mob/living/simple_animal/hostile/bullet_act(obj/projectile/P)
+/mob/living/simple_animal/hostile/bullet_act(obj/projectile/proj)
if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client)
- if(P.firer && get_dist(src, P.firer) <= aggro_vision_range)
- FindTarget(list(P.firer))
- Goto(P.starting, move_to_delay, 3)
+ if(proj.firer && get_dist(src, proj.firer) <= aggro_vision_range)
+ FindTarget(list(proj.firer))
+ Goto(proj.starting, move_to_delay, 3)
return ..()
//////////////HOSTILE MOB TARGETING AND AGGRESSION////////////
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index ae3b10b11990a..1f544c0d322eb 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -106,7 +106,7 @@ Difficulty: Medium
/obj/projectile/kinetic/miner
damage = 20
- speed = 0.9
+ speed = 1.1
icon_state = "ka_tracer"
range = 4
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index f1e3461271359..248b73c6677cc 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -297,9 +297,9 @@ Difficulty: Hard
if(.)
recovery_time = world.time + 20 // can only attack melee once every 2 seconds but rapid_melee gives higher priority
-/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/projectile/P)
+/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/projectile/proj)
if(BUBBLEGUM_IS_ENRAGED)
- visible_message(span_danger("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons while enraged!"), span_userdanger("You deflect the projectile!"))
+ visible_message(span_danger("[src] deflects the [proj]! [p_They()] can't be hit with ranged weapons while enraged!"), span_userdanger("You deflect the projectile!"))
playsound(src, SFX_BULLET_MISS, 300, TRUE)
return BULLET_ACT_BLOCK
return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 3af739f736c0a..d921b5f5878b6 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -182,7 +182,7 @@
icon_state = "chronobolt"
damage = 25
armour_penetration = 100
- speed = 2
+ speed = 0.5
damage_type = BRUTE
pass_flags = PASSTABLE
plane = GAME_PLANE
@@ -193,7 +193,7 @@
AddComponent(/datum/component/parriable_projectile)
/obj/projectile/colossus/can_hit_target(atom/target, direct_target = FALSE, ignore_loc = FALSE, cross_failed = FALSE)
- if(isliving(target))
+ if(isliving(target) && target != firer)
direct_target = TRUE
return ..(target, direct_target, ignore_loc, cross_failed)
@@ -278,12 +278,12 @@
ActivationReaction(user, ACTIVATE_WEAPON)
..()
-/obj/machinery/anomalous_crystal/bullet_act(obj/projectile/P, def_zone)
+/obj/machinery/anomalous_crystal/bullet_act(obj/projectile/proj, def_zone)
. = ..()
- if(istype(P, /obj/projectile/magic))
- ActivationReaction(P.firer, ACTIVATE_MAGIC, P.damage_type)
+ if(istype(proj, /obj/projectile/magic))
+ ActivationReaction(proj.firer, ACTIVATE_MAGIC, proj.damage_type)
return
- ActivationReaction(P.firer, P.armor_flag, P.damage_type)
+ ActivationReaction(proj.firer, proj.armor_flag, proj.damage_type)
/obj/machinery/anomalous_crystal/proc/ActivationReaction(mob/user, method, damtype)
if(!COOLDOWN_FINISHED(src, cooldown_timer))
@@ -405,9 +405,9 @@
/obj/machinery/anomalous_crystal/emitter/ActivationReaction(mob/user, method)
if(..())
- var/obj/projectile/P = new generated_projectile(get_turf(src))
- P.firer = src
- P.fire(dir2angle(dir))
+ var/obj/projectile/proj = new generated_projectile(get_turf(src))
+ proj.firer = src
+ proj.fire(dir2angle(dir))
/obj/machinery/anomalous_crystal/dark_reprise //Revives anyone nearby, but turns them into shadowpeople and renders them uncloneable, so the crystal is your only hope of getting up again if you go down.
observer_desc = "When activated, this crystal revives anyone nearby, but turns them into Shadowpeople and makes them unclonable, making the crystal their only hope of getting up again."
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
index 8c32b2a3c47d6..8cdf9141ab845 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
@@ -126,7 +126,7 @@ Difficulty: Extremely Hard
if(FROST_MINER_SHOULD_ENRAGE)
INVOKE_ASYNC(src, PROC_REF(check_enraged))
return COMPONENT_BLOCK_ABILITY_START
- var/projectile_speed_multiplier = 1 - enraged * 0.5
+ var/projectile_speed_multiplier = 1 + enraged
frost_orbs.projectile_speed_multiplier = projectile_speed_multiplier
snowball_machine_gun.projectile_speed_multiplier = projectile_speed_multiplier
ice_shotgun.projectile_speed_multiplier = projectile_speed_multiplier
@@ -198,8 +198,7 @@ Difficulty: Extremely Hard
icon_state = "ice_1"
damage = 20
armour_penetration = 100
- speed = 1
- pixel_speed_multiplier = 0.1
+ speed = 0.1
range = 500
homing_turn_speed = 3
damage_type = BURN
@@ -214,8 +213,7 @@ Difficulty: Extremely Hard
icon_state = "nuclear_particle"
damage = 5
armour_penetration = 100
- speed = 1
- pixel_speed_multiplier = 0.333
+ speed = 0.33
range = 150
damage_type = BRUTE
explode_hit_objects = FALSE
@@ -225,8 +223,7 @@ Difficulty: Extremely Hard
icon_state = "ice_2"
damage = 15
armour_penetration = 100
- speed = 1
- pixel_speed_multiplier = 0.333
+ speed = 0.33
range = 150
damage_type = BRUTE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index f8569897accf1..0ea9819f71b7b 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -237,7 +237,7 @@
desc = "An ash drakes true flame."
name = "Fire Barrier"
icon = 'icons/effects/fire.dmi'
- icon_state = "1"
+ icon_state = "light"
anchored = TRUE
opacity = FALSE
density = TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 9383718e7bd30..509ca49ab34ea 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -573,8 +573,8 @@ Difficulty: Hard
if(mover == caster.pulledby)
return
if(isprojectile(mover))
- var/obj/projectile/P = mover
- if(P.firer == caster)
+ var/obj/projectile/proj = mover
+ if(proj.firer == caster)
return
if(mover != caster)
return FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index a7db852492442..4643d529d495c 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -198,11 +198,10 @@ Difficulty: Hard
/obj/projectile/colossus/wendigo_shockwave
name = "wendigo shockwave"
- speed = 2
- /// If wave movement is enabled
- var/wave_movement = FALSE
+ speed = 0.5
+
/// Amount the angle changes every pixel move
- var/wave_speed = 15
+ var/wave_speed = 0.5
/// Amount of movements this projectile has made
var/pixel_moves = 0
@@ -210,18 +209,18 @@ Difficulty: Hard
damage = 15
/obj/projectile/colossus/wendigo_shockwave/wave
- speed = 8
- wave_movement = TRUE
- wave_speed = 10
+ speed = 0.125
+ wave_speed = 0.3
/obj/projectile/colossus/wendigo_shockwave/wave/alternate
- wave_speed = -10
+ wave_speed = -0.3
-/obj/projectile/colossus/wendigo_shockwave/pixel_move(trajectory_multiplier, hitscanning = FALSE)
+/obj/projectile/colossus/wendigo_shockwave/process_movement(pixels_to_move, hitscan, tile_limit)
. = ..()
- if(wave_movement)
- pixel_moves++
- set_angle(original_angle + pixel_moves * wave_speed)
+ if (QDELETED(src))
+ return
+ pixel_moves += .
+ set_angle(original_angle + pixel_moves * wave_speed)
/obj/item/wendigo_blood
name = "bottle of wendigo blood"
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
index 03d79c108d60d..5fbd6cda5cbfb 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
@@ -101,8 +101,8 @@
if(mover == set_target)
return FALSE
if(isprojectile(mover))
- var/obj/projectile/P = mover
- if(P.firer == set_target)
+ var/obj/projectile/proj = mover
+ if(proj.firer == set_target)
return FALSE
#define IGNORE_PROC_IF_NOT_TARGET(X) /mob/living/simple_animal/hostile/asteroid/curseblob/##X(AM) { if (AM == set_target) return ..(); }
@@ -119,9 +119,9 @@ IGNORE_PROC_IF_NOT_TARGET(attack_larva)
IGNORE_PROC_IF_NOT_TARGET(attack_animal)
-/mob/living/simple_animal/hostile/asteroid/curseblob/bullet_act(obj/projectile/Proj)
- if(Proj.firer != set_target)
- return
+/mob/living/simple_animal/hostile/asteroid/curseblob/bullet_act(obj/projectile/proj)
+ if(proj.firer != set_target)
+ return BULLET_ACT_BLOCK
return ..()
/mob/living/simple_animal/hostile/asteroid/curseblob/attacked_by(obj/item/I, mob/living/L)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
index b12be32587e3d..48316d25020bd 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
@@ -135,7 +135,7 @@
H = new /obj/projectile/herald(startloc)
else
H = new /obj/projectile/herald/teleshot(startloc)
- H.preparePixelProjectile(marker, startloc)
+ H.aim_projectile(marker, startloc)
H.firer = src
if(target)
H.original = target
@@ -228,7 +228,7 @@
icon_state= "chronobolt"
damage = 20
armour_penetration = 60
- speed = 2
+ speed = 0.5
damage_type = BRUTE
pass_flags = PASSTABLE
@@ -276,7 +276,7 @@
var/turf/startloc = get_turf(owner)
var/obj/projectile/herald/H = null
H = new /obj/projectile/herald(startloc)
- H.preparePixelProjectile(marker, startloc)
+ H.aim_projectile(marker, startloc)
H.firer = owner
H.fire(set_angle)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
index 4853e0f3d019b..051733211ed3c 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
@@ -67,7 +67,7 @@
/datum/action/innate/elite_attack/bonfire_teleport
name = "Bonfire Teleport"
button_icon_state = "bonfire_teleport"
- chosen_message = span_boldwarning("You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it.")
+ chosen_message = span_boldwarning("You will leave a bonfire. Second use will let you swap positions with it indefinitely. Using this move on the same tile as your active bonfire removes it.")
chosen_attack_num = BONFIRE_TELEPORT
/datum/action/innate/elite_attack/spew_smoke
diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm
index a44cae6f139f5..7f6a5c5cd36e3 100644
--- a/code/modules/mob/living/simple_animal/hostile/ooze.dm
+++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm
@@ -359,7 +359,7 @@
// Why is this in InterceptClickOn() and not Activate()?
// Well, we need to use the params of the click intercept
- // for passing into preparePixelProjectile, so we'll handle it here instead.
+ // for passing into aim_projectile, so we'll handle it here instead.
// We just need to make sure Pre-activate and Activate return TRUE so we make it this far
caller.visible_message(
span_nicegreen("[caller] launches a mending globule!"),
@@ -372,7 +372,7 @@
var/modifiers = params2list(params)
var/obj/projectile/globule/globule = new(caller.loc)
- globule.preparePixelProjectile(target, caller, modifiers)
+ globule.aim_projectile(target, caller, modifiers)
globule.def_zone = caller.zone_selected
globule.fire()
diff --git a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm
index 8eab28a52e6a5..56dcbcaf7e1fe 100644
--- a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm
+++ b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm
@@ -31,7 +31,13 @@
GRANT_ACTION(/datum/action/cooldown/tentacle_slap)
add_cell_sample()
- AddComponent(/datum/component/tameable, list(/obj/item/food/fries, /obj/item/food/cheesyfries, /obj/item/food/cornchips, /obj/item/food/carrotfries), tame_chance = 30, bonus_tame_chance = 0)
+ var/static/list/food_types = list(
+ /obj/item/food/fries,
+ /obj/item/food/cheesyfries,
+ /obj/item/food/cornchips,
+ /obj/item/food/carrotfries,
+ )
+ AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 30, bonus_tame_chance = 0)
/mob/living/simple_animal/hostile/vatbeast/tamed(mob/living/tamer, obj/item/food)
buckle_lying = 0
diff --git a/code/modules/mob/living/sneeze.dm b/code/modules/mob/living/sneeze.dm
index ebf6162083482..af638d7c71a77 100644
--- a/code/modules/mob/living/sneeze.dm
+++ b/code/modules/mob/living/sneeze.dm
@@ -53,7 +53,7 @@
suppressed = SUPPRESSED_VERY
range = 4
- speed = 4
+ speed = 0.25
spread = 40
damage_type = BRUTE
damage = 0
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 4efc847805f7f..11815d71b1220 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -424,12 +424,12 @@
///////////////////////// CLEAR STATUS /////////////////////////
/mob/living/proc/adjust_status_effects_on_shake_up()
- AdjustStun(-60)
- AdjustKnockdown(-60)
- AdjustUnconscious(-60)
- AdjustSleeping(-100)
- AdjustParalyzed(-60)
- AdjustImmobilized(-60)
+ AdjustStun(-6 SECONDS)
+ AdjustKnockdown(-6 SECONDS)
+ AdjustUnconscious(-6 SECONDS)
+ AdjustSleeping(-10 SECONDS)
+ AdjustParalyzed(-6 SECONDS)
+ AdjustImmobilized(-6 SECONDS)
///////////////////////////////// FROZEN /////////////////////////////////////
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index aae9434191ce3..36ff9c3ada7b5 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -277,7 +277,7 @@
hearers -= ignored_mobs
//DOPPLER EDIT ADDITION BEGIN - AI QoL
- for(var/mob/eye/ai_eye/ai_eye in hearers)
+ for(var/mob/eye/camera/ai/ai_eye in hearers)
if(ai_eye.ai?.client && !(ai_eye.ai.stat == DEAD))
hearers -= ai_eye
hearers |= ai_eye.ai
@@ -357,7 +357,7 @@
var/list/hearers = get_hearers_in_view(hearing_distance, src)
//DOPPLER EDIT ADDITION BEGIN - AI QoL
- for(var/mob/eye/ai_eye/ai_eye in hearers)
+ for(var/mob/eye/camera/ai/ai_eye in hearers)
if(ai_eye.ai?.client && !(ai_eye.ai.stat == DEAD))
hearers -= ai_eye
hearers |= ai_eye.ai
@@ -647,7 +647,7 @@
return
/mob/living/handle_eye_contact(mob/living/examined_mob)
- if(!istype(examined_mob) || src == examined_mob || examined_mob.stat >= UNCONSCIOUS || !client)
+ if(!istype(examined_mob) || src == examined_mob || examined_mob.stat >= UNCONSCIOUS || !client || is_blind())
return
var/imagined_eye_contact = FALSE
@@ -663,12 +663,16 @@
// check to see if their face is blocked or, if not, a signal blocks it
if(examined_mob.is_face_visible() && SEND_SIGNAL(src, COMSIG_MOB_EYECONTACT, examined_mob, TRUE) != COMSIG_BLOCK_EYECONTACT)
- var/msg = span_smallnotice("You make eye contact with [examined_mob].")
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), src, msg), 0.3 SECONDS) // so the examine signal has time to fire and this will print after
+ var/obj/item/clothing/eye_cover = examined_mob.is_eyes_covered()
+ if (!eye_cover || (!eye_cover.tint && !eye_cover.flash_protect))
+ var/msg = span_smallnotice("You make eye contact with [examined_mob].")
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), src, msg), 0.3 SECONDS) // so the examine signal has time to fire and this will print after
- if(!imagined_eye_contact && is_face_visible() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT)
- var/msg = span_smallnotice("[src] makes eye contact with you.")
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), examined_mob, msg), 0.3 SECONDS)
+ if(!imagined_eye_contact && is_face_visible() && !examined_mob.is_blind() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT)
+ var/obj/item/clothing/eye_cover = is_eyes_covered()
+ if (!eye_cover || (!eye_cover.tint && !eye_cover.flash_protect))
+ var/msg = span_smallnotice("[src] makes eye contact with you.")
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), examined_mob, msg), 0.3 SECONDS)
/**
* Called by using Activate Held Object with an empty hand/limb
@@ -917,9 +921,8 @@
return
if(!selected_hand)
- selected_hand = (active_hand_index % held_items.len)+1
-
- if(istext(selected_hand))
+ selected_hand = active_hand_index
+ else if(istext(selected_hand))
selected_hand = LOWER_TEXT(selected_hand)
if(selected_hand == "right" || selected_hand == "r")
selected_hand = 2
@@ -928,8 +931,9 @@
if(selected_hand != active_hand_index)
swap_hand(selected_hand)
- else
- mode()
+
+ // _queue_verb requires a client, so when we don't have it (AI controlled mob) we don't use it
+ client ? mode() : execute_mode()
/mob/proc/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) //For sec bot threat assessment
return 0
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index f79a1c10cc689..743bdad8c4511 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -281,6 +281,9 @@
if (SEND_SIGNAL(src, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, movement_dir, continuous_move, backup) & COMPONENT_PREVENT_SPACEMOVE_HALT)
return FALSE
+ if (drift_handler?.attempt_halt(movement_dir, continuous_move, backup))
+ return FALSE
+
if(continuous_move || !istype(backup) || !movement_dir || backup.anchored)
return TRUE
@@ -300,8 +303,9 @@
/**
* Finds a target near a mob that is viable for pushing off when moving.
* Takes the intended movement direction as input, alongside if the context is checking if we're allowed to continue drifting
+ * If include_floors is TRUE, includes floors *with gravity*
*/
-/mob/get_spacemove_backup(moving_direction, continuous_move)
+/mob/get_spacemove_backup(moving_direction, continuous_move, include_floors = FALSE)
var/atom/secondary_backup
var/list/priority_dirs = (moving_direction in GLOB.cardinals) ? GLOB.cardinals : GLOB.diagonals
for(var/atom/pushover as anything in range(1, get_turf(src)))
@@ -309,13 +313,15 @@
continue
if(isarea(pushover))
continue
+ var/is_priority = pushover.loc == loc || (get_dir(src, pushover) in priority_dirs)
if(isturf(pushover))
var/turf/turf = pushover
if(isspaceturf(turf))
continue
if(!turf.density && !mob_negates_gravity())
- continue
- if (get_dir(src, pushover) in priority_dirs)
+ if (!include_floors || !turf.has_gravity())
+ continue
+ if (is_priority)
return pushover
secondary_backup = pushover
continue
@@ -335,21 +341,21 @@
if(rebound.last_pushoff == world.time)
continue
if(continuous_move && !pass_allowed)
- var/datum/move_loop/move/rebound_engine = GLOB.move_manager.processing_on(rebound, SSnewtonian_movement)
+ var/datum/move_loop/smooth_move/rebound_engine = GLOB.move_manager.processing_on(rebound, SSnewtonian_movement)
// If you're moving toward it and you're both going the same direction, stop
- if(moving_direction == get_dir(src, pushover) && rebound_engine && moving_direction == rebound_engine.direction)
+ if(moving_direction == get_dir(src, pushover) && rebound_engine && moving_direction == angle2dir(rebound_engine.angle))
continue
else if(!pass_allowed)
if(moving_direction == get_dir(src, pushover)) // Can't push "off" of something that you're walking into
continue
if(rebound.anchored)
- if (get_dir(src, rebound) in priority_dirs)
+ if (is_priority)
return rebound
secondary_backup = rebound
continue
if(pulling == rebound)
continue
- if (get_dir(src, rebound) in priority_dirs)
+ if (is_priority)
return rebound
secondary_backup = rebound
return secondary_backup
diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm
index ee4725075aadc..ecc3eaaedc241 100644
--- a/code/modules/mod/mod_activation.dm
+++ b/code/modules/mod/mod_activation.dm
@@ -26,7 +26,7 @@
return
var/parts_to_check = parts - part
if(part.loc == src)
- if(!deploy(user, part) || (active && !delayed_seal_part(part)))
+ if(!deploy(user, part))
return
SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user)
for(var/obj/item/checking_part as anything in parts_to_check)
@@ -35,7 +35,7 @@
choose_deploy(user)
break
else
- if((active && !delayed_seal_part(part, silent = TRUE)) || !retract(user, part))
+ if(!retract(user, part))
return
SEND_SIGNAL(src, COMSIG_MOD_RETRACTED, user)
for(var/obj/item/checking_part as anything in parts_to_check)
@@ -64,12 +64,7 @@
if(deploy && part.loc == src)
if(!deploy(null, part))
continue
- if(active && !delayed_seal_part(part))
- retract(null, part)
- return
else if(!deploy && part.loc != src)
- if(active && !delayed_seal_part(part))
- return
retract(null, part)
if(deploy)
SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user)
@@ -78,7 +73,7 @@
return TRUE
/// Deploys a part of the suit onto the user.
-/obj/item/mod/control/proc/deploy(mob/user, obj/item/part)
+/obj/item/mod/control/proc/deploy(mob/user, obj/item/part, instant = FALSE)
var/datum/mod_part/part_datum = get_part_datum(part)
if(!wearer)
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
@@ -86,7 +81,7 @@
if(part.loc != src)
if(!user)
return FALSE
- balloon_alert(user, "[part.name] already deployed!")
+ balloon_alert(user, "already deployed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
if(part_datum.can_overslot)
var/obj/item/overslot = wearer.get_item_by_slot(part.slot_flags)
@@ -97,14 +92,21 @@
if(wearer.equip_to_slot_if_possible(part, part.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE))
ADD_TRAIT(part, TRAIT_NODROP, MOD_TRAIT)
wearer.update_clothing(slot_flags)
- if(!user)
+ SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part_datum)
+ if(user)
+ wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."),
+ span_notice("[part] deploy[part.p_s()] with a mechanical hiss."),
+ span_hear("You hear a mechanical hiss."))
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ if(!active || part_datum.sealed)
return TRUE
- wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."),
- span_notice("[part] deploy[part.p_s()] with a mechanical hiss."),
- span_hear("You hear a mechanical hiss."))
- playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
- SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part)
- return TRUE
+ if(instant)
+ seal_part(part, is_sealed = TRUE)
+ return TRUE
+ else if(delayed_seal_part(part))
+ return TRUE
+ balloon_alert(user, "can't seal, retracting!")
+ retract(user, part, instant = TRUE)
else
if(part_datum.overslotting)
var/obj/item/overslot = part_datum.overslotting
@@ -117,14 +119,21 @@
return FALSE
/// Retract a part of the suit from the user.
-/obj/item/mod/control/proc/retract(mob/user, obj/item/part)
+/obj/item/mod/control/proc/retract(mob/user, obj/item/part, instant = FALSE)
var/datum/mod_part/part_datum = get_part_datum(part)
if(part.loc == src)
if(!user)
return FALSE
- balloon_alert(user, "[part.name] already retracted!")
+ balloon_alert(user, "already retracted!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
+ if(active && part_datum.sealed)
+ if(instant)
+ seal_part(part, is_sealed = FALSE)
+ else if(!delayed_seal_part(part))
+ balloon_alert(user, "can't unseal!")
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ return FALSE
REMOVE_TRAIT(part, TRAIT_NODROP, MOD_TRAIT)
wearer.transferItemToLoc(part, src, force = TRUE)
if(part_datum.overslotting)
@@ -132,7 +141,7 @@
if(!QDELING(wearer) && !wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE))
wearer.dropItemToGround(overslot, force = TRUE, silent = TRUE)
wearer.update_clothing(slot_flags)
- SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part)
+ SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part_datum)
if(!user)
return TRUE
wearer.visible_message(span_notice("[wearer]'s [part.name] retract[part.p_s()] back into [src] with a mechanical hiss."),
@@ -145,7 +154,7 @@
/obj/item/mod/control/proc/toggle_activate(mob/user, force_deactivate = FALSE)
if(!wearer)
if(!force_deactivate)
- balloon_alert(user, "equip suit first!")
+ balloon_alert(user, "not equipped!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(!force_deactivate && (SEND_SIGNAL(src, COMSIG_MOD_ACTIVATE, user) & MOD_CANCEL_ACTIVATE))
@@ -156,16 +165,16 @@
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(!get_charge() && !force_deactivate)
- balloon_alert(user, "suit not powered!")
+ balloon_alert(user, "no power source!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(open && !force_deactivate)
- balloon_alert(user, "close the suit panel!")
+ balloon_alert(user, "panel open!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(activating)
if(!force_deactivate)
- balloon_alert(user, "suit already [active ? "shutting down" : "starting up"]!")
+ balloon_alert(user, "already [active ? "shutting down" : "starting up"]!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
for(var/obj/item/mod/module/module as anything in modules)
@@ -221,13 +230,12 @@
SEND_SIGNAL(src, COMSIG_MOD_TOGGLED, user)
return TRUE
-/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part, silent = FALSE)
+/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part)
. = FALSE
var/datum/mod_part/part_datum = get_part_datum(part)
if(do_after(wearer, activation_step_time, wearer, MOD_ACTIVATION_STEP_FLAGS, extra_checks = CALLBACK(src, PROC_REF(get_wearer)), hidden = TRUE))
- if(!silent)
- to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message]."))
- playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message]."))
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
seal_part(part, is_sealed = !part_datum.sealed)
return TRUE
@@ -262,6 +270,7 @@
wearer.update_obscured_slots(part.visor_flags_inv)
if((part.clothing_flags & (MASKINTERNALS|HEADINTERNALS)) && wearer.invalid_internals())
wearer.cutoff_internals()
+ SEND_SIGNAL(src, COMSIG_MOD_PART_SEALED, part_datum)
if(is_sealed)
if (!active)
return
@@ -308,12 +317,8 @@
/// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits.
/obj/item/mod/control/proc/quick_activation()
- for(var/obj/item/part as anything in get_parts())
- deploy(null, part)
- for(var/obj/item/part as anything in get_parts())
- if(part.loc == src)
- continue
- seal_part(part, is_sealed = TRUE)
control_activation(is_on = TRUE)
+ for(var/obj/item/part as anything in get_parts())
+ deploy(null, part, instant = TRUE)
#undef MOD_ACTIVATION_STEP_FLAGS
diff --git a/code/modules/mod/mod_ai.dm b/code/modules/mod/mod_ai.dm
index 1336ff1707449..62e9188fddd1a 100644
--- a/code/modules/mod/mod_ai.dm
+++ b/code/modules/mod/mod_ai.dm
@@ -3,19 +3,19 @@
if(!.)
return
if(!open) //mod must be open
- balloon_alert(user, "suit must be open to transfer!")
+ balloon_alert(user, "panel closed!")
return
switch(interaction)
if(AI_TRANS_TO_CARD)
if(!ai_assistant)
- balloon_alert(user, "no ai in suit!")
+ balloon_alert(user, "no ai in unit!")
return
balloon_alert(user, "transferring to card...")
if(!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return
if(!ai_assistant)
- balloon_alert(user, "no ai in suit!")
+ balloon_alert(user, "no ai in unit!")
return
balloon_alert(user, "ai transferred to card")
ai_exit_mod(card)
@@ -33,13 +33,13 @@
if(intAI.stat || !intAI.client)
balloon_alert(user, "ai unresponsive!")
return
- balloon_alert(user, "transferring to suit...")
+ balloon_alert(user, "transferring to unit...")
if(!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return
if(ai_assistant)
return
- balloon_alert(user, "ai transferred to suit")
+ balloon_alert(user, "ai transferred to unit")
ai_enter_mod(intAI)
card.AI = null
@@ -74,14 +74,14 @@
if (isnull(card.pai?.mind))
balloon_alert(user, "pAI unresponsive!")
return FALSE
- balloon_alert(user, "transferring to suit...")
+ balloon_alert(user, "transferring to unit...")
if (!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return FALSE
if (!user.transferItemToLoc(card, src))
balloon_alert(user, "transfer failed!")
return FALSE
- balloon_alert(user, "pAI transferred to suit")
+ balloon_alert(user, "pAI transferred to unit")
var/mob/living/silicon/pai/pai_assistant = card.pai
pai_assistant.can_transmit = TRUE
pai_assistant.can_receive = TRUE
@@ -99,14 +99,14 @@
return FALSE
if (!forced)
if (!open)
- balloon_alert(user, "suit panel closed!")
+ balloon_alert(user, "panel closed!")
return FALSE
balloon_alert(user, "uninstalling card...")
if (!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return FALSE
- balloon_alert(user, "pAI removed from suit")
+ balloon_alert(user, "pAI removed")
var/mob/living/silicon/pai/pai_helper = ai_assistant
pai_helper.can_holo = TRUE
pai_helper.card.forceMove(get_turf(src))
@@ -115,7 +115,7 @@
/// Called when a new ai assistant is inserted
/obj/item/mod/control/proc/on_gained_assistant(mob/living/silicon/new_helper)
ai_assistant = new_helper
- balloon_alert(new_helper, "transferred to a suit")
+ balloon_alert(new_helper, "transferred to a mod unit")
for(var/datum/action/action as anything in actions)
action.Grant(new_helper)
@@ -134,7 +134,10 @@
#define AI_FALL_TIME (1 SECONDS)
/obj/item/mod/control/relaymove(mob/user, direction)
- if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE))
+ if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE))
+ return FALSE
+ var/datum/mod_part/legs_to_move = get_part_datum_from_slot(ITEM_SLOT_FEET)
+ if(wearer && (!legs_to_move || !legs_to_move.sealed))
return FALSE
var/timemodifier = MOVE_DELAY * (ISDIAGONALDIR(direction) ? sqrt(2) : 1) * (wearer ? WEARER_DELAY : LONE_DELAY)
if(wearer && !wearer.Process_Spacemove(direction))
@@ -147,7 +150,7 @@
if(ismovable(wearer?.loc))
return wearer.loc.relaymove(wearer, direction)
else if(wearer)
- ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT)
+ ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src))
addtimer(CALLBACK(src, PROC_REF(ai_fall)), AI_FALL_TIME, TIMER_UNIQUE | TIMER_OVERRIDE)
var/atom/movable/mover = wearer || src
return mover.try_step_multiz(direction)
@@ -160,7 +163,7 @@
/obj/item/mod/control/proc/ai_fall()
if(!wearer)
return
- REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT)
+ REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src))
/obj/item/mod/ai_minicard
name = "AI mini-card"
diff --git a/code/modules/mod/mod_clothes.dm b/code/modules/mod/mod_clothes.dm
index 29377c66c6da4..7c63655dee86c 100644
--- a/code/modules/mod/mod_clothes.dm
+++ b/code/modules/mod/mod_clothes.dm
@@ -11,6 +11,11 @@
cold_protection = HEAD
item_flags = IMMUTABLE_SLOW
+// Even without a hat stabilizer, hats can be worn - however, they'll fall off very easily
+/obj/item/clothing/head/mod/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE)
+
/obj/item/clothing/suit/mod
name = "MOD chestplate"
desc = "A chestplate for a MODsuit."
@@ -44,6 +49,7 @@
cold_protection = HANDS|ARMS
item_flags = IMMUTABLE_SLOW
equip_sound = null
+ pickup_sound = null
drop_sound = null
/obj/item/clothing/shoes/mod
diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm
index 16ce70df94563..3581c04e606a9 100644
--- a/code/modules/mod/mod_construction.dm
+++ b/code/modules/mod/mod_construction.dm
@@ -162,7 +162,7 @@
if(!istype(part, /obj/item/mod/core))
return
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "core stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "core inserted")
@@ -181,7 +181,7 @@
if(SCREWED_CORE_STEP)
if(istype(part, /obj/item/mod/construction/helmet)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "helmet stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "helmet added")
@@ -194,7 +194,7 @@
if(HELMET_STEP)
if(istype(part, /obj/item/mod/construction/chestplate)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "chestplate stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "chestplate added")
@@ -209,7 +209,7 @@
if(CHESTPLATE_STEP)
if(istype(part, /obj/item/mod/construction/gauntlets)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "gauntlets stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "gauntlets added")
@@ -224,10 +224,10 @@
if(GAUNTLETS_STEP)
if(istype(part, /obj/item/mod/construction/boots)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "boots added")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
- balloon_alert(user, "fit [part.name]")
+ balloon_alert(user, "boots added")
boots = part
step = BOOTS_STEP
else if(part.tool_behaviour == TOOL_CROWBAR) //Deconstruct
@@ -260,13 +260,14 @@
if(istype(part, /obj/item/mod/construction/plating)) //Construct
var/obj/item/mod/construction/plating/external_plating = part
if(!user.transferItemToLoc(part, src))
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
var/obj/item/mod = new /obj/item/mod/control(drop_location(), external_plating.theme, null, core)
core = null
qdel(src)
user.put_in_hands(mod)
- mod.balloon_alert(user, "suit finished")
+ mod.balloon_alert(user, "unit finished")
else if(part.tool_behaviour == TOOL_SCREWDRIVER) //Construct
if(part.use_tool(src, user, 0, volume=30))
balloon_alert(user, "assembly unscrewed")
diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm
index 0f521e40691f4..8d5c5c209540d 100644
--- a/code/modules/mod/mod_control.dm
+++ b/code/modules/mod/mod_control.dm
@@ -97,7 +97,6 @@
theme.set_up_parts(src, new_skin)
for(var/obj/item/part as anything in get_parts())
RegisterSignal(part, COMSIG_ATOM_DESTRUCTION, PROC_REF(on_part_destruction))
- RegisterSignal(part, COMSIG_QDELETING, PROC_REF(on_part_deletion))
set_wires(new /datum/wires/mod(src))
if(length(req_access))
locked = TRUE
@@ -118,14 +117,19 @@
QDEL_NULL(core)
QDEL_NULL(mod_link)
for(var/datum/mod_part/part_datum as anything in get_part_datums(all = TRUE))
+ var/obj/item/part_item = part_datum.part_item
part_datum.part_item = null
part_datum.overslotting = null
+ mod_parts -= part_datum
+ if(!QDELING(part_item))
+ qdel(part_item)
return ..()
/obj/item/mod/control/atom_destruction(damage_flag)
+ var/atom/visible_atom = wearer || src
if(wearer)
- wearer.visible_message(span_danger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE)
clean_up()
+ visible_atom.visible_message(span_bolddanger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE)
for(var/obj/item/mod/module/module as anything in modules)
uninstall(module)
if(ai_assistant)
@@ -220,12 +224,12 @@
if(user != wearer)
return ..()
if(active)
- balloon_alert(wearer, "deactivate the suit first!")
+ balloon_alert(wearer, "unit active!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
- balloon_alert(user, "retract parts first!")
+ balloon_alert(user, "parts extended!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return FALSE
@@ -233,12 +237,12 @@
if(user != wearer || !istype(over_object, /atom/movable/screen/inventory/hand))
return
if(active)
- balloon_alert(wearer, "deactivate the suit first!")
+ balloon_alert(wearer, "unit active!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
- balloon_alert(wearer, "retract parts first!")
+ balloon_alert(wearer, "parts extended!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
if(!wearer.incapacitated)
@@ -266,14 +270,15 @@
/obj/item/mod/control/screwdriver_act(mob/living/user, obj/item/screwdriver)
if(active || activating || ai_controller)
- balloon_alert(user, "deactivate suit first!")
+ balloon_alert(user, "unit active!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
balloon_alert(user, "[open ? "closing" : "opening"] cover...")
screwdriver.play_tool_sound(src, 100)
if(screwdriver.use_tool(src, user, 1 SECONDS))
if(active || activating)
- balloon_alert(user, "deactivate suit first!")
+ balloon_alert(user, "unit active!")
+ return ITEM_INTERACT_SUCCESS
screwdriver.play_tool_sound(src, 100)
balloon_alert(user, "cover [open ? "closed" : "opened"]")
open = !open
@@ -283,7 +288,7 @@
/obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar)
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(!allowed(user))
@@ -315,14 +320,14 @@
/obj/item/mod/control/tool_act(mob/living/user, obj/item/tool, list/modifiers)
if(istype(tool, /obj/item/pai_card))
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
return NONE // shoves the card in the storage anyways
insert_pai(user, tool)
return ITEM_INTERACT_SUCCESS
if(istype(tool, /obj/item/mod/paint))
var/obj/item/mod/paint/paint_kit = tool
if(active || activating)
- balloon_alert(user, "suit is active!")
+ balloon_alert(user, "unit active!")
return ITEM_INTERACT_BLOCKING
if(LAZYACCESS(modifiers, RIGHT_CLICK)) // Right click
if(paint_kit.editing_mod == src)
@@ -341,7 +346,7 @@
return ITEM_INTERACT_SUCCESS
if(istype(tool, /obj/item/mod/module))
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
install(tool, user)
@@ -349,11 +354,11 @@
return ITEM_INTERACT_SUCCESS
if(istype(tool, /obj/item/mod/core))
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(core)
- balloon_alert(user, "core already installed!")
+ balloon_alert(user, "already has core!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
var/obj/item/mod/core/attacking_core = tool
@@ -385,7 +390,7 @@
/obj/item/mod/control/emag_act(mob/user, obj/item/card/emag/emag_card)
locked = !locked
- balloon_alert(user, "suit access [locked ? "locked" : "unlocked"]")
+ balloon_alert(user, "access [locked ? "locked" : "unlocked"]")
return TRUE
/obj/item/mod/control/emp_act(severity)
@@ -445,12 +450,11 @@
CRASH("get_part_datum called with incorrect item [part] passed.")
/obj/item/mod/control/proc/get_part_from_slot(slot)
- slot = "[slot]"
- for(var/part_slot in mod_parts)
- if(slot != part_slot)
- continue
- var/datum/mod_part/part = mod_parts[part_slot]
- return part.part_item
+ var/datum/mod_part/part = mod_parts["[slot]"]
+ return part?.part_item
+
+/obj/item/mod/control/proc/get_part_datum_from_slot(slot)
+ return mod_parts["[slot]"]
/obj/item/mod/control/proc/set_wearer(mob/living/carbon/human/user)
if(wearer == user)
@@ -511,7 +515,9 @@
for(var/obj/item/part as anything in get_parts())
seal_part(part, is_sealed = FALSE)
for(var/obj/item/part as anything in get_parts())
- retract(null, part)
+ if(part.loc == src)
+ continue
+ INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after
if(active)
control_activation(is_on = FALSE)
mod_link?.end_call()
@@ -519,7 +525,7 @@
unset_wearer()
old_wearer.temporarilyRemoveItemFromInventory(src)
-/obj/item/mod/control/proc/on_species_gain(datum/source, datum/species/new_species, datum/species/old_species)
+/obj/item/mod/control/proc/on_species_gain(datum/source, datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons)
SIGNAL_HANDLER
for(var/obj/item/part in get_parts(all = TRUE))
@@ -579,24 +585,24 @@
for(var/obj/item/mod/module/old_module as anything in modules)
if(is_type_in_list(new_module, old_module.incompatible_modules) || is_type_in_list(old_module, new_module.incompatible_modules))
if(user)
- balloon_alert(user, "[new_module] incompatible with [old_module]!")
+ balloon_alert(user, "incompatible with [old_module]!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
var/complexity_with_module = complexity
complexity_with_module += new_module.complexity
if(complexity_with_module > complexity_max)
if(user)
- balloon_alert(user, "[new_module] would make [src] too complex!")
+ balloon_alert(user, "above complexity max!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
if(!new_module.has_required_parts(mod_parts))
if(user)
- balloon_alert(user, "[new_module] incompatible with [src]'s parts!")
+ balloon_alert(user, "lacking required parts!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
if(!new_module.can_install(src))
if(user)
- balloon_alert(user, "[new_module] cannot be installed into [src]!")
+ balloon_alert(user, "can't install!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
new_module.forceMove(src)
@@ -661,6 +667,12 @@
/obj/item/mod/control/proc/check_charge(amount)
return core?.check_charge(amount) || FALSE
+/obj/item/mod/control/proc/get_chargebar_color()
+ return core?.get_chargebar_color() || "transparent"
+
+/obj/item/mod/control/proc/get_chargebar_string()
+ return core?.get_chargebar_string() || "No Core Detected"
+
/**
* Updates the wearer's hud according to the current state of the MODsuit
*/
@@ -706,6 +718,9 @@
uninstall(part)
return
if(part in get_parts())
+ if(QDELING(part) && !QDELING(src))
+ qdel(src)
+ return
var/datum/mod_part/part_datum = get_part_datum(part)
if(part_datum.sealed)
seal_part(part, is_sealed = FALSE)
@@ -714,7 +729,7 @@
if(!wearer)
part.forceMove(src)
return
- retract(wearer, part)
+ INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after
/obj/item/mod/control/proc/on_part_destruction(obj/item/part, damage_flag)
SIGNAL_HANDLER
@@ -723,14 +738,6 @@
return
atom_destruction(damage_flag)
-/obj/item/mod/control/proc/on_part_deletion(obj/item/part)
- SIGNAL_HANDLER
-
- if(QDELING(src))
- return
- part.moveToNullspace()
- qdel(src)
-
/obj/item/mod/control/proc/on_overslot_exit(obj/item/part, atom/movable/overslot, direction)
SIGNAL_HANDLER
@@ -750,7 +757,7 @@
to_chat(user, span_warning("It's too dangerous to smear [speed_potion] on [src] while it's active!"))
return SPEED_POTION_STOP
to_chat(user, span_notice("You slather the red gunk over [src], making it faster."))
- set_mod_color(COLOR_RED)
+ set_mod_color(color_transition_filter(COLOR_RED))
slowdown_inactive = 0
slowdown_active = 0
update_speed()
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index 79a8eff5e290a..01e0902b6b03c 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -25,30 +25,45 @@
mod.update_charge_alert()
mod = null
+/// Returns the item responsible for charging the suit, like a power cell, an ethereal's stomach, the core itself, etc.
/obj/item/mod/core/proc/charge_source()
return
+/// Returns the amount of charge in the core.
/obj/item/mod/core/proc/charge_amount()
return 0
+/// Returns the max amount of charge stored in the core.
/obj/item/mod/core/proc/max_charge_amount()
return 1
+/// Adds a set amount of charge to the core.
/obj/item/mod/core/proc/add_charge(amount)
return FALSE
+/// Subtracts a set amount of charge from the core.
/obj/item/mod/core/proc/subtract_charge(amount)
return FALSE
+/// Checks if there's enough charge in the core to use an amount of energy.
/obj/item/mod/core/proc/check_charge(amount)
return FALSE
-/**
- * Gets what icon state to display on the HUD for the charge level of this core
- */
+/// Returns what icon state to display on the HUD for the charge level of this core
/obj/item/mod/core/proc/get_charge_icon_state()
return "0"
+/// Gets what the UI should use for the charge bar color.
+/obj/item/mod/core/proc/get_chargebar_color()
+ return "bad"
+
+/// Gets what the UI should use for the charge bar text.
+/obj/item/mod/core/proc/get_chargebar_string()
+ var/charge_amount = charge_amount()
+ var/max_charge_amount = max_charge_amount()
+ return "[display_energy(charge_amount)] of [display_energy(max_charge_amount())] \
+ ([round((100 * charge_amount) / max_charge_amount, 1)]%)"
+
/obj/item/mod/core/infinite
name = "MOD infinite core"
icon_state = "mod-core-infinite"
@@ -76,6 +91,12 @@
/obj/item/mod/core/infinite/get_charge_icon_state()
return "high"
+/obj/item/mod/core/infinite/get_chargebar_color()
+ return "teal"
+
+/obj/item/mod/core/infinite/get_chargebar_string()
+ return "Infinite"
+
/obj/item/mod/core/standard
name = "MOD standard core"
icon_state = "mod-core-standard"
@@ -163,6 +184,22 @@
return "empty"
+/obj/item/mod/core/standard/get_chargebar_color()
+ if(isnull(charge_source()))
+ return "transparent"
+ switch(round(charge_amount() / max_charge_amount(), 0.01))
+ if(-INFINITY to 0.33)
+ return "bad"
+ if(0.33 to 0.66)
+ return "average"
+ if(0.66 to INFINITY)
+ return "good"
+
+/obj/item/mod/core/standard/get_chargebar_string()
+ if(isnull(charge_source()))
+ return "Power Cell Missing"
+ return ..()
+
/obj/item/mod/core/standard/proc/install_cell(new_cell)
cell = new_cell
cell.forceMove(src)
@@ -222,11 +259,11 @@
if(!istype(attacking_item, /obj/item/stock_parts/power_store/cell))
return FALSE
if(!mod.open)
- mod.balloon_alert(user, "open the cover first!")
+ mod.balloon_alert(user, "cover closed!")
playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(cell)
- mod.balloon_alert(user, "cell already installed!")
+ mod.balloon_alert(user, "already has cell!")
playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
install_cell(attacking_item)
@@ -260,7 +297,9 @@
name = "MOD ethereal core"
icon_state = "mod-core-ethereal"
desc = "A reverse engineered core of a Modular Outerwear Device. Using natural liquid electricity from Ethereals, \
- preventing the need to use external sources to convert electric charge."
+ preventing the need to use external sources to convert electric charge. As the suits are naturally charged by \
+ liquid electricity, this core makes it much more efficient, running all soft, hard, and wetware with several \
+ times less energy usage."
/// A modifier to all charge we use, ethereals don't need to spend as much energy as normal suits.
var/charge_modifier = 0.1
@@ -279,22 +318,41 @@
/obj/item/mod/core/ethereal/add_charge(amount)
var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
- if(!charge_source)
+ if(isnull(charge_source))
return FALSE
- charge_source.adjust_charge(amount*charge_modifier)
+ charge_source.adjust_charge(amount * charge_modifier)
return TRUE
/obj/item/mod/core/ethereal/subtract_charge(amount)
var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
- if(!charge_source)
+ if(isnull(charge_source))
return FALSE
- return -charge_source.adjust_charge(-amount*charge_modifier)
+ return -charge_source.adjust_charge(-amount * charge_modifier)
/obj/item/mod/core/ethereal/check_charge(amount)
- return charge_amount() >= amount*charge_modifier
+ return charge_amount() >= amount * charge_modifier
/obj/item/mod/core/ethereal/get_charge_icon_state()
- return charge_source() ? "0" : "missing"
+ return isnull(charge_source()) ? "missing" : "0"
+
+/obj/item/mod/core/ethereal/get_chargebar_color()
+ if(isnull(charge_source()))
+ return "transparent"
+ switch(charge_amount())
+ if(-INFINITY to ETHEREAL_CHARGE_LOWPOWER)
+ return "bad"
+ if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL)
+ return "average"
+ if(ETHEREAL_CHARGE_NORMAL to ETHEREAL_CHARGE_FULL)
+ return "good"
+ if(ETHEREAL_CHARGE_FULL to INFINITY)
+ return "teal"
+
+/obj/item/mod/core/ethereal/get_chargebar_string()
+ var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
+ if(isnull(charge_source()) || isnull(charge_source.cell))
+ return "Biological Battery Missing"
+ return ..()
#define PLASMA_CORE_ORE_CHARGE (1.5 * STANDARD_CELL_CHARGE)
#define PLASMA_CORE_SHEET_CHARGE (2 * STANDARD_CELL_CHARGE)
@@ -355,6 +413,13 @@
return "empty"
+/obj/item/mod/core/plasma/get_chargebar_color()
+ switch(round(charge_amount() / max_charge_amount(), 0.01))
+ if(-INFINITY to 0.33)
+ return "bad"
+ if(0.33 to INFINITY)
+ return "purple"
+
/obj/item/mod/core/plasma/proc/on_mod_interaction(datum/source, mob/living/user, obj/item/thing)
SIGNAL_HANDLER
diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm
index e7a5a20d9f370..a93ebec8b570c 100644
--- a/code/modules/mod/mod_link.dm
+++ b/code/modules/mod/mod_link.dm
@@ -213,7 +213,7 @@
if(!user.transferItemToLoc(attacked_by, src))
return
cell = attacked_by
- balloon_alert(user, "installed [cell.name]")
+ balloon_alert(user, "cell installed")
/obj/item/clothing/neck/link_scryer/update_name(updates)
. = ..()
@@ -227,7 +227,7 @@
/obj/item/clothing/neck/link_scryer/attack_hand_secondary(mob/user, list/modifiers)
if(!cell)
return SECONDARY_ATTACK_CONTINUE_CHAIN
- balloon_alert(user, "removed [cell.name]")
+ balloon_alert(user, "cell removed")
user.put_in_hands(cell)
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
@@ -409,7 +409,7 @@
if(!link_user)
return
if(HAS_TRAIT(link_user, TRAIT_IN_CALL))
- holder.balloon_alert(user, "user already in call!")
+ holder.balloon_alert(user, "already calling!")
return
var/mob/living/link_target = called.get_user_callback.Invoke()
if(!link_target)
@@ -511,6 +511,7 @@
desc = "Someone is calling you! Left-click this to accept the call. Right-click to deny it."
icon_state = "called"
timeout = 10 SECONDS
+ clickable_glow = TRUE
var/end_message = "call timed out!"
/// A weak reference to the MODlink that is calling.
var/datum/weakref/caller_ref
diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm
index e3e42e55f613c..2f658e9df2470 100644
--- a/code/modules/mod/mod_paint.dm
+++ b/code/modules/mod/mod_paint.dm
@@ -153,10 +153,10 @@
return NONE
var/obj/item/mod/control/mod = attacked_atom
if(mod.active || mod.activating)
- balloon_alert(user, "suit is active!")
+ balloon_alert(user, "unit active!")
return ITEM_INTERACT_BLOCKING
if(!(skin in mod.theme.variants))
- balloon_alert(user, "incompatible theme!")
+ balloon_alert(user, "wrong theme for skin!")
return ITEM_INTERACT_BLOCKING
mod.theme.set_skin(mod, skin)
balloon_alert(user, "skin applied")
diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm
index 76f9063df0b9c..706bdb802696a 100644
--- a/code/modules/mod/mod_theme.dm
+++ b/code/modules/mod/mod_theme.dm
@@ -316,6 +316,7 @@
slowdown_active = 1
allowed_suit_storage = list(
/obj/item/analyzer,
+ /obj/item/extinguisher,
/obj/item/fireaxe/metal_h2_axe,
/obj/item/pipe_dispenser,
/obj/item/t_scanner,
diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm
index 626144bf3e114..91fb00c633b06 100644
--- a/code/modules/mod/mod_types.dm
+++ b/code/modules/mod/mod_types.dm
@@ -467,43 +467,43 @@
)
/// The insignia type, insignias show what sort of member of the ERT you're dealing with.
var/insignia_type = /obj/item/mod/module/insignia
- /// Additional module we add, as a treat.
- var/additional_module
+ /// Additional module (or modules if list) we add, as a treat.
+ var/additional_modules
/obj/item/mod/control/pre_equipped/responsory/Initialize(mapload, new_theme, new_skin, new_core)
applied_modules.Insert(1, insignia_type)
- if(additional_module)
- applied_modules += additional_module
- default_pins += additional_module
+ if(additional_modules)
+ applied_modules += additional_modules
+ default_pins += additional_modules
return ..()
/obj/item/mod/control/pre_equipped/responsory/commander
insignia_type = /obj/item/mod/module/insignia/commander
- additional_module = /obj/item/mod/module/power_kick
+ additional_modules = /obj/item/mod/module/power_kick
/obj/item/mod/control/pre_equipped/responsory/security
insignia_type = /obj/item/mod/module/insignia/security
- additional_module = /obj/item/mod/module/pepper_shoulders
+ additional_modules = /obj/item/mod/module/pepper_shoulders
/obj/item/mod/control/pre_equipped/responsory/engineer
insignia_type = /obj/item/mod/module/insignia/engineer
- additional_module = /obj/item/mod/module/rad_protection
+ additional_modules = /obj/item/mod/module/rad_protection
/obj/item/mod/control/pre_equipped/responsory/medic
insignia_type = /obj/item/mod/module/insignia/medic
- additional_module = /obj/item/mod/module/quick_carry
+ additional_modules = /obj/item/mod/module/quick_carry
/obj/item/mod/control/pre_equipped/responsory/janitor
insignia_type = /obj/item/mod/module/insignia/janitor
- additional_module = /obj/item/mod/module/noslip
+ additional_modules = list(/obj/item/mod/module/noslip, /obj/item/mod/module/mister/cleaner)
/obj/item/mod/control/pre_equipped/responsory/clown
insignia_type = /obj/item/mod/module/insignia/clown
- additional_module = /obj/item/mod/module/bikehorn
+ additional_modules = /obj/item/mod/module/bikehorn
/obj/item/mod/control/pre_equipped/responsory/chaplain
insignia_type = /obj/item/mod/module/insignia/chaplain
- additional_module = /obj/item/mod/module/injector
+ additional_modules = /obj/item/mod/module/injector
/obj/item/mod/control/pre_equipped/responsory/inquisitory
applied_skin = "inquisitory"
@@ -538,19 +538,19 @@
/obj/item/mod/control/pre_equipped/responsory/inquisitory/commander
insignia_type = /obj/item/mod/module/insignia/commander
- additional_module = /obj/item/mod/module/power_kick
+ additional_modules = /obj/item/mod/module/power_kick
/obj/item/mod/control/pre_equipped/responsory/inquisitory/security
insignia_type = /obj/item/mod/module/insignia/security
- additional_module = /obj/item/mod/module/pepper_shoulders
+ additional_modules = /obj/item/mod/module/pepper_shoulders
/obj/item/mod/control/pre_equipped/responsory/inquisitory/medic
insignia_type = /obj/item/mod/module/insignia/medic
- additional_module = /obj/item/mod/module/quick_carry
+ additional_modules = /obj/item/mod/module/quick_carry
/obj/item/mod/control/pre_equipped/responsory/inquisitory/chaplain
insignia_type = /obj/item/mod/module/insignia/chaplain
- additional_module = /obj/item/mod/module/injector
+ additional_modules = /obj/item/mod/module/injector
/obj/item/mod/control/pre_equipped/apocryphal
theme = /datum/mod_theme/apocryphal
diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm
index 2a8ccf7b4bf94..9a8e77f7e8e76 100644
--- a/code/modules/mod/mod_ui.dm
+++ b/code/modules/mod/mod_ui.dm
@@ -9,8 +9,10 @@
// Suit information
var/suit_status = list(
"core_name" = core?.name,
- "cell_charge_current" = get_charge(),
- "cell_charge_max" = get_max_charge(),
+ "charge_current" = get_charge(),
+ "charge_max" = get_max_charge(),
+ "chargebar_color" = get_chargebar_color(),
+ "chargebar_string" = get_chargebar_string(),
"active" = active,
"ai_name" = ai_assistant?.name,
"has_pai" = ispAI(ai_assistant),
@@ -56,23 +58,25 @@
"configuration_data" = module.get_configuration(user),
))
data["module_custom_status"] = module_custom_status
- data["module_info"] = module_info
- return data
-
-/obj/item/mod/control/ui_static_data(mob/user)
- var/data = list()
- data["ui_theme"] = ui_theme
data["control"] = name
- data["complexity_max"] = complexity_max
+ data["module_info"] = module_info
var/part_info = list()
for(var/obj/item/part as anything in get_parts())
part_info += list(list(
"slot" = english_list(parse_slot_flags(part.slot_flags)),
"name" = part.name,
+ "deployed" = part.loc != src,
+ "ref" = REF(part),
))
data["parts"] = part_info
return data
+/obj/item/mod/control/ui_static_data(mob/user)
+ var/data = list()
+ data["ui_theme"] = ui_theme
+ data["complexity_max"] = complexity_max
+ return data
+
/obj/item/mod/control/ui_state(mob/user)
if(user == ai_assistant)
return GLOB.contained_state
@@ -89,7 +93,7 @@
if("lock")
if(!locked || allowed(ui.user))
locked = !locked
- balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]!")
+ balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]")
else
balloon_alert(ui.user, "access insufficent!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
@@ -115,6 +119,14 @@
if(!module)
return
module.pin(ui.user)
+ if("deploy")
+ var/obj/item/mod_part = locate(params["ref"]) in get_parts()
+ if(!mod_part)
+ return
+ if(mod_part.loc == src)
+ deploy(ui.user, mod_part)
+ else
+ retract(ui.user, mod_part)
if("eject_pai")
if (!ishuman(ui.user))
return
diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm
index 28a588609a783..565919c07ecd5 100644
--- a/code/modules/mod/modules/_module.dm
+++ b/code/modules/mod/modules/_module.dm
@@ -300,7 +300,7 @@
/obj/item/mod/module/proc/add_ui_data()
return list()
-/// Creates a list of configuring options for this module
+/// Creates a list of configuring options for this module, possible configs include number, bool, color, list, button.
/obj/item/mod/module/proc/get_configuration(mob/user)
return list()
@@ -418,7 +418,7 @@
/obj/item/mod/module/anomaly_locked
name = "MOD anomaly locked module"
desc = "A form of a module, locked behind an anomalous core to function."
- incompatible_modules = list(/obj/item/mod/module/anomaly_locked)
+ incompatible_modules = list()
/// The core item the module runs off.
var/obj/item/assembly/signaler/anomaly/core
/// Accepted types of anomaly cores.
@@ -491,7 +491,7 @@
balloon_alert(user, "no core!")
return
if(!core_removable)
- balloon_alert(user, "can't remove core!")
+ balloon_alert(user, "already has core!")
return
balloon_alert(user, "removing core...")
if(!do_after(user, 3 SECONDS, target = src))
diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm
index 3c9ae3310b755..733e5ab40d97b 100644
--- a/code/modules/mod/modules/module_kinesis.dm
+++ b/code/modules/mod/modules/module_kinesis.dm
@@ -17,7 +17,7 @@
accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav)
required_slots = list(ITEM_SLOT_GLOVES)
/// Range of the knesis grab.
- var/grab_range = 5
+ var/grab_range = 8
/// Time between us hitting objects with kinesis.
var/hit_cooldown_time = 1 SECONDS
/// Stat required for us to grab a mob.
diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm
index f0a92e3a05153..487844bc2a04f 100644
--- a/code/modules/mod/modules/module_pathfinder.dm
+++ b/code/modules/mod/modules/module_pathfinder.dm
@@ -117,19 +117,19 @@
/obj/item/implant/mod/proc/recall()
if(!module?.mod)
- balloon_alert(imp_in, "no connected suit!")
+ balloon_alert(imp_in, "no connected unit!")
return FALSE
if(module.mod.open)
- balloon_alert(imp_in, "suit is open!")
+ balloon_alert(imp_in, "cover open!")
return FALSE
if(module.mod.ai_controller)
- balloon_alert(imp_in, "already in transit!")
+ balloon_alert(imp_in, "already moving!")
return FALSE
if(ismob(get_atom_on_turf(module.mod)))
balloon_alert(imp_in, "already on someone!")
return FALSE
if(module.z != z || get_dist(imp_in, module.mod) > MOD_AI_RANGE)
- balloon_alert(imp_in, "too far away!")
+ balloon_alert(imp_in, "too far!")
return FALSE
var/datum/ai_controller/mod_ai = new /datum/ai_controller/mod(module.mod)
module.mod.ai_controller = mod_ai
diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm
index 0401dbfdbe969..3eef7d47f158b 100644
--- a/code/modules/mod/modules/modules_antag.dm
+++ b/code/modules/mod/modules/modules_antag.dm
@@ -52,9 +52,10 @@
playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(mod.wearer, "armor boosted, EVA lost")
actual_speed_added = max(0, min(mod.slowdown_active, speed_added))
- var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES)
- if(istype(head_cover))
- ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+ if(head_cover)
+ RegisterSignal(mod, COMSIG_MOD_PART_SEALED, PROC_REF(seal_helmet))
+ seal_helmet(mod, head_cover)
var/list/mod_parts = mod.get_parts(all = TRUE)
for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
part.set_armor(part.get_armor().add_other_armor(armor_mod))
@@ -71,9 +72,10 @@
if(!deleting)
playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(mod.wearer, "armor retracts, EVA ready")
- var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES)
- if(istype(head_cover))
- REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+ if(head_cover)
+ UnregisterSignal(mod, COMSIG_MOD_PART_SEALED)
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
var/list/mod_parts = mod.get_parts(all = TRUE)
for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
part.set_armor(part.get_armor().subtract_other_armor(armor_mod))
@@ -91,6 +93,15 @@
overlay_state_active = "[initial(overlay_state_active)]-[mod.skin]"
return ..()
+/obj/item/mod/module/armor_booster/proc/seal_helmet(datum/source, datum/mod_part/part)
+ var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+ if(part != head_cover)
+ return
+ if(part.sealed)
+ ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
+ else
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
+
///Energy Shield - Gives you a rechargeable energy shield that nullifies attacks.
/obj/item/mod/module/energy_shield
name = "MOD energy shield module"
@@ -184,10 +195,10 @@
required_slots = list(ITEM_SLOT_BACK)
/obj/item/mod/module/anti_magic/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src))
/obj/item/mod/module/anti_magic/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src))
/obj/item/mod/module/anti_magic/wizard
name = "MOD magic neutralizer module"
@@ -199,10 +210,10 @@
required_slots = list()
/obj/item/mod/module/anti_magic/wizard/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src))
/obj/item/mod/module/anti_magic/wizard/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src))
///Insignia - Gives you a skin specific stripe.
/obj/item/mod/module/insignia
@@ -262,24 +273,20 @@
required_slots = list(ITEM_SLOT_FEET)
/obj/item/mod/module/noslip/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src))
/obj/item/mod/module/noslip/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src))
//Bite of 87 Springlock - Equips faster, disguised as DNA lock.
/obj/item/mod/module/springlock/bite_of_87
+ name = /obj/item/mod/module/dna_lock::name
+ desc = /obj/item/mod/module/dna_lock::desc
+ icon_state = /obj/item/mod/module/dna_lock::icon_state
+ complexity = /obj/item/mod/module/dna_lock::complexity
+ use_energy_cost = /obj/item/mod/module/dna_lock::use_energy_cost
step_change = 0.1
-/obj/item/mod/module/springlock/bite_of_87/Initialize(mapload)
- . = ..()
- var/obj/item/mod/module/dna_lock/the_dna_lock_behind_the_slaughter = /obj/item/mod/module/dna_lock
- name = initial(the_dna_lock_behind_the_slaughter.name)
- desc = initial(the_dna_lock_behind_the_slaughter.desc)
- icon_state = initial(the_dna_lock_behind_the_slaughter.icon_state)
- complexity = initial(the_dna_lock_behind_the_slaughter.complexity)
- use_energy_cost = initial(the_dna_lock_behind_the_slaughter.use_energy_cost)
-
/obj/item/mod/module/springlock/bite_of_87/on_part_activation()
..()
if(check_holidays(APRIL_FOOLS) || prob(1))
@@ -306,7 +313,7 @@
if(!.)
return
var/obj/projectile/flame = new /obj/projectile/bullet/incendiary/fire(mod.wearer.loc)
- flame.preparePixelProjectile(target, mod.wearer)
+ flame.aim_projectile(target, mod.wearer)
flame.firer = mod.wearer
playsound(src, 'sound/items/modsuit/flamethrower.ogg', 75, TRUE)
INVOKE_ASYNC(flame, TYPE_PROC_REF(/obj/projectile, fire))
@@ -404,7 +411,7 @@
/obj/item/mod/module/chameleon/used()
if(mod.active || mod.activating)
- balloon_alert(mod.wearer, "suit active!")
+ balloon_alert(mod.wearer, "unit active!")
return FALSE
return ..()
@@ -514,7 +521,7 @@
mod.item_flags &= ~EXAMINE_SKIP
/obj/item/mod/module/infiltrator/on_part_activation()
- mod.wearer.add_traits(traits_to_add, MOD_TRAIT)
+ mod.wearer.add_traits(traits_to_add, REF(src))
RegisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH, PROC_REF(on_speech_modification))
var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
user_tongue.temp_say_mod = "states"
@@ -523,7 +530,7 @@
head_cover.flash_protect = FLASH_PROTECTION_WELDER_HYPER_SENSITIVE
/obj/item/mod/module/infiltrator/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(traits_to_add, MOD_TRAIT)
+ mod.wearer.remove_traits(traits_to_add, REF(src))
UnregisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH)
var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
user_tongue.temp_say_mod = initial(user_tongue.temp_say_mod)
@@ -559,11 +566,16 @@
/obj/item/mod/module/stealth/wraith
name = "MOD Wraith Cloaking Module"
- desc = "A more destructive adaptation of the stealth module."
+ desc = "A more destructive adaptation of the stealth module. Incompatible with armor modules"
icon_state = "cloak_traitor"
stealth_alpha = 30
module_type = MODULE_ACTIVE
cooldown_time = 2 SECONDS
+ incompatible_modules = list(/obj/item/mod/module/stealth, /obj/item/mod/module/armor_booster)
+ /// How much time before we are able to cloak again after the cloak is broken (not disabled)
+ COOLDOWN_DECLARE(recloak_timer)
+ /// If the stealth portion of the module is active
+ var/stealth_active = FALSE
/obj/item/mod/module/stealth/wraith/on_select_use(atom/target)
. = ..()
@@ -573,7 +585,7 @@
balloon_alert(mod.wearer, "can't reach that!")
return
if(istype(target, /obj/machinery/power/apc)) //Bit too strong for a module so this is blacklisted
- balloon_alert(mod.wearer, "cant disable apc!")
+ balloon_alert(mod.wearer, "can't disable apc!")
return
var/list/things_to_disrupt = list(target)
@@ -585,28 +597,41 @@
if(disrupted.on_saboteur(src, 1 MINUTES))
mod.add_charge(DEFAULT_CHARGE_DRAIN * 250)
+/obj/item/mod/module/stealth/wraith/on_activation()
+ return // Don't activate stealth when the module is activated because the stealth portion of the module is fully passive
+
+/obj/item/mod/module/stealth/wraith/on_deactivation(display_message = TRUE, deleting = FALSE)
+ . = ..()
+ UnregisterSignal(mod.wearer, list(COMSIG_LIVING_MOB_BUMP, COMSIG_ATOM_BUMPED, COMSIG_MOB_FIRED_GUN))
+
/obj/item/mod/module/stealth/wraith/on_part_activation()
start_stealth()
/obj/item/mod/module/stealth/wraith/on_part_deactivation(deleting)
- if(bumpoff)
- UnregisterSignal(mod.wearer, COMSIG_LIVING_MOB_BUMP)
- UnregisterSignal(mod.wearer, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_ITEM_ATTACK, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW, COMSIG_CARBON_CUFF_ATTEMPTED))
+ UnregisterSignal(mod.wearer, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_ITEM_ATTACK, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW, COMSIG_CARBON_CUFF_ATTEMPTED, COMSIG_LIVING_MOB_BUMP, COMSIG_ATOM_BUMPED, COMSIG_MOB_FIRED_GUN))
animate(mod.wearer, alpha = 255, time = 1.5 SECONDS)
+ stealth_active = FALSE
/obj/item/mod/module/stealth/wraith/proc/start_stealth()
- if(bumpoff)
- RegisterSignal(mod.wearer, COMSIG_LIVING_MOB_BUMP, PROC_REF(unstealth))
+ if(!COOLDOWN_FINISHED(src, recloak_timer)) // Prevents being able to bypass the cooldown by disabling and re-enabling the module
+ addtimer(CALLBACK(src, PROC_REF(start_stealth)), recloak_timer)
+ return
+ RegisterSignals(mod.wearer, list(COMSIG_LIVING_MOB_BUMP, COMSIG_ATOM_BUMPED, COMSIG_MOB_FIRED_GUN), PROC_REF(unstealth))
RegisterSignal(mod.wearer, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarmed_attack))
RegisterSignal(mod.wearer, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act))
RegisterSignals(mod.wearer, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW, COMSIG_CARBON_CUFF_ATTEMPTED), PROC_REF(unstealth))
animate(mod.wearer, alpha = stealth_alpha, time = 1.5 SECONDS)
drain_power(use_energy_cost)
+ stealth_active = TRUE
/obj/item/mod/module/stealth/wraith/unstealth(datum/source)
+ if(!stealth_active)
+ return
. = ..()
if(mod.active)
- addtimer(CALLBACK(src, PROC_REF(start_stealth)), 5 SECONDS)
+ COOLDOWN_START(src, recloak_timer, 20 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(start_stealth)), 20 SECONDS)
+ stealth_active = FALSE
/obj/item/mod/module/stealth/wraith/examine_more(mob/user)
. = ..()
diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm
index aea9a415cf4e4..ea12a61e5b4d4 100644
--- a/code/modules/mod/modules/modules_engineering.dm
+++ b/code/modules/mod/modules/modules_engineering.dm
@@ -62,12 +62,12 @@
var/list/active_traits = list(TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_SLIDE, TRAIT_NEGATES_GRAVITY)
/obj/item/mod/module/magboot/on_activation()
- mod.wearer.add_traits(active_traits, MOD_TRAIT)
+ mod.wearer.add_traits(active_traits, REF(src))
mod.slowdown += slowdown_active
mod.wearer.update_equipment_speed_mods()
/obj/item/mod/module/magboot/on_deactivation(display_message = TRUE, deleting = FALSE)
- mod.wearer.remove_traits(active_traits, MOD_TRAIT)
+ mod.wearer.remove_traits(active_traits, REF(src))
mod.slowdown -= slowdown_active
mod.wearer.update_equipment_speed_mods()
@@ -91,12 +91,19 @@
cooldown_time = 1.5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
+/obj/item/mod/module/tether/used()
+ if(HAS_TRAIT_FROM(mod.wearer, TRAIT_TETHER_ATTACHED, REF(src)))
+ balloon_alert(mod.wearer, "already tethered!")
+ playsound(src, 'sound/items/weapons/gun/general/dry_fire.ogg', 25, TRUE)
+ return FALSE
+ return ..()
+
/obj/item/mod/module/tether/on_select_use(atom/target)
. = ..()
if(!.)
return
var/obj/projectile/tether = new /obj/projectile/tether(mod.wearer.loc, src)
- tether.preparePixelProjectile(target, mod.wearer)
+ tether.aim_projectile(target, mod.wearer)
tether.firer = mod.wearer
playsound(src, 'sound/items/weapons/batonextend.ogg', 25, TRUE)
INVOKE_ASYNC(tether, TYPE_PROC_REF(/obj/projectile, fire))
@@ -104,7 +111,7 @@
/obj/item/mod/module/tether/get_configuration()
. = ..()
- .["cut_tethers"] = add_ui_configuration("Cut Tethers", "pin", TRUE)
+ .["cut_tethers"] = add_ui_configuration("Cut Tethers", "button", "scissors")
/obj/item/mod/module/tether/configure_edit(key, value)
if (key != "cut_tethers")
@@ -139,7 +146,10 @@
/obj/projectile/tether/proc/on_embedded(datum/source, obj/item/payload, atom/hit)
SIGNAL_HANDLER
- firer.AddComponent(/datum/component/tether, hit, 7, "MODtether", payload, parent_module = parent_module)
+ if (HAS_TRAIT_FROM(hit, TRAIT_TETHER_ATTACHED, REF(parent_module)))
+ return
+
+ firer.AddComponent(/datum/component/tether, hit, 7, "MODtether", payload, parent_module = parent_module, tether_trait_source = REF(parent_module))
/obj/projectile/tether/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
. = ..()
@@ -161,17 +171,16 @@
return
if (istype(target, /obj/item/tether_anchor) || isstructure(target) || ismachinery(target))
- firer.AddComponent(/datum/component/tether, target, 7, "MODtether", parent_module = parent_module)
+ if(HAS_TRAIT_FROM(target, TRAIT_TETHER_ATTACHED, REF(parent_module)))
+ return
+ var/avoid_target_trait = FALSE
+ if (istype(target, /obj/item/tether_anchor))
+ avoid_target_trait = TRUE
+ firer.AddComponent(/datum/component/tether, target, 7, "MODtether", parent_module = parent_module, tether_trait_source = REF(parent_module), no_target_trait = avoid_target_trait)
return
- var/hitx
- var/hity
- if(target == original)
- hitx = target.pixel_x + p_x - 16
- hity = target.pixel_y + p_y - 16
- else
- hitx = target.pixel_x + rand(-8, 8)
- hity = target.pixel_y + rand(-8, 8)
+ var/hitx = impact_x
+ var/hity = impact_y
if (!isnull(last_turf) && last_turf != target && last_turf != target.loc)
var/turf_dir = get_dir(last_turf, get_turf(target))
@@ -188,7 +197,7 @@
anchor.pixel_x = hitx
anchor.pixel_y = hity
anchor.anchored = TRUE
- firer.AddComponent(/datum/component/tether, anchor, 7, "MODtether", parent_module = parent_module)
+ firer.AddComponent(/datum/component/tether, anchor, 7, "MODtether", parent_module = parent_module, tether_trait_source = REF(parent_module))
/obj/projectile/tether/Destroy()
QDEL_NULL(line)
@@ -216,8 +225,12 @@
if (!can_interact(user) || !user.CanReach(src) || !isturf(loc))
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+ if(HAS_TRAIT_FROM(user, TRAIT_TETHER_ATTACHED, REF(src)))
+ balloon_alert(user, "already tethered!")
+ return
+
balloon_alert(user, "attached tether")
- user.AddComponent(/datum/component/tether, src, 7, "tether")
+ user.AddComponent(/datum/component/tether, src, 7, "tether", tether_trait_source = REF(src))
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
/obj/item/tether_anchor/mouse_drop_receive(atom/target, mob/user, params)
@@ -227,9 +240,13 @@
if (!isliving(target) || !target.CanReach(src))
return
+ if(HAS_TRAIT_FROM(target, TRAIT_TETHER_ATTACHED, REF(src)))
+ balloon_alert(user, "already tethered!")
+ return
+
if (target == user)
balloon_alert(user, "attached tether")
- user.AddComponent(/datum/component/tether, src, 7, "tether")
+ user.AddComponent(/datum/component/tether, src, 7, "tether", tether_trait_source = REF(src), no_target_trait = TRUE)
return
balloon_alert(user, "attaching tether...")
@@ -237,9 +254,13 @@
if (!do_after(user, 5 SECONDS, target))
return
+ if(HAS_TRAIT_FROM(target, TRAIT_TETHER_ATTACHED, REF(src)))
+ balloon_alert(user, "already tethered!")
+ return
+
balloon_alert(user, "attached tether")
to_chat(target, span_userdanger("[user] attaches a tether to you!"))
- target.AddComponent(/datum/component/tether, src, 7, "tether")
+ target.AddComponent(/datum/component/tether, src, 7, "tether", tether_trait_source = REF(src), no_target_trait = TRUE)
/datum/embed_data/tether_projectile
embed_chance = 65 //spiky
@@ -267,14 +288,14 @@
/obj/item/mod/module/rad_protection/on_part_activation()
AddComponent(/datum/component/geiger_sound)
- ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src))
RegisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation))
for(var/obj/item/part in mod.get_parts(all = TRUE))
ADD_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT)
/obj/item/mod/module/rad_protection/on_part_deactivation(deleting = FALSE)
qdel(GetComponent(/datum/component/geiger_sound))
- REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src))
UnregisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION)
for(var/obj/item/part in mod.get_parts(all = TRUE))
REMOVE_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT)
@@ -309,10 +330,10 @@
required_slots = list(ITEM_SLOT_GLOVES)
/obj/item/mod/module/constructor/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src))
/obj/item/mod/module/constructor/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src))
/obj/item/mod/module/constructor/on_use()
rcd_scan(src, fade_time = 10 SECONDS)
@@ -332,10 +353,10 @@
required_slots = list(ITEM_SLOT_HEAD)
/obj/item/mod/module/headprotector/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
/obj/item/mod/module/headprotector/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
///Mister - Sprays water over an area.
/obj/item/mod/module/mister
diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm
index 42e4c56f55ec1..3f4dfe405f738 100644
--- a/code/modules/mod/modules/modules_general.dm
+++ b/code/modules/mod/modules/modules_general.dm
@@ -143,14 +143,15 @@
COMSIG_MODULE_DEACTIVATED, \
MOD_ABORT_USE, \
thrust_callback, \
+ thrust_callback, \
/datum/effect_system/trail_follow/ion/grav_allowed, \
)
if (!isnull(mod) && !isnull(mod.wearer) && mod.wearer.get_item_by_slot(slot_flags) == src)
if (!stabilize)
- ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
else
- REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
/obj/item/mod/module/jetpack/get_configuration()
. = ..()
@@ -171,11 +172,11 @@
/obj/item/mod/module/jetpack/on_activation()
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
if (!stabilize)
- ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
/obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE)
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
- REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
/obj/item/mod/module/jetpack/advanced
name = "MOD advanced ion jetpack module"
@@ -672,10 +673,10 @@
return ..()
/obj/item/mod/module/plasma_stabilizer/on_equip()
- ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src))
/obj/item/mod/module/plasma_stabilizer/on_unequip()
- REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src))
//Finally, https://pipe.miroware.io/5b52ba1d94357d5d623f74aa/mspfa/Nuke%20Ops/Panels/0648.gif can be real:
@@ -699,7 +700,8 @@
var/obj/item/clothing/helmet = mod.get_part_from_slot(ITEM_SLOT_HEAD)
if(!istype(helmet))
return
- helmet.AddComponent(/datum/component/hat_stabilizer)
+ // Override pre-existing component
+ helmet.AddComponent(/datum/component/hat_stabilizer, loose_hat = FALSE)
/obj/item/mod/module/hat_stabilizer/on_part_deactivation(deleting = FALSE)
if(deleting)
@@ -707,7 +709,8 @@
var/obj/item/clothing/helmet = mod.get_part_from_slot(ITEM_SLOT_HEAD)
if(!istype(helmet))
return
- qdel(helmet.GetComponent(/datum/component/hat_stabilizer))
+ // Override again!
+ helmet.AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE)
/obj/item/mod/module/hat_stabilizer/syndicate
name = "MOD elite hat stabilizer module"
@@ -731,10 +734,10 @@
required_slots = list(ITEM_SLOT_GLOVES)
/obj/item/mod/module/signlang_radio/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src))
/obj/item/mod/module/signlang_radio/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src))
///A module that recharges the suit by an itsy tiny bit whenever the user takes a step. Originally called "magneto module" but the videogame reference sounds cooler.
/obj/item/mod/module/joint_torsion
@@ -926,7 +929,7 @@
icon_state = "fishing_glove"
complexity = 1
overlay_state_inactive = "fishing_glove"
- incompatible_modules = (/obj/item/mod/module/fishing_glove)
+ incompatible_modules = list(/obj/item/mod/module/fishing_glove)
required_slots = list(ITEM_SLOT_GLOVES)
var/obj/item/fishing_rod/equipped
@@ -952,7 +955,7 @@
if(!istype(tool, /obj/item/fishing_rod))
return ..()
if(equipped)
- balloon_alert(user, "remove current rod first!")
+ balloon_alert(user, "already has rod!")
if(!user.transferItemToLoc(tool, src))
user.balloon_alert(user, "it's stuck!")
equipped = tool
diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm
index f6b978d05352f..48089b0125c9a 100644
--- a/code/modules/mod/modules/modules_maint.dm
+++ b/code/modules/mod/modules/modules_maint.dm
@@ -295,8 +295,8 @@
mod.wearer.AddElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY)
RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_upstairs))
RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(on_talk))
- ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
- passtable_on(mod.wearer, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
+ passtable_on(mod.wearer, REF(src))
check_upstairs() //todo at some point flip your screen around
/obj/item/mod/module/atrocinator/deactivate(display_message = TRUE, deleting = FALSE)
@@ -312,24 +312,32 @@
UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
UnregisterSignal(mod.wearer, COMSIG_MOB_SAY)
step_count = 0
- REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
- passtable_off(mod.wearer, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
+ passtable_off(mod.wearer, REF(src))
var/turf/open/openspace/current_turf = get_turf(mod.wearer)
if(istype(current_turf))
current_turf.zFall(mod.wearer, falling_from_move = TRUE)
-/obj/item/mod/module/atrocinator/proc/check_upstairs()
+/obj/item/mod/module/atrocinator/proc/check_upstairs(atom/movable/source, atom/oldloc, direction, forced, list/old_locs, momentum_change)
SIGNAL_HANDLER
if(you_fucked_up || mod.wearer.has_gravity() > NEGATIVE_GRAVITY)
return
+
var/turf/open/current_turf = get_turf(mod.wearer)
var/turf/open/openspace/turf_above = get_step_multiz(mod.wearer, UP)
if(current_turf && istype(turf_above))
current_turf.zFall(mod.wearer)
+ return
+
else if(!turf_above && istype(current_turf) && current_turf.planetary_atmos) //nothing holding you down
INVOKE_ASYNC(src, PROC_REF(fly_away))
- else if(!(step_count % 2))
+ return
+
+ if (forced || (SSlag_switch.measures[DISABLE_FOOTSTEPS] && !(HAS_TRAIT(source, TRAIT_BYPASS_MEASURES))))
+ return
+
+ if(!(step_count % 2))
playsound(current_turf, 'sound/items/modsuit/atrocinator_step.ogg', 50)
step_count++
diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm
index 154717cbcc11c..f71814fc7db53 100644
--- a/code/modules/mod/modules/modules_medical.dm
+++ b/code/modules/mod/modules/modules_medical.dm
@@ -77,13 +77,13 @@
/obj/item/mod/module/quick_carry/on_part_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT)
- ADD_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src))
+ ADD_TRAIT(mod.wearer, quick_carry_trait, REF(src))
/obj/item/mod/module/quick_carry/on_part_deactivation(deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT)
- REMOVE_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src))
+ REMOVE_TRAIT(mod.wearer, quick_carry_trait, REF(src))
/obj/item/mod/module/quick_carry/advanced
name = "MOD advanced quick carry module"
@@ -165,7 +165,7 @@
return
var/atom/movable/fired_organ = pop(organ_list)
var/obj/projectile/organ/projectile = new /obj/projectile/organ(mod.wearer.loc, fired_organ)
- projectile.preparePixelProjectile(target, mod.wearer)
+ projectile.aim_projectile(target, mod.wearer)
projectile.firer = mod.wearer
playsound(src, 'sound/vehicles/mecha/hydraulic.ogg', 25, TRUE)
INVOKE_ASYNC(projectile, TYPE_PROC_REF(/obj/projectile, fire))
@@ -200,13 +200,10 @@
var/mob/living/carbon/human/organ_receiver = target
var/succeed = FALSE
if(organ_receiver.surgeries.len)
- for(var/datum/surgery/procedure as anything in organ_receiver.surgeries)
+ for(var/datum/surgery/organ_manipulation/procedure in organ_receiver.surgeries)
if(procedure.location != organ.zone)
continue
- if(!istype(procedure, /datum/surgery/organ_manipulation))
- continue
- var/datum/surgery_step/surgery_step = procedure.get_surgery_step()
- if(!istype(surgery_step, /datum/surgery_step/manipulate_organs))
+ if(!ispath(procedure.steps[procedure.status], /datum/surgery_step/manipulate_organs))
continue
succeed = TRUE
break
diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm
index c4e8962c4476d..5f7abdd712b87 100644
--- a/code/modules/mod/modules/modules_ninja.dm
+++ b/code/modules/mod/modules/modules_ninja.dm
@@ -73,11 +73,11 @@
/obj/item/mod/module/stealth/ninja/on_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
/obj/item/mod/module/stealth/ninja/on_deactivation(display_message = TRUE, deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
///Camera Vision - Prevents flashes, blocks tracking.
/obj/item/mod/module/welding/camera_vision
@@ -173,16 +173,16 @@
var/accepted_type = /obj/item/energy_katana
/obj/item/mod/module/weapon_recall/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src))
/obj/item/mod/module/weapon_recall/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src))
/obj/item/mod/module/weapon_recall/on_use()
if(!linked_weapon)
var/obj/item/weapon_to_link = mod.wearer.is_holding_item_of_type(accepted_type)
if(!weapon_to_link)
- balloon_alert(mod.wearer, "can't locate weapon!")
+ balloon_alert(mod.wearer, "no linked weapon!")
return
set_weapon(weapon_to_link)
balloon_alert(mod.wearer, "[linked_weapon.name] linked")
@@ -191,7 +191,7 @@
balloon_alert(mod.wearer, "already on self!")
return
var/distance = get_dist(mod.wearer, linked_weapon)
- var/in_view = (linked_weapon in view(mod.wearer))
+ var/in_view = (linked_weapon in view(mod.wearer)) && !(linked_weapon in get_turf(mod.wearer))
if(!in_view && !drain_power(use_energy_cost * distance))
balloon_alert(mod.wearer, "not enough charge!")
return
@@ -323,7 +323,7 @@
if(IS_SPACE_NINJA(mod.wearer) && isliving(target))
mod.wearer.say("Get over here!", forced = type)
var/obj/projectile/net = new /obj/projectile/energy_net(mod.wearer.loc, src)
- net.preparePixelProjectile(target, mod.wearer)
+ net.aim_projectile(target, mod.wearer)
net.firer = mod.wearer
playsound(src, 'sound/items/weapons/punchmiss.ogg', 25, TRUE)
INVOKE_ASYNC(net, TYPE_PROC_REF(/obj/projectile, fire))
diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm
index 409b442336636..8cb15d35370aa 100644
--- a/code/modules/mod/modules/modules_science.dm
+++ b/code/modules/mod/modules/modules_science.dm
@@ -14,10 +14,10 @@
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK)
/obj/item/mod/module/reagent_scanner/on_activation()
- ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src))
/obj/item/mod/module/reagent_scanner/on_deactivation(display_message = TRUE, deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src))
/obj/item/mod/module/reagent_scanner/advanced
name = "MOD advanced reagent scanner module"
@@ -31,12 +31,12 @@
/obj/item/mod/module/reagent_scanner/advanced/on_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src))
RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion))
/obj/item/mod/module/reagent_scanner/advanced/on_deactivation(display_message = TRUE, deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src))
UnregisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION)
/obj/item/mod/module/reagent_scanner/advanced/proc/sense_explosion(datum/source, turf/epicenter,
@@ -55,9 +55,9 @@
desc = "A module that uses a gravitational core to make the user completely weightless."
icon_state = "antigrav"
module_type = MODULE_TOGGLE
- complexity = 3
+ complexity = 2
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.7
- incompatible_modules = list(/obj/item/mod/module/anomaly_locked, /obj/item/mod/module/atrocinator)
+ incompatible_modules = list(/obj/item/mod/module/atrocinator, /obj/item/mod/module/anomaly_locked/antigrav)
accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav)
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
@@ -88,21 +88,34 @@
icon_state = "teleporter"
module_type = MODULE_ACTIVE
complexity = 3
- use_energy_cost = DEFAULT_CHARGE_DRAIN * 5
- cooldown_time = 5 SECONDS
+ use_energy_cost = DEFAULT_CHARGE_DRAIN * 25
+ cooldown_time = 4 SECONDS
+ incompatible_modules = list(/obj/item/mod/module/anomaly_locked/teleporter)
accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/bluespace)
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
/// Time it takes to teleport
- var/teleport_time = 3 SECONDS
+ var/teleport_time = 1 SECONDS
+ /// Maximum turf range
+ var/max_range = 9
/obj/item/mod/module/anomaly_locked/teleporter/on_select_use(atom/target)
. = ..()
if(!.)
return
var/turf/open/target_turf = get_turf(target)
- if(!istype(target_turf) || target_turf.is_blocked_turf_ignore_climbable() || !(target_turf in view(mod.wearer)))
+ if(get_dist(target_turf, mod.wearer) > max_range)
+ balloon_alert(mod.wearer, "too far!")
+ return
+ if(!istype(target_turf))
balloon_alert(mod.wearer, "invalid target!")
return
+ if(target_turf.is_blocked_turf_ignore_climbable() || !los_check(mod.wearer, target, pass_args = PASSTABLE|PASSGLASS|PASSGRILLE|PASSMOB|PASSMACHINE|PASSSTRUCTURE|PASSFLAPS|PASSWINDOW))
+ balloon_alert(mod.wearer, "blocked destination!")
+ return
+ // check early so we don't go through the whole loops
+ if(!check_teleport_valid(mod.wearer, target_turf, channel = TELEPORT_CHANNEL_BLUESPACE, original_destination = target_turf))
+ balloon_alert(mod.wearer, "something holds you back!")
+ return
balloon_alert(mod.wearer, "teleporting...")
var/matrix/pre_matrix = matrix()
pre_matrix.Scale(4, 0.25)
diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm
index c25dd75275574..b705de0f4beaa 100644
--- a/code/modules/mod/modules/modules_security.dm
+++ b/code/modules/mod/modules/modules_security.dm
@@ -123,7 +123,7 @@
balloon_alert(mod.wearer, "nothing to holster!")
return
if(!istype(holding) || holding.w_class > WEIGHT_CLASS_BULKY)
- balloon_alert(mod.wearer, "it doesn't fit!")
+ balloon_alert(mod.wearer, "doesn't fit!")
return
if(mod.wearer.transferItemToLoc(holding, src, force = FALSE, silent = TRUE))
holstered = holding
@@ -310,7 +310,7 @@
/// Debuff multiplier on projectiles.
var/debuff_multiplier = 0.66
/// Speed multiplier on projectiles, higher means slower.
- var/speed_multiplier = 2.5
+ var/speed_multiplier = 0.4
/// List of all tracked projectiles.
var/list/tracked_projectiles = list()
/// Effect image on projectiles.
@@ -326,32 +326,10 @@
if(istype(dampening_field))
QDEL_NULL(dampening_field)
dampening_field = new(mod.wearer, field_radius, TRUE, src)
- RegisterSignal(dampening_field, COMSIG_DAMPENER_CAPTURE, PROC_REF(dampen_projectile))
- RegisterSignal(dampening_field, COMSIG_DAMPENER_RELEASE, PROC_REF(release_projectile))
/obj/item/mod/module/projectile_dampener/on_deactivation(display_message, deleting = FALSE)
QDEL_NULL(dampening_field)
-/obj/item/mod/module/projectile_dampener/proc/dampen_projectile(datum/source, obj/projectile/projectile)
- SIGNAL_HANDLER
-
- projectile.damage *= damage_multiplier
- projectile.stamina *= damage_multiplier
- projectile.stun *= debuff_multiplier
- projectile.knockdown *= debuff_multiplier
- projectile.speed *= speed_multiplier
- projectile.add_overlay(projectile_effect)
-
-/obj/item/mod/module/projectile_dampener/proc/release_projectile(datum/source, obj/projectile/projectile)
- SIGNAL_HANDLER
-
- projectile.damage /= damage_multiplier
- projectile.speed /= speed_multiplier
- projectile.stamina /= damage_multiplier
- projectile.stun /= debuff_multiplier
- projectile.knockdown /= debuff_multiplier
- projectile.cut_overlay(projectile_effect)
-
///Active Sonar - Displays a hud circle on the turf of any living creatures in the given radius
/obj/item/mod/module/active_sonar
name = "MOD active sonar"
@@ -522,11 +500,11 @@
idle_power_cost = 0
if(STORMTROOPER_MODE)
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.4
- mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src))
RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(stormtrooper_fired_gun))
if(SHARPSHOOTER_MODE)
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.6
- mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src))
RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(sharpshooter_fired_gun))
RegisterSignal(mod.wearer, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE, PROC_REF(apply_ricochet))
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant)
@@ -535,10 +513,10 @@
switch(selected_mode)
if(STORMTROOPER_MODE)
UnregisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN)
- mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src))
if(SHARPSHOOTER_MODE)
UnregisterSignal(mod.wearer, list(COMSIG_MOB_FIRED_GUN, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE))
- mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src))
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant)
/obj/item/mod/module/shooting_assistant/drain_power(amount)
@@ -582,10 +560,10 @@
required_slots = list(ITEM_SLOT_OCLOTHING)
/obj/item/mod/module/shove_blocker/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src))
/obj/item/mod/module/shove_blocker/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src))
/obj/item/mod/module/shove_blocker/locked
name = "superglued MOD bulwark module"
@@ -602,8 +580,8 @@
/obj/item/mod/module/quick_cuff/on_part_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src))
/obj/item/mod/module/quick_cuff/on_part_deactivation(deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src))
diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm
index 79d2d3779e0ff..9cf7c4702f70c 100644
--- a/code/modules/mod/modules/modules_service.dm
+++ b/code/modules/mod/modules/modules_service.dm
@@ -46,7 +46,7 @@
if(!isitem(target))
return
if(!isturf(target.loc))
- balloon_alert(mod.wearer, "must be on the floor!")
+ balloon_alert(mod.wearer, "not in storage!")
return
var/obj/item/microwave_target = target
var/datum/effect_system/spark_spread/spark_effect = new()
@@ -80,7 +80,7 @@
var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET)
if(shoes)
shoes.AddComponent(/datum/component/squeak, list('sound/effects/footstep/clownstep1.ogg'=1,'sound/effects/footstep/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please
- mod.wearer.AddElementTrait(TRAIT_WADDLING, MOD_TRAIT, /datum/element/waddling)
+ mod.wearer.AddElementTrait(TRAIT_WADDLING, REF(src), /datum/element/waddling)
if(is_clown_job(mod.wearer.mind?.assigned_role))
mod.wearer.add_mood_event("clownshoes", /datum/mood_event/clownshoes)
@@ -88,6 +88,24 @@
var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET)
if(shoes && !deleting)
qdel(shoes.GetComponent(/datum/component/squeak))
- REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, REF(src))
if(is_clown_job(mod.wearer.mind?.assigned_role))
mod.wearer.clear_mood_event("clownshoes")
+
+// recharging cleaner spray module
+/obj/item/mod/module/mister/cleaner
+ name = "MOD janitorial mister module"
+ desc = "An space cleaner mister, able to clean up messes quickly. Synthesizes its own supply over time (if active)."
+ device = /obj/item/reagent_containers/spray/mister/janitor
+ volume = 100
+ active_power_cost = DEFAULT_CHARGE_DRAIN
+
+/obj/item/mod/module/mister/cleaner/Initialize(mapload)
+ . = ..()
+ reagents.flags = AMOUNT_VISIBLE
+ reagents.add_reagent(/datum/reagent/space_cleaner, volume)
+
+/obj/item/mod/module/mister/cleaner/on_active_process(seconds_per_tick)
+ var/refill_add = min(volume - reagents.total_volume, 2 * seconds_per_tick)
+ if(refill_add > 0)
+ reagents.add_reagent(/datum/reagent/space_cleaner, refill_add)
diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm
index 8be66e0b3e38c..2c4a5955aed2b 100644
--- a/code/modules/mod/modules/modules_supply.dm
+++ b/code/modules/mod/modules/modules_supply.dm
@@ -61,7 +61,7 @@
return
stored_crates += picked_crate
picked_crate.forceMove(src)
- balloon_alert(mod.wearer, "picked up [picked_crate]")
+ balloon_alert(mod.wearer, "picked up crate")
drain_power(use_energy_cost)
else if(length(stored_crates))
var/turf/target_turf = get_turf(target)
@@ -407,11 +407,11 @@
))
/obj/item/mod/module/ash_accretion/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src))
RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
/obj/item/mod/module/ash_accretion/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src))
UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
if(!traveled_tiles)
return
@@ -496,10 +496,10 @@
mod.wearer.base_pixel_y -= 4
animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y, flags = ANIMATION_PARALLEL)
mod.wearer.SpinAnimation(1.5)
- mod.wearer.add_traits(user_traits, MOD_TRAIT)
+ mod.wearer.add_traits(user_traits, REF(src))
mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6)
mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE)
- mod.wearer.add_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown)
+ mod.wearer.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere)
RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange))
@@ -509,8 +509,8 @@
mod.wearer.base_pixel_y += 4
animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y)
addtimer(CALLBACK(mod.wearer, TYPE_PROC_REF(/datum, remove_filter), list("mod_ball", "mod_blur", "mod_outline")), animate_time)
- mod.wearer.remove_traits(user_traits, MOD_TRAIT)
- mod.wearer.remove_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown)
+ mod.wearer.remove_traits(user_traits, REF(src))
+ mod.wearer.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE)
mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6)
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere)
@@ -528,7 +528,7 @@
if(!.)
return
var/obj/projectile/bomb = new /obj/projectile/bullet/mining_bomb(mod.wearer.loc)
- bomb.preparePixelProjectile(target, mod.wearer)
+ bomb.aim_projectile(target, mod.wearer)
bomb.firer = mod.wearer
playsound(src, 'sound/items/weapons/gun/general/grenade_launch.ogg', 75, TRUE)
INVOKE_ASYNC(bomb, TYPE_PROC_REF(/obj/projectile, fire))
diff --git a/code/modules/mod/modules/modules_timeline.dm b/code/modules/mod/modules/modules_timeline.dm
index c14825bf3c70d..da36c2153d00f 100644
--- a/code/modules/mod/modules/modules_timeline.dm
+++ b/code/modules/mod/modules/modules_timeline.dm
@@ -133,13 +133,13 @@
///Signal fired when wearer attempts to trigger modules, if attempting while time is stopped
/obj/item/mod/module/timestopper/proc/on_module_triggered(datum/source)
SIGNAL_HANDLER
- balloon_alert(mod.wearer, "not while channelling timestop!")
+ balloon_alert(mod.wearer, "not while stopping time!")
return MOD_ABORT_USE
///Signal fired when wearer attempts to activate/deactivate suits, if attempting while time is stopped
/obj/item/mod/module/timestopper/proc/on_activate_block(datum/source, user)
SIGNAL_HANDLER
- balloon_alert(user, "not while channelling timestop!")
+ balloon_alert(user, "not while stopping time!")
return MOD_CANCEL_ACTIVATE
///Timeline Jumper - Infinite phasing. needs some special effects
@@ -222,7 +222,7 @@
//fire projectile
var/obj/projectile/energy/chrono_beam/chrono_beam = new /obj/projectile/energy/chrono_beam(get_turf(src))
chrono_beam.tem_weakref = WEAKREF(src)
- chrono_beam.preparePixelProjectile(target, mod.wearer)
+ chrono_beam.aim_projectile(target, mod.wearer)
chrono_beam.firer = mod.wearer
playsound(src, 'sound/items/modsuit/time_anchor_set.ogg', 50, TRUE)
INVOKE_ASYNC(chrono_beam, TYPE_PROC_REF(/obj/projectile, fire))
diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm
index d4b6154f88620..64ddc69d2edbf 100644
--- a/code/modules/mod/modules/modules_visor.dm
+++ b/code/modules/mod/modules/modules_visor.dm
@@ -14,12 +14,12 @@
/obj/item/mod/module/visor/on_activation()
if(length(visor_traits))
- mod.wearer.add_traits(visor_traits, MOD_TRAIT)
+ mod.wearer.add_traits(visor_traits, REF(src))
mod.wearer.update_sight()
/obj/item/mod/module/visor/on_deactivation(display_message = TRUE, deleting = FALSE)
if(length(visor_traits))
- mod.wearer.remove_traits(visor_traits, MOD_TRAIT)
+ mod.wearer.remove_traits(visor_traits, REF(src))
mod.wearer.update_sight()
//Medical Visor - Gives you a medical HUD.
diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm
index d8b97c523019d..009ad0370b219 100644
--- a/code/modules/modular_computers/computers/item/computer_ui.dm
+++ b/code/modules/modular_computers/computers/item/computer_ui.dm
@@ -139,6 +139,25 @@
//you can't close apps in emergency mode.
if(isnull(internal_cell) || internal_cell.charge)
active_program.kill_program(usr)
+ // DOPPLER EDIT ADDITION START - NTNRC_FOR_ALL
+ else // Slightly cursed code to let you swap between the chat client or messenger instead
+
+ if(istype(active_program, /datum/computer_file/program/chatclient))
+ var/datum/computer_file/program/messenger/our_messenger = locate() in stored_files
+ if(isnull(our_messenger))
+ return TRUE
+ open_program(usr, our_messenger)
+
+ else if(istype(active_program, /datum/computer_file/program/messenger))
+ var/datum/computer_file/program/chatclient/our_chat_client = locate() in stored_files
+ if(isnull(our_chat_client))
+ return TRUE
+ if(!get_ntnet_status()) // Can't swap to NTNRC without NTNet.
+ to_chat(usr, span_danger("\The [src]'s screen shows \"Unable to connect to NTNet. Please retry. If problem persists contact your system administrator.\" warning."))
+ return TRUE
+ open_program(usr, our_chat_client)
+
+ // DOPPLER EDIT ADDITION END - NTNRC_FOR_ALL
return TRUE
if("PC_shutdown")
shutdown_computer()
diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm
index 1fea772b85e58..05882d17f582b 100644
--- a/code/modules/modular_computers/computers/item/pda.dm
+++ b/code/modules/modular_computers/computers/item/pda.dm
@@ -39,6 +39,7 @@
/datum/computer_file/program/nt_pay,
/datum/computer_file/program/notepad,
/datum/computer_file/program/crew_manifest,
+ /datum/computer_file/program/chatclient, // DOPPLER EDIT ADDITION - NTNRC_FOR_ALL
)
///List of items that can be stored in a PDA
var/static/list/contained_item = list(
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index 2d81fb6c3b5cb..763335d6728ab 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -187,6 +187,6 @@
// "Burn" damage is equally strong against internal components and exterior casing
// "Brute" damage mostly damages the casing.
/obj/machinery/modular_computer/bullet_act(obj/projectile/proj)
- return cpu?.bullet_act(proj) || ..()
+ return cpu?.projectile_hit(proj) || ..()
#undef CPU_INTERACTABLE
diff --git a/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm
index 8045bcb1db0db..fc743caa66c67 100644
--- a/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm
+++ b/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm
@@ -160,6 +160,11 @@
if("PRG_setpassword")
if(!authed)
return
+ // DOPPLER EDIT ADDITION START - NTNRC_FOR_ALL
+ if(channel.strong) // Block setting passwords on important channels
+ computer.visible_message(span_warning("Warning. May not set a password on common channels."))
+ return
+ // DOPPLER EDIT ADDITION END - NTNRC_FOR_ALL
var/new_password = sanitize(params["new_password"])
if(!authed)
return
diff --git a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm
index f851dada495f3..e62aa35a6088c 100644
--- a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm
+++ b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm
@@ -11,12 +11,18 @@
circuit_comp_type = /obj/item/circuit_component/mod_program/camera
/// Camera built-into the tablet.
- var/obj/item/camera/internal_camera
+ var/obj/item/camera/app/internal_camera
/// Latest picture taken by the app.
var/datum/picture/internal_picture
/// How many pictures were taken already, used for the camera's TGUI photo display
var/picture_number = 1
+// Special type of camera for this exact usecase to prevent harddels
+/obj/item/camera/app
+ name = "internal camera"
+ desc = "Specialized internal camera protected from the hellish depths of SSWardrobe. \
+ Yell at coders if you somehow manage to see this"
+
/datum/computer_file/program/maintenance/camera/on_install()
. = ..()
internal_camera = new(computer)
diff --git a/code/modules/modular_computers/file_system/programs/virtual_pet.dm b/code/modules/modular_computers/file_system/programs/virtual_pet.dm
index 746824f8d8bf7..ed30fdbd70326 100644
--- a/code/modules/modular_computers/file_system/programs/virtual_pet.dm
+++ b/code/modules/modular_computers/file_system/programs/virtual_pet.dm
@@ -445,7 +445,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
for(var/type_index as anything in hat_selections)
if(level >= hat_selections[type_index])
var/obj/item/hat = type_index
- var/obj/item/hat_name = initial(hat.name)
+ var/hat_name = initial(hat.name)
if(length(SSachievements.achievements)) // The Achievements subsystem is active.
var/datum/award/required_cheevo = cheevo_hats[hat]
if(required_cheevo && !user.client.get_award_status(required_cheevo))
diff --git a/code/modules/pai/hud.dm b/code/modules/pai/hud.dm
index 77bcafefc82d2..cb7a5c9df390a 100644
--- a/code/modules/pai/hud.dm
+++ b/code/modules/pai/hud.dm
@@ -2,6 +2,7 @@
/atom/movable/screen/pai
icon = 'icons/hud/screen_pai.dmi'
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/required_software
/atom/movable/screen/pai/Click()
diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm
index ee732432851a7..728ac6427cec9 100644
--- a/code/modules/pai/pai.dm
+++ b/code/modules/pai/pai.dm
@@ -398,7 +398,7 @@
master_ref = WEAKREF(master)
master_name = master.real_name
master_dna = master.dna.unique_enzymes
- to_chat(src, span_boldannounce("You have been bound to a new master: [user.real_name]!"))
+ to_chat(src, span_bolddanger("You have been bound to a new master: [user.real_name]!"))
holochassis_ready = TRUE
return TRUE
diff --git a/code/modules/pai/software.dm b/code/modules/pai/software.dm
index 59db371610797..285193c7e4cd7 100644
--- a/code/modules/pai/software.dm
+++ b/code/modules/pai/software.dm
@@ -171,7 +171,7 @@
if(!holder.has_dna())
balloon_alert(src, "no dna detected!")
return FALSE
- to_chat(src, span_boldannounce(("[holder]'s UE string: [holder.dna.unique_enzymes]")))
+ to_chat(src, span_bolddanger(("[holder]'s UE string: [holder.dna.unique_enzymes]")))
to_chat(src, span_notice("DNA [holder.dna.unique_enzymes == master_dna ? "matches" : "does not match"] our stored Master's DNA."))
return TRUE
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index 7750b3926465f..968a093684b60 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -19,6 +19,7 @@
"Black" = "clipboard_black",
"White" = "clipboard_white",
)
+ unique_reskin_changes_inhand = TRUE
/// The stored pen
var/obj/item/pen/pen
diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm
index 3199156106c05..e442005feb7f4 100644
--- a/code/modules/paperwork/fax.dm
+++ b/code/modules/paperwork/fax.dm
@@ -328,7 +328,10 @@ GLOBAL_VAR_INIT(nt_fax_department, pick("PA HR Department", "PA Legal Department
history_add("Send", params["name"])
GLOB.requests.fax_request(usr.client, "sent a fax message from [fax_name]/[fax_id] to [params["name"]]", fax_paper)
- to_chat(GLOB.admins, span_adminnotice("[icon2html(src.icon, GLOB.admins)]FAX REQUEST: [ADMIN_FULLMONTY(usr)]: [span_linkify("sent a fax message from [fax_name]/[fax_id][ADMIN_FLW(src)] to [html_encode(params["name"])]")] [ADMIN_SHOW_PAPER(fax_paper)] [ADMIN_PRINT_FAX(fax_paper, fax_name, params["id"])]"), confidential = TRUE)
+ to_chat(GLOB.admins,
+ span_adminnotice("[icon2html(src.icon, GLOB.admins)]FAX REQUEST: [ADMIN_FULLMONTY(usr)]: [span_linkify("sent a fax message from [fax_name]/[fax_id][ADMIN_FLW(src)] to [html_encode(params["name"])]")] [ADMIN_SHOW_PAPER(fax_paper)] [ADMIN_PRINT_FAX(fax_paper, fax_name, params["id"])]"),
+ type = MESSAGE_TYPE_PRAYER,
+ confidential = TRUE)
for(var/client/staff as anything in GLOB.admins)
if(staff?.prefs.read_preference(/datum/preference/toggle/comms_notification))
SEND_SOUND(staff, sound('sound/misc/server-ready.ogg'))
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 525cb8aac2310..fcd73ec99bf1e 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -394,7 +394,7 @@
* * plane_type - what it will be folded into (path)
*/
/obj/item/paper/proc/make_plane(mob/living/user, plane_type = /obj/item/paperplane)
- balloon_alert(user, "folded into a plane")
+ loc.balloon_alert(user, "folded into a plane")
user.temporarilyRemoveItemFromInventory(src)
var/obj/item/paperplane/new_plane = new plane_type(loc, src)
if(user.Adjacent(new_plane))
@@ -634,7 +634,7 @@
var/stamp_icon_state = stamp_info["stamp_icon_state"]
if (LAZYLEN(raw_stamp_data) >= MAX_PAPER_STAMPS)
- to_chat(usr, pick("You try to stamp but you miss!", "There is no where else you can stamp!"))
+ to_chat(usr, pick("You try to stamp but you miss!", "There is nowhere else you can stamp!"))
return TRUE
add_stamp(stamp_class, stamp_x, stamp_y, stamp_rotation, stamp_icon_state)
@@ -649,7 +649,7 @@
var/this_input_length = length_char(paper_input)
if(this_input_length == 0)
- to_chat(user, pick("Writing block strikes again!", "You forgot to write anthing!"))
+ to_chat(user, pick("Writing block strikes again!", "You forgot to write anything!"))
return TRUE
// If the paper is on an unwritable noticeboard, this usually shouldn't be possible.
diff --git a/code/modules/paperwork/paperwork.dm b/code/modules/paperwork/paperwork.dm
index 2acedcf00f093..9c88bb61a68c2 100644
--- a/code/modules/paperwork/paperwork.dm
+++ b/code/modules/paperwork/paperwork.dm
@@ -61,6 +61,10 @@
add_stamp()
return TRUE
+/obj/item/paperwork/examine(mob/user) // DOPPLER EDIT - paperwork has more description, modifying examine to fake the standard extended examine text
+ . = ..()
+ . += span_notice("This item could be examined further...")
+
/obj/item/paperwork/examine_more(mob/user)
. = ..()
diff --git a/code/modules/plumbing/plumbers/iv_drip.dm b/code/modules/plumbing/plumbers/iv_drip.dm
index 45c2ebca27acb..e528745bb60c2 100644
--- a/code/modules/plumbing/plumbers/iv_drip.dm
+++ b/code/modules/plumbing/plumbers/iv_drip.dm
@@ -14,7 +14,7 @@
AddComponent(/datum/component/simple_rotation)
/obj/machinery/iv_drip/plumbing/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
- if(attached)
+ if(attachment)
context[SCREENTIP_CONTEXT_RMB] = "Take needle out"
else if(reagent_container && !use_internal_storage)
context[SCREENTIP_CONTEXT_RMB] = "Eject container"
diff --git a/code/modules/plumbing/plumbers/pill_press.dm b/code/modules/plumbing/plumbers/pill_press.dm
index 23a7c7b03e54f..b5b0744589ae7 100644
--- a/code/modules/plumbing/plumbers/pill_press.dm
+++ b/code/modules/plumbing/plumbers/pill_press.dm
@@ -1,7 +1,5 @@
///the minimum size of a pill or patch
#define MIN_VOLUME 5
-///the maximum size a pill or patch can be
-#define MAX_VOLUME 50
///max amount of pills allowed on our tile before we start storing them instead
#define MAX_FLOOR_PRODUCTS 10
@@ -11,16 +9,16 @@
desc = "A press that makes pills, patches and bottles."
icon_state = "pill_press"
- /// current operating product (pills or patches)
- var/product = "pill"
/// selected size of the product
var/current_volume = 10
+ /// maximum printable volume of the product
+ var/max_volume = 50
/// prefix for the product name
var/product_name = "factory"
/// All packaging types wrapped up in 1 big list
var/static/list/packaging_types = null
///The type of packaging to use
- var/packaging_type
+ var/obj/item/reagent_containers/packaging_type
///Category of packaging
var/packaging_category
/// list of products stored in the machine, so we dont have 610 pills on one tile
@@ -52,34 +50,28 @@
packaging_types += list(category_item)
- packaging_type = REF(GLOB.reagent_containers[CAT_PILLS][1])
- decode_category()
+ packaging_type = GLOB.reagent_containers[CAT_PILLS][1]
+ max_volume = initial(packaging_type.volume)
+ current_volume = clamp(current_volume, MIN_VOLUME, max_volume)
AddComponent(/datum/component/plumbing/simple_demand, bolt, layer)
+/obj/machinery/plumbing/pill_press/Destroy(force)
+ QDEL_LAZYLIST(stored_products)
+ return ..()
+
/obj/machinery/plumbing/pill_press/examine(mob/user)
. = ..()
. += span_notice("The [name] currently has [stored_products.len] stored. There needs to be less than [MAX_FLOOR_PRODUCTS] on the floor to continue dispensing.")
-/// decode product category from its type path and returns the decoded typepath
-/obj/machinery/plumbing/pill_press/proc/decode_category()
- var/obj/item/reagent_containers/container = locate(packaging_type)
- if(ispath(container, /obj/item/reagent_containers/pill/patch))
- packaging_category = CAT_PATCHES
- else if(ispath(container, /obj/item/reagent_containers/pill))
- packaging_category = CAT_PILLS
- else
- packaging_category = "Bottles"
- return container
-
/obj/machinery/plumbing/pill_press/process(seconds_per_tick)
if(!is_operational)
return
//shift & check to account for floating point inaccuracies
if(reagents.total_volume >= current_volume)
- var/obj/item/reagent_containers/container = locate(packaging_type)
- container = new container(src)
+ var/obj/item/reagent_containers/container = new packaging_type(src)
+
var/suffix
switch(packaging_category)
if(CAT_PILLS)
@@ -121,7 +113,6 @@
var/list/data = list()
data["min_volume"] = MIN_VOLUME
- data["max_volume"] = MAX_VOLUME
data["packaging_types"] = packaging_types
return data
@@ -130,8 +121,9 @@
var/list/data = list()
data["current_volume"] = current_volume
+ data["max_volume"] = max_volume
data["product_name"] = product_name
- data["packaging_type"] = packaging_type
+ data["packaging_type"] = REF(packaging_type)
data["packaging_category"] = packaging_category
return data
@@ -141,21 +133,57 @@
if(.)
return
- . = TRUE
switch(action)
if("change_current_volume")
- current_volume = round(clamp(text2num(params["volume"]), MIN_VOLUME, MAX_VOLUME))
+ var/value = params["volume"]
+ if(isnull(value))
+ return FALSE
+
+ value = text2num(value)
+ if(isnull(value))
+ return FALSE
+
+ current_volume = clamp(value, MIN_VOLUME, max_volume)
+ return TRUE
+
if("change_product_name")
var/formatted_name = html_encode(params["name"])
if (length(formatted_name) > MAX_NAME_LEN)
product_name = copytext(formatted_name, 1, MAX_NAME_LEN + 1)
else
product_name = formatted_name
+ return TRUE
+
if("change_product")
- packaging_type = params["ref"]
- var/obj/item/reagent_containers/container = decode_category()
- current_volume = clamp(current_volume, MIN_VOLUME, initial(container.volume))
+ var/container = params["ref"]
+ if(!container)
+ return FALSE
+
+ //is a valid option
+ var/container_found = FALSE
+ for(var/list/category as anything in packaging_types)
+ if(container_found)
+ break
+ for(var/list/package_item as anything in category["products"])
+ if(container == package_item["ref"])
+ container_found = TRUE
+ break
+ if(!container_found)
+ return FALSE
+
+ //decode container & its category
+ packaging_type = locate(container)
+ if(ispath(packaging_type, /obj/item/reagent_containers/pill/patch))
+ packaging_category = CAT_PATCHES
+ else if(ispath(packaging_type, /obj/item/reagent_containers/pill))
+ packaging_category = CAT_PILLS
+ else
+ packaging_category = "Bottles"
+
+ //get new volumes
+ max_volume = initial(packaging_type.volume)
+ current_volume = clamp(current_volume, MIN_VOLUME, max_volume)
+ return TRUE
#undef MIN_VOLUME
-#undef MAX_VOLUME
#undef MAX_FLOOR_PRODUCTS
diff --git a/code/modules/point/point.dm b/code/modules/point/point.dm
index 683710bf128e4..98574373a816c 100644
--- a/code/modules/point/point.dm
+++ b/code/modules/point/point.dm
@@ -122,7 +122,15 @@
if(!(pointing_at in view(client.view, src)))
return FALSE
-
+ if(iscarbon(src)) // special interactions for carbons
+ var/mob/living/carbon/our_carbon = src
+ if(our_carbon.usable_hands <= 0 || src.incapacitated & INCAPABLE_RESTRAINTS || HAS_TRAIT(src, TRAIT_HANDS_BLOCKED))
+ if(TIMER_COOLDOWN_FINISHED(src, "point_verb_emote_cooldown"))
+ //cooldown handled in the emote.
+ our_carbon.emote("point [pointing_at]")
+ else
+ to_chat(src, span_warning("You need to wait before pointing again!"))
+ return FALSE
point_at(pointing_at, TRUE)
return TRUE
diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm
index 3657bb84db83a..4d38d6944feeb 100644
--- a/code/modules/power/lighting/light.dm
+++ b/code/modules/power/lighting/light.dm
@@ -99,7 +99,7 @@
continue
if(on_turf.dir != dir)
continue
- stack_trace("Conflicting double stacked light [on_turf.type] found at ([our_location.x],[our_location.y],[our_location.z])")
+ stack_trace("Conflicting double stacked light [on_turf.type] found at [get_area(our_location)] ([our_location.x],[our_location.y],[our_location.z])")
qdel(on_turf)
if(!mapload) //sync up nightshift lighting for player made lights
@@ -222,6 +222,8 @@
var/color_set = bulb_colour
if(color)
color_set = color
+ if (cached_color_filter)
+ color_set = apply_matrix_to_color(color_set, cached_color_filter["color"], cached_color_filter["space"] || COLORSPACE_RGB)
if(reagents)
START_PROCESSING(SSmachines, src)
var/area/local_area = get_room_area()
@@ -576,15 +578,13 @@
else if(istype(user) && user.dna.check_mutation(/datum/mutation/human/telekinesis))
to_chat(user, span_notice("You telekinetically remove the light [fitting]."))
else
- var/obj/item/bodypart/affecting = user.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm")
- if(affecting?.receive_damage( 0, 5 )) // 5 burn damage
- user.update_damage_overlays()
+ var/obj/item/bodypart/affecting = user.get_active_hand()
+ user.apply_damage(5, BURN, affecting, wound_bonus = CANT_WOUND)
if(HAS_TRAIT(user, TRAIT_LIGHTBULB_REMOVER))
- to_chat(user, span_notice("You feel your [affecting] burning, and the light beginning to budge."))
+ to_chat(user, span_notice("You feel your [affecting.plaintext_zone] burning, but the light begins to budge..."))
if(!do_after(user, 5 SECONDS, target = src))
return
- if(affecting?.receive_damage( 0, 10 )) // 10 more burn damage
- user.update_damage_overlays()
+ user.apply_damage(10, BURN, user.get_active_hand(), wound_bonus = CANT_WOUND)
to_chat(user, span_notice("You manage to remove the light [fitting], shattering it in process."))
break_light_tube()
else
@@ -725,7 +725,7 @@
plane = FLOOR_PLANE
light_type = /obj/item/light/bulb
fitting = "bulb"
- nightshift_brightness = 3
+ nightshift_brightness = 4
fire_brightness = 4.5
/obj/machinery/light/floor/get_light_offset()
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index dff4a732b9312..69693af3a4a92 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -73,10 +73,10 @@
tesla_zap(source = src, zap_range = 5, power = power_gen * 20)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), src, 2, 3, 4, null, 8), 10 SECONDS) // Not a normal explosion.
-/obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/Proj)
+/obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/proj)
. = ..()
- if(!going_kaboom && istype(Proj) && Proj.damage > 0 && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)))
- log_bomber(Proj.firer, "triggered a", src, "explosion via projectile")
+ if(!going_kaboom && istype(proj) && proj.damage > 0 && ((proj.damage_type == BURN) || (proj.damage_type == BRUTE)))
+ log_bomber(proj.firer, "triggered a", src, "explosion via projectile")
overload()
/obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B)
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 1993a51e29b46..a53d959c9e31e 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -149,7 +149,7 @@
if(current_size <= STAGE_TWO)
investigate_log("has been destroyed by a heavy explosion.", INVESTIGATE_ENGINE)
qdel(src)
- return
+ return TRUE
energy -= round(((energy + 1) / 2), 1)
if(EXPLODE_HEAVY)
diff --git a/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm b/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm
index 4fe8863815a2d..e1d2a25d4da07 100644
--- a/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm
+++ b/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm
@@ -40,9 +40,9 @@
message = "You hear a lot of rattling in the disposal pipes around you as reality itself distorts. Yet, you feel safe."
else
message = "You hold onto \the [victim.loc] as hard as you can, as reality distorts around you. You feel safe."
- to_chat(victim, span_boldannounce(message))
+ to_chat(victim, span_bolddanger(message))
continue
- to_chat(victim, span_boldannounce("You feel reality distort for a moment..."))
+ to_chat(victim, span_bolddanger("You feel reality distort for a moment..."))
if (isliving(victim))
var/mob/living/living_victim = victim
living_victim.add_mood_event("delam", /datum/mood_event/delam)
@@ -161,7 +161,7 @@
for(var/mob/player as anything in GLOB.player_list)
if(!isdead(player))
var/mob/living/living_player = player
- to_chat(player, span_boldannounce("Everything around you is resonating with a powerful energy. This can't be good."))
+ to_chat(player, span_bolddanger("Everything around you is resonating with a powerful energy. This can't be good."))
living_player.add_mood_event("cascade", /datum/mood_event/cascade)
SEND_SOUND(player, 'sound/effects/magic/charge.ogg')
diff --git a/code/modules/power/supermatter/supermatter_hit_procs.dm b/code/modules/power/supermatter/supermatter_hit_procs.dm
index 167ee7988b138..d2e87ef4e548d 100644
--- a/code/modules/power/supermatter/supermatter_hit_procs.dm
+++ b/code/modules/power/supermatter/supermatter_hit_procs.dm
@@ -48,7 +48,7 @@
if(!is_valid_z_level(get_turf(hearing_mob), sm_turf))
continue
SEND_SOUND(hearing_mob, 'sound/effects/supermatter.ogg') //everyone goan know bout this
- to_chat(hearing_mob, span_boldannounce("A horrible screeching fills your ears, and a wave of dread washes over you..."))
+ to_chat(hearing_mob, span_bolddanger("A horrible screeching fills your ears, and a wave of dread washes over you..."))
qdel(src)
return gain
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index 2e2931c835c0d..ab210fe1986fe 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -243,7 +243,7 @@
//This also means we have no need to track distance, as the doview() proc does it all for us.
//Darkness fucks oview up hard. I've tried dview() but it doesn't seem to work
- //I hate existance
+ //I hate existence
for(var/atom/A as anything in typecache_filter_list(oview(zap_range+2, source), things_to_shock))
if(!(zap_flags & ZAP_ALLOW_DUPLICATES) && LAZYACCESS(shocked_targets, A))
continue
diff --git a/code/modules/power/turbine/turbine.dm b/code/modules/power/turbine/turbine.dm
index e839800158f63..2112002e50745 100644
--- a/code/modules/power/turbine/turbine.dm
+++ b/code/modules/power/turbine/turbine.dm
@@ -1,11 +1,18 @@
+///Minimum pressure of gases pumped through the turbine
#define MINIMUM_TURBINE_PRESSURE 0.01
+///Returns the minimum pressure if it falls below the value
#define PRESSURE_MAX(value)(max((value), MINIMUM_TURBINE_PRESSURE))
+///Use emissive for overlays
+#define EMISSIVE_OVERLAY (1 << 0)
+///No turned off overlay
+#define NO_INACTIVE_OVERLAY (1 << 1)
/obj/machinery/power/turbine
+ icon = 'icons/obj/machines/engine/turbine.dmi'
density = TRUE
resistance_flags = FIRE_PROOF
can_atmos_pass = ATMOS_PASS_DENSITY
- processing_flags = NONE
+ processing_flags = START_PROCESSING_MANUALLY
///Checks if the machine is processing or not
var/active = FALSE
@@ -17,15 +24,8 @@
var/obj/item/turbine_parts/part_path
///The gas mixture this turbine part is storing
var/datum/gas_mixture/machine_gasmix
-
- ///Our overlay when active
- var/active_overlay = ""
- ///Our overlay when off
- var/off_overlay = ""
- ///Our overlay when open
- var/open_overlay = ""
- ///Should we use emissive appearance?
- var/emissive = FALSE
+ ///Flags for our overlays
+ var/overlay_flags = NONE
/obj/machinery/power/turbine/Initialize(mapload, gas_theoretical_volume)
. = ..()
@@ -59,41 +59,6 @@
deactivate_parts()
return ..()
-/**
- * Handles all the calculations needed for the gases, work done, temperature increase/decrease
- *
- * Arguments
- * * datum/gas_mixture/input_mix - the gas from the environment or from another part of the turbine
- * * datum/gas_mixture/output_mix - the gas that got pumped into this part from the input mix.
- * ideally should be same as input mix but varying texmperatur & pressures can cause varying results
- * * work_amount_to_remove - the amount of work to subtract from the actual work done to pump in the input mixture.
- * For e.g. if gas was transfered from the inlet compressor to the rotor we want to subtract the work done
- * by the inlet from the rotor to get the true work done
- * * intake_size - the percentage of gas to be fed into an turbine part, controlled by turbine computer for inlet compressor only
- */
-/obj/machinery/power/turbine/proc/transfer_gases(datum/gas_mixture/input_mix, datum/gas_mixture/output_mix, work_amount_to_remove, intake_size = 1)
- //pump gases. if no gases were transferred then no work was done
- var/output_pressure = PRESSURE_MAX(output_mix.return_pressure())
- var/datum/gas_mixture/transferred_gases = input_mix.pump_gas_to(output_mix, input_mix.return_pressure() * intake_size)
- if(!transferred_gases)
- return 0
-
- //compute work done
- var/work_done = QUANTIZE(transferred_gases.total_moles()) * R_IDEAL_GAS_EQUATION * transferred_gases.temperature * log((transferred_gases.volume * PRESSURE_MAX(transferred_gases.return_pressure())) / (output_mix.volume * output_pressure)) * TURBINE_WORK_CONVERSION_MULTIPLIER
- if(work_amount_to_remove)
- work_done = work_done - work_amount_to_remove
-
- //compute temperature & work from temperature if that is a lower value
- var/output_mix_heat_capacity = output_mix.heat_capacity()
- if(!output_mix_heat_capacity)
- return 0
- work_done = min(work_done, (output_mix_heat_capacity * output_mix.temperature - output_mix_heat_capacity * TCMB) / TURBINE_HEAT_CONVERSION_MULTIPLIER)
- output_mix.temperature = max((output_mix.temperature * output_mix_heat_capacity + work_done * TURBINE_HEAT_CONVERSION_MULTIPLIER) / output_mix_heat_capacity, TCMB)
- return work_done
-
-/obj/machinery/power/turbine/block_superconductivity()
- return TRUE
-
/obj/machinery/power/turbine/add_context(atom/source, list/context, obj/item/held_item, mob/user)
if(isnull(held_item))
return NONE
@@ -128,7 +93,7 @@
. = ..()
if(installed_part)
. += span_notice("Currently at tier [installed_part.current_tier].")
- if(installed_part.current_tier + 1 < installed_part.max_tier)
+ if(installed_part.current_tier + 1 < TURBINE_PART_TIER_FOUR)
. += span_notice("Can be upgraded by using a tier [installed_part.current_tier + 1] part.")
. += span_notice("The [installed_part.name] can be [EXAMINE_HINT("pried")] out.")
else
@@ -140,15 +105,54 @@
/obj/machinery/power/turbine/update_overlays()
. = ..()
+
if(panel_open)
- . += open_overlay
+ . += "[base_icon_state]_open"
if(active)
- . += active_overlay
- if(emissive)
- . += emissive_appearance(icon, active_overlay, src)
- else
- . += off_overlay
+ . += "[base_icon_state]_on"
+ if(overlay_flags & EMISSIVE_OVERLAY)
+ . += emissive_appearance(icon, "[base_icon_state]_on", src)
+ else if(!(overlay_flags & NO_INACTIVE_OVERLAY))
+ . += "[base_icon_state]_off"
+
+
+/**
+ * Handles all the calculations needed for the gases, work done, temperature increase/decrease
+ *
+ * Arguments
+ * * datum/gas_mixture/input_mix - the gas from the environment or from another part of the turbine
+ * * datum/gas_mixture/output_mix - the gas that got pumped into this part from the input mix.
+ * ideally should be same as input mix but varying texmperatur & pressures can cause varying results
+ * * work_amount_to_remove - the amount of work to subtract from the actual work done to pump in the input mixture.
+ * For e.g. if gas was transfered from the inlet compressor to the rotor we want to subtract the work done
+ * by the inlet from the rotor to get the true work done
+ * * intake_size - the percentage of gas to be fed into an turbine part, controlled by turbine computer for inlet compressor only
+ */
+/obj/machinery/power/turbine/proc/transfer_gases(datum/gas_mixture/input_mix, datum/gas_mixture/output_mix, work_amount_to_remove, intake_size = 1)
+ PROTECTED_PROC(TRUE)
+
+ //pump gases. if no gases were transferred then no work was done
+ var/output_pressure = PRESSURE_MAX(output_mix.return_pressure())
+ var/datum/gas_mixture/transferred_gases = input_mix.pump_gas_to(output_mix, input_mix.return_pressure() * intake_size)
+ if(!transferred_gases)
+ return 0
+
+ //compute work done
+ var/work_done = QUANTIZE(transferred_gases.total_moles()) * R_IDEAL_GAS_EQUATION * transferred_gases.temperature * log((transferred_gases.volume * PRESSURE_MAX(transferred_gases.return_pressure())) / (output_mix.volume * output_pressure)) * TURBINE_WORK_CONVERSION_MULTIPLIER
+ if(work_amount_to_remove)
+ work_done = work_done - work_amount_to_remove
+
+ //compute temperature & work from temperature if that is a lower value
+ var/output_mix_heat_capacity = output_mix.heat_capacity()
+ if(!output_mix_heat_capacity)
+ return 0
+ work_done = min(work_done, (output_mix_heat_capacity * output_mix.temperature - output_mix_heat_capacity * TCMB) / TURBINE_HEAT_CONVERSION_MULTIPLIER)
+ output_mix.temperature = max((output_mix.temperature * output_mix_heat_capacity + work_done * TURBINE_HEAT_CONVERSION_MULTIPLIER) / output_mix_heat_capacity, TCMB)
+ return work_done
+
+/obj/machinery/power/turbine/block_superconductivity()
+ return TRUE
/obj/machinery/power/turbine/screwdriver_act(mob/living/user, obj/item/tool)
. = ITEM_INTERACT_BLOCKING
@@ -165,7 +169,7 @@
deactivate_parts(user)
else
activate_parts(user)
- update_appearance()
+ update_appearance(UPDATE_OVERLAYS)
return ITEM_INTERACT_SUCCESS
@@ -229,22 +233,22 @@
if(gone == installed_part)
installed_part = null
-/obj/machinery/power/turbine/attackby(obj/item/turbine_parts/object, mob/user, params)
- //not the correct part
+/obj/machinery/power/turbine/item_interaction(mob/living/user, obj/item/turbine_parts/object, list/modifiers)
+ . = NONE
if(!istype(object, part_path))
return ..()
//not in a state to accep the part. return TRUE so we don't bash the machine and damage it
if(active)
balloon_alert(user, "turn off the machine first!")
- return TRUE
+ return ITEM_INTERACT_BLOCKING
if(!panel_open)
balloon_alert(user, "open the maintenance hatch first!")
- return TRUE
+ return ITEM_INTERACT_BLOCKING
//install the part
if(!do_after(user, 2 SECONDS, src))
- return TRUE
+ return ITEM_INTERACT_BLOCKING
if(installed_part)
user.put_in_hands(installed_part)
balloon_alert(user, "replaced part with the one in hand")
@@ -252,22 +256,21 @@
balloon_alert(user, "installed new part")
user.transferItemToLoc(object, src)
installed_part = object
- return TRUE
+ return ITEM_INTERACT_SUCCESS
/// Gets the efficiency of the installed part, returns 0 if no part is installed
/obj/machinery/power/turbine/proc/get_efficiency()
+ SHOULD_BE_PURE(TRUE)
+
return installed_part?.part_efficiency || 0
/obj/machinery/power/turbine/inlet_compressor
name = "inlet compressor"
desc = "The input side of a turbine generator, contains the compressor."
- icon = 'icons/obj/machines/engine/turbine.dmi'
icon_state = "inlet_compressor"
+ base_icon_state = "inlet"
circuit = /obj/item/circuitboard/machine/turbine_compressor
part_path = /obj/item/turbine_parts/compressor
- active_overlay = "inlet_animation"
- off_overlay = "inlet_off"
- open_overlay = "inlet_open"
/// The rotor this inlet is linked to
var/obj/machinery/power/turbine/core_rotor/rotor
@@ -296,6 +299,8 @@
* Returns temperature of the gas mix absorbed only if some work was done
*/
/obj/machinery/power/turbine/inlet_compressor/proc/compress_gases()
+ SHOULD_NOT_OVERRIDE(TRUE)
+
compressor_work = 0
compressor_pressure = MINIMUM_TURBINE_PRESSURE
if(QDELETED(input_turf))
@@ -314,16 +319,14 @@
return input_turf_mixture.temperature
+//===========================OUTLET==============================================
/obj/machinery/power/turbine/turbine_outlet
name = "turbine outlet"
desc = "The output side of a turbine generator, contains the turbine and the stator."
- icon = 'icons/obj/machines/engine/turbine.dmi'
icon_state = "turbine_outlet"
+ base_icon_state = "outlet"
circuit = /obj/item/circuitboard/machine/turbine_stator
part_path = /obj/item/turbine_parts/stator
- active_overlay = "outlet_animation"
- off_overlay = "outlet_off"
- open_overlay = "outlet_open"
/// The rotor this outlet is linked to
var/obj/machinery/power/turbine/core_rotor/rotor
@@ -343,6 +346,8 @@
/// push gases from its gas mix to output turf
/obj/machinery/power/turbine/turbine_outlet/proc/expel_gases()
+ SHOULD_NOT_OVERRIDE(TRUE)
+
if(QDELETED(output_turf))
output_turf = get_step(loc, dir)
//turf is blocked don't eject gases
@@ -358,18 +363,16 @@
//return ejected gases
return ejected_gases
+//===========================================CORE ROTOR=========================================
/obj/machinery/power/turbine/core_rotor
name = "core rotor"
desc = "The middle part of a turbine generator, contains the rotor and the main computer."
- icon = 'icons/obj/machines/engine/turbine.dmi'
icon_state = "core_rotor"
- active_overlay = "core_light"
- open_overlay = "core_open"
- active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION
- emissive = TRUE
+ base_icon_state = "core"
can_change_cable_layer = TRUE
circuit = /obj/item/circuitboard/machine/turbine_rotor
part_path = /obj/item/turbine_parts/rotor
+ overlay_flags = EMISSIVE_OVERLAY | NO_INACTIVE_OVERLAY
///ID to easily connect the main part of the turbine to the computer
var/mapping_id
@@ -378,9 +381,9 @@
///Reference to the turbine
var/obj/machinery/power/turbine/turbine_outlet/turbine
///Rotation per minute the machine is doing
- var/rpm
+ var/rpm = 0
///Amount of power the machine is producing
- var/produced_energy
+ var/produced_energy = 0
///Check to see if all parts are connected to the core
var/all_parts_connected = FALSE
///Max rmp that the installed parts can handle, limits the rpms
@@ -462,16 +465,21 @@
//works same as regular left click
return multitool_act(user, tool)
-/// convinience proc for balloon alert which returns if viewer is null
+/**
+ * convinience proc for balloon alert which returns if viewer is null
+ * Arguments
+ *
+ * * mob/viewer - the player receiving the message
+ * * text - the message
+ */
/obj/machinery/power/turbine/core_rotor/proc/feedback(mob/viewer, text)
+ PRIVATE_PROC(TRUE)
+
if(isnull(viewer))
return
balloon_alert(viewer, text)
-/**
- * Called to activate the complete machine, checks for part presence, correct orientation and installed parts
- * Registers the input/output turfs
- */
+///Called to activate the complete machine, checks for part presence, correct orientation and installed parts
/obj/machinery/power/turbine/core_rotor/activate_parts(mob/user, check_only = FALSE)
//if this is not a checkup and all parts are connected then we have nothing to do
if(!check_only && all_parts_connected)
@@ -479,13 +487,18 @@
//locate compressor & turbine, when checking we simply check to see if they are still there
if(!check_only)
- compressor = locate(/obj/machinery/power/turbine/inlet_compressor) in get_step(src, REVERSE_DIR(dir))
- turbine = locate(/obj/machinery/power/turbine/turbine_outlet) in get_step(src, dir)
+ compressor = locate() in get_step(src, REVERSE_DIR(dir))
+ turbine = locate() in get_step(src, dir)
- //maybe look for them the other way around. we want the rotor to allign with them either way for player convinience
- if(!compressor && !turbine)
- compressor = locate(/obj/machinery/power/turbine/inlet_compressor) in get_step(src, dir)
- turbine = locate(/obj/machinery/power/turbine/turbine_outlet) in get_step(src, REVERSE_DIR(dir))
+ //maybe look for them the other way around. this means the rotor is facing the wrong way
+ if(QDELETED(compressor) && QDELETED(turbine))
+ compressor = locate() in get_step(src, dir)
+ turbine = locate() in get_step(src, REVERSE_DIR(dir))
+
+ //show corrective actions
+ if(!QDELETED(compressor) || !QDELETED(turbine))
+ feedback(user, "rotor is facing the wrong way!")
+ return (all_parts_connected = FALSE)
//sanity checks for compressor
if(QDELETED(compressor))
@@ -505,17 +518,17 @@
if(QDELETED(turbine))
feedback(user, "missing turbine!")
return (all_parts_connected = FALSE)
- if(turbine.dir != dir && turbine.dir != REVERSE_DIR(dir))
+ if(turbine.dir != dir && turbine.dir != REVERSE_DIR(dir)) //make sure it's not perpendicular to the rotor
feedback(user, "turbine not aligned with rotor!")
return (all_parts_connected = FALSE)
if(!turbine.can_connect)
- feedback(user, "turbine panel is either open or is misplaced!") //we say misplaced because can_connect becomes FALSE when this turbine is moved
+ feedback(user, "close turbine panel!") //we say misplaced because can_connect becomes FALSE when this turbine is moved
return (all_parts_connected = FALSE)
if(!turbine.installed_part)
feedback(user, "turbine is missing stator part!")
return (all_parts_connected = FALSE)
- //final sanity check to make sure turbine & compressor are facing the same direction. From an visual perspective they will appear facing away from each other actually. I know blame spriter's
+ //sanity check to make sure turbine & compressor are facing the same direction. From an visual perspective they will appear facing away from each other actually. I know blame spriter's
if(compressor.dir != turbine.dir)
feedback(user, "turbine & compressor are not facing away from each other!")
return (all_parts_connected = FALSE)
@@ -537,85 +550,60 @@
* Allows to null the various machines and references from the main core
*/
/obj/machinery/power/turbine/core_rotor/deactivate_parts()
- if(all_parts_connected)
- power_off()
+ toggle_power(force_off = TRUE)
compressor?.rotor = null
compressor = null
turbine?.rotor = null
turbine = null
all_parts_connected = FALSE
disconnect_from_network()
- SSair.stop_processing_machine(src)
/obj/machinery/power/turbine/core_rotor/on_deconstruction(disassembled)
deactivate_parts()
return ..()
/// Toggle power on and off, not safe
-/obj/machinery/power/turbine/core_rotor/proc/toggle_power()
- if(active)
- power_off()
- return
- power_on()
-
-/**
- * Activate all three parts, not safe, it assumes the machine already connected and properly working
- * It does a minimun check to ensure the parts still exist
- */
-/obj/machinery/power/turbine/core_rotor/proc/power_on()
- if(active || QDELETED(compressor) || QDELETED(turbine))
- return
- active = TRUE
- compressor.active = TRUE
- turbine.active = TRUE
- call_parts_update_appearance()
- SSair.start_processing_machine(src)
-
-/// Calls all parts update appearance proc.
-/obj/machinery/power/turbine/core_rotor/proc/call_parts_update_appearance()
- update_appearance()
- if(!QDELETED(compressor))
- compressor.update_appearance()
- if(!QDELETED(turbine))
- turbine.update_appearance()
+/obj/machinery/power/turbine/core_rotor/proc/toggle_power(force_off)
+ SHOULD_NOT_OVERRIDE(TRUE)
+
+ //toggle status
+ if(force_off)
+ if(!active) //was already off
+ return
+ active = FALSE
+ else
+ active = !active
-/**
- * Deactivate all three parts, not safe, it assumes the machine already connected and properly working
- * will try to turn off whatever components are left of this machine
- */
-/obj/machinery/power/turbine/core_rotor/proc/power_off()
- if(!active)
- return
- active = FALSE
+ //update operation status of parts
+ update_appearance(UPDATE_OVERLAYS)
if(!QDELETED(compressor))
- compressor.active = FALSE
+ compressor.active = active
+ compressor.update_appearance(UPDATE_OVERLAYS)
if(!QDELETED(turbine))
- turbine.active = FALSE
- call_parts_update_appearance()
- SSair.stop_processing_machine(src)
+ turbine.active = active
+ turbine.update_appearance(UPDATE_OVERLAYS)
-/// Returns true if all parts have their panel closed
-/obj/machinery/power/turbine/core_rotor/proc/all_parts_ready()
- if(QDELETED(compressor))
- return FALSE
- if(QDELETED(turbine))
- return FALSE
- return !panel_open && !compressor.panel_open && !turbine.panel_open
+ //start or stop processing
+ if(active)
+ update_mode_power_usage(ACTIVE_POWER_USE, active_power_usage)
+ begin_processing()
+ else
+ unset_static_power()
+ end_processing()
/// Getter for turbine integrity, return the amount in %
/obj/machinery/power/turbine/core_rotor/proc/get_turbine_integrity()
+ SHOULD_NOT_OVERRIDE(TRUE)
+
var/integrity = damage / 500
integrity = max(round(100 - integrity * 100, 0.01), 0)
return integrity
-/obj/machinery/power/turbine/core_rotor/process_atmos()
+/obj/machinery/power/turbine/core_rotor/process(seconds_per_tick)
if(!active || !activate_parts(check_only = TRUE) || (machine_stat & BROKEN) || !powered(ignore_use_power = TRUE))
- power_off()
+ deactivate_parts()
return PROCESS_KILL
- //use power to operate internal electronics & stuff
- update_mode_power_usage(ACTIVE_POWER_USE, active_power_usage)
-
//===============COMPRESSOR WORKING========//
//Transfer gases from turf to compressor
var/temperature = compressor.compress_gases()
@@ -668,9 +656,9 @@
work_done = max(work_done - compressor.compressor_work * TURBINE_COMPRESSOR_STATOR_INTERACTION_MULTIPLIER - turbine_work, 0)
//calculate final acheived rpm
rpm = ((work_done * compressor.get_efficiency()) ** turbine.get_efficiency()) * get_efficiency() / TURBINE_RPM_CONVERSION
- rpm = FLOOR(min(rpm, max_allowed_rpm), 1)
+ rpm = min(ROUND_UP(rpm), max_allowed_rpm)
//add energy into the grid, also use part of it for turbine operation
- produced_energy = rpm * TURBINE_ENERGY_RECTIFICATION_MULTIPLIER * TURBINE_RPM_CONVERSION
+ produced_energy = rpm * TURBINE_ENERGY_RECTIFICATION_MULTIPLIER * TURBINE_RPM_CONVERSION * seconds_per_tick
add_avail(produced_energy)
/obj/item/paper/guides/jobs/atmos/turbine
@@ -686,3 +674,5 @@
#undef PRESSURE_MAX
#undef MINIMUM_TURBINE_PRESSURE
+#undef EMISSIVE_OVERLAY
+#undef NO_INACTIVE_OVERLAY
diff --git a/code/modules/power/turbine/turbine_computer.dm b/code/modules/power/turbine/turbine_computer.dm
index 2ad777edd6228..7771bda03f8df 100644
--- a/code/modules/power/turbine/turbine_computer.dm
+++ b/code/modules/power/turbine/turbine_computer.dm
@@ -11,19 +11,17 @@
/obj/machinery/computer/turbine_computer/post_machine_initialize()
. = ..()
- locate_machinery()
-/obj/machinery/computer/turbine_computer/locate_machinery(multitool_connection)
if(!mapping_id)
return
for(var/obj/machinery/power/turbine/core_rotor/main as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/power/turbine/core_rotor))
if(main.mapping_id != mapping_id)
continue
register_machine(main)
- return
+ break
-/obj/machinery/computer/turbine_computer/multitool_act(mob/living/user, obj/item/tool)
- var/obj/item/multitool/multitool = tool
+/obj/machinery/computer/turbine_computer/multitool_act(mob/living/user, obj/item/multitool/multitool)
+ . = ITEM_INTERACT_FAILURE
if(!istype(multitool.buffer, /obj/machinery/power/turbine/core_rotor))
to_chat(user, span_notice("Wrong machine type in [multitool] buffer..."))
return
@@ -31,12 +29,21 @@
to_chat(user, span_notice("Changing [src] bluespace network..."))
if(!do_after(user, 0.2 SECONDS, src))
return
+
playsound(get_turf(user), 'sound/machines/click.ogg', 10, TRUE)
register_machine(multitool.buffer)
to_chat(user, span_notice("You link [src] to the console in [multitool]'s buffer."))
- return TRUE
+ return ITEM_INTERACT_SUCCESS
+
+/**
+ * Links the rotor with this computer
+ * Arguments
+ *
+ * * obj/machinery/power/turbine/core_rotor/machine - the machine to link
+ */
+/obj/machinery/computer/turbine_computer/proc/register_machine(obj/machinery/power/turbine/core_rotor/machine)
+ PRIVATE_PROC(TRUE)
-/obj/machinery/computer/turbine_computer/proc/register_machine(machine)
turbine_core = WEAKREF(machine)
/obj/machinery/computer/turbine_computer/ui_interact(mob/user, datum/tgui/ui)
@@ -47,26 +54,27 @@
ui.open()
/obj/machinery/computer/turbine_computer/ui_data(mob/user)
- var/list/data = list()
+ . = list()
+ //do we have the main rotor with all parts connected
var/obj/machinery/power/turbine/core_rotor/main_control = turbine_core?.resolve()
- data["connected"] = !!QDELETED(main_control)
- if(!main_control)
+ if(QDELETED(main_control) || !main_control.all_parts_connected)
+ .["connected"] = FALSE
return
+ else
+ .["connected"] = TRUE
- data["active"] = main_control.active
- data["rpm"] = main_control.rpm ? main_control.rpm : 0
- data["power"] = main_control.produced_energy ? main_control.produced_energy : 0
- data["integrity"] = main_control.get_turbine_integrity()
- data["parts_linked"] = main_control.all_parts_connected
- data["parts_ready"] = main_control.all_parts_ready()
+ //operation status
+ .["active"] = main_control.active
+ .["rpm"] = main_control.rpm
+ .["power"] = energy_to_power(main_control.produced_energy)
+ .["integrity"] = main_control.get_turbine_integrity()
- data["max_rpm"] = main_control.max_allowed_rpm
- data["max_temperature"] = main_control.max_allowed_temperature
- data["temp"] = main_control.compressor?.input_turf?.air.temperature || 0
- data["regulator"] = QDELETED(main_control.compressor) ? 0 : main_control.compressor.intake_regulator
-
- return data
+ //running parameters
+ .["max_rpm"] = main_control.max_allowed_rpm
+ .["max_temperature"] = main_control.max_allowed_temperature
+ .["temp"] = main_control.compressor.input_turf?.air.temperature || 0
+ .["regulator"] = main_control.compressor.intake_regulator
/obj/machinery/computer/turbine_computer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
@@ -76,19 +84,35 @@
switch(action)
if("toggle_power")
var/obj/machinery/power/turbine/core_rotor/main_control = turbine_core?.resolve()
- if(!main_control || !main_control.all_parts_connected || main_control.rpm > 1000)
- return TRUE
- if(!main_control.activate_parts(usr, check_only = TRUE))
- return TRUE
+ if(!main_control)
+ return FALSE
+
+ if(!main_control.active) //turning on the machine requires all part to be linked
+ if(!main_control.activate_parts(ui.user, check_only = TRUE))
+ return FALSE
+ else if(main_control.rpm > 1000) //turning off requires rpm to be less than 1000
+ return FALSE
+
main_control.toggle_power()
main_control.rpm = 0
main_control.produced_energy = 0
- . = TRUE
+ return TRUE
+
if("regulate")
- var/intake_size = text2num(params["regulate"])
+ var/intake_size = params["regulate"]
+ if(isnull(intake_size))
+ return FALSE
+
+ intake_size = text2num(intake_size)
+ if(isnull(intake_size))
+ return FALSE
+
var/obj/machinery/power/turbine/core_rotor/main_control = turbine_core?.resolve()
- if(intake_size == null || !main_control)
- return
- if(!QDELETED(main_control.compressor))
- main_control.compressor.intake_regulator = clamp(intake_size, 0.01, 1)
- . = TRUE
+ if(!main_control)
+ return FALSE
+
+ if(QDELETED(main_control.compressor))
+ return FALSE
+
+ main_control.compressor.intake_regulator = clamp(intake_size, 0.01, 1)
+ return TRUE
diff --git a/code/modules/power/turbine/turbine_parts.dm b/code/modules/power/turbine/turbine_parts.dm
index 4215fccf39fe0..e568f9e096469 100644
--- a/code/modules/power/turbine/turbine_parts.dm
+++ b/code/modules/power/turbine/turbine_parts.dm
@@ -1,3 +1,8 @@
+///String to access turbine part typepath to upgrade
+#define TURBINE_UPGRADE_PART "part"
+///String to access turbine part required amount to upgrade
+#define TURBINE_UPGRADE_AMOUNT "amount"
+
/obj/item/turbine_parts
name = "turbine parts"
desc = "you really should call an admin"
@@ -8,90 +13,62 @@
var/part_efficiency = 0
///Efficiency increase amount for each tier
var/part_efficiency_increase_amount = 0
-
///Current part tier
var/current_tier = TURBINE_PART_TIER_ONE
- ///Max part tier
- var/max_tier = TURBINE_PART_TIER_FOUR
-
- ///Stores the path of the material for the second tier upgrade
- var/obj/item/stack/sheet/second_tier_material = /obj/item/stack/sheet/plasteel
- ///Amount of second tier material for the upgrade
- var/second_tier_material_amount = 10
-
- ///Stores the path of the material for the third tier upgrade
- var/obj/item/stack/sheet/third_tier_material = /obj/item/stack/sheet/mineral/titanium
- ///Amount of third tier material for the upgrade
- var/third_tier_material_amount = 10
-
- ///Stores the path of the material for the fourth tier upgrade
- var/obj/item/stack/sheet/fourth_tier_material = /obj/item/stack/sheet/mineral/metal_hydrogen
- ///Amount of fourth tier material for the upgrade
- var/fourth_tier_material_amount = 5
-
///Max rpm reachable by the part
var/max_rpm = 35000
- ///Multiplier to increase the max rpm per tier, max should be around 500000 rpm
- var/max_rpm_tier_multiplier = 2.5
-
///Max temperature achievable by the part before the turbine starts to take damage
var/max_temperature = 50000
- ///Max temperature exponential value per tier
- var/max_temperature_tier_exponential = 1.2
/obj/item/turbine_parts/examine(mob/user)
. = ..()
- . += "This is a tier [current_tier] turbine part, rated for [max_rpm] rpm and [max_temperature] K."
- var/upgrade_material_name_amount
- switch(current_tier)
- if(TURBINE_PART_TIER_ONE)
- upgrade_material_name_amount = "[second_tier_material_amount] [initial(second_tier_material.name)] sheets"
- if(TURBINE_PART_TIER_TWO)
- upgrade_material_name_amount = "[third_tier_material_amount] [initial(third_tier_material.name)] sheets"
- if(TURBINE_PART_TIER_THREE)
- upgrade_material_name_amount = "[fourth_tier_material_amount] [initial(fourth_tier_material.name)] sheets"
+ . += span_notice("This is a tier [current_tier] turbine part, rated for [max_rpm] rpm and [max_temperature] K.")
- if(upgrade_material_name_amount)
- . += "Can be upgraded with [upgrade_material_name_amount]."
+ var/list/required_parts = get_tier_upgrades()
+ if(length(required_parts))
+ var/obj/item/stack/material = required_parts[TURBINE_UPGRADE_PART]
+ . += span_notice("Can be upgraded with [required_parts[TURBINE_UPGRADE_AMOUNT]] [initial(material.name)] sheets.")
else
- . += "Is already at max tier."
+ . += span_notice("Is already at max tier.")
+
+///Returns a list containing the typepath & amount of it required to upgrade to the next tier
+/obj/item/turbine_parts/proc/get_tier_upgrades()
+ PROTECTED_PROC(TRUE)
+ SHOULD_BE_PURE(TRUE)
+ RETURN_TYPE(/list)
-/obj/item/turbine_parts/attackby(obj/item/attacking_item, mob/user, params)
- if(current_tier >= max_tier)
- return FALSE
switch(current_tier)
if(TURBINE_PART_TIER_ONE)
- if(!istype(attacking_item, second_tier_material))
- return
- var/obj/item/stack/sheet/second_tier = attacking_item
- if(do_after(user, 1 SECONDS, src) && second_tier.use(second_tier_material_amount))
- current_tier = 2
- part_efficiency += part_efficiency_increase_amount
- max_rpm *= max_rpm_tier_multiplier
- max_temperature = max_temperature ** max_temperature_tier_exponential
- return TRUE
+ return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/plasteel, TURBINE_UPGRADE_AMOUNT = 10)
if(TURBINE_PART_TIER_TWO)
- if(!istype(attacking_item, third_tier_material))
- return
- var/obj/item/stack/sheet/third_tier = attacking_item
- if(do_after(user, 2 SECONDS, src) && third_tier.use(third_tier_material_amount))
- current_tier = 3
- part_efficiency += part_efficiency_increase_amount
- max_rpm *= max_rpm_tier_multiplier
- max_temperature = max_temperature ** max_temperature_tier_exponential
- return TRUE
+ return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/titanium, TURBINE_UPGRADE_AMOUNT = 10)
if(TURBINE_PART_TIER_THREE)
- if(!istype(attacking_item, fourth_tier_material))
- return
- var/obj/item/stack/sheet/fourth_tier = attacking_item
- if(do_after(user, 3 SECONDS, src) && fourth_tier.use(fourth_tier_material_amount))
- current_tier = 4
- part_efficiency += part_efficiency_increase_amount
- max_rpm *= max_rpm_tier_multiplier
- max_temperature = max_temperature ** max_temperature_tier_exponential
- return TRUE
-
- return ..()
+ return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/metal_hydrogen, TURBINE_UPGRADE_AMOUNT = 5)
+
+/obj/item/turbine_parts/item_interaction(mob/living/user, obj/item/attacking_item, list/modifiers)
+ . = NONE
+
+ var/list/required_parts = get_tier_upgrades()
+ if(!length(required_parts))
+ balloon_alert(user, "already at max tier!")
+ return ITEM_INTERACT_FAILURE
+
+ var/obj/item/stack/sheet/material = attacking_item
+ if(!istype(material, required_parts[TURBINE_UPGRADE_PART]))
+ balloon_alert(user, "incorrect part!")
+ return ITEM_INTERACT_FAILURE
+
+ var/amount = required_parts[TURBINE_UPGRADE_AMOUNT]
+ if(material.amount < amount)
+ balloon_alert(user, "requires [amount] sheets!")
+ return ITEM_INTERACT_FAILURE
+
+ if(do_after(user, current_tier SECONDS, src) && material.use(amount))
+ current_tier += 1
+ part_efficiency += part_efficiency_increase_amount
+ max_rpm *= 2.5
+ max_temperature = max_temperature ** 1.2
+ return ITEM_INTERACT_SUCCESS
/obj/item/turbine_parts/compressor
name = "compressor part"
@@ -113,9 +90,15 @@
icon_state = "stator_part"
part_efficiency = 0.85
part_efficiency_increase_amount = 0.015
- second_tier_material = /obj/item/stack/sheet/mineral/titanium
- third_tier_material = /obj/item/stack/sheet/mineral/metal_hydrogen
- fourth_tier_material = /obj/item/stack/sheet/mineral/zaukerite
- second_tier_material_amount = 15
- third_tier_material_amount = 15
- fourth_tier_material_amount = 10
+
+/obj/item/turbine_parts/stator/get_tier_upgrades()
+ switch(current_tier)
+ if(TURBINE_PART_TIER_ONE)
+ return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/titanium, TURBINE_UPGRADE_AMOUNT = 15)
+ if(TURBINE_PART_TIER_TWO)
+ return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/metal_hydrogen, TURBINE_UPGRADE_AMOUNT = 15)
+ if(TURBINE_PART_TIER_THREE)
+ return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/zaukerite, TURBINE_UPGRADE_AMOUNT = 10)
+
+#undef TURBINE_UPGRADE_PART
+#undef TURBINE_UPGRADE_AMOUNT
diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm
index b15cd334a8e6d..25973e92e7a3a 100644
--- a/code/modules/projectiles/ammunition/_firing.dm
+++ b/code/modules/projectiles/ammunition/_firing.dm
@@ -61,6 +61,8 @@
loaded_projectile.damage *= gun.projectile_damage_multiplier * integrity_mult
loaded_projectile.stamina *= gun.projectile_damage_multiplier * integrity_mult
+ loaded_projectile.speed *= gun.projectile_speed_multiplier * integrity_mult
+
loaded_projectile.wound_bonus += gun.projectile_wound_bonus
loaded_projectile.wound_bonus *= loaded_projectile.wound_bonus >= 0 ? 1 : 2 - integrity_mult
loaded_projectile.bare_wound_bonus += gun.projectile_wound_bonus
@@ -83,12 +85,12 @@
if(loaded_projectile.firer)
firing_dir = get_dir(fired_from, target)
if(!loaded_projectile.suppressed && firing_effect_type && !tk_firing(user, fired_from))
- new firing_effect_type(get_turf(src), firing_dir)
+ new firing_effect_type(user || get_turf(src), firing_dir)
var/direct_target
if(target && curloc.Adjacent(targloc, target=targloc, mover=src)) //if the target is right on our location or adjacent (including diagonally if reachable) we'll skip the travelling code in the proj's fire()
direct_target = target
- loaded_projectile.preparePixelProjectile(target, fired_from, params2list(params), spread)
+ loaded_projectile.aim_projectile(target, fired_from, params2list(params), spread)
var/obj/projectile/loaded_projectile_cache = loaded_projectile
loaded_projectile = null
loaded_projectile_cache.fire(null, direct_target)
diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm
index 811b4309f5258..6e0c26af7359c 100644
--- a/code/modules/projectiles/ammunition/ballistic/revolver.dm
+++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm
@@ -1,26 +1,26 @@
// .357 (Syndie Revolver)
-/obj/item/ammo_casing/a357
+/obj/item/ammo_casing/c357
name = ".357 bullet casing"
desc = "A .357 bullet casing."
caliber = CALIBER_357
- projectile_type = /obj/projectile/bullet/a357
+ projectile_type = /obj/projectile/bullet/c357
-/obj/item/ammo_casing/a357/spent
+/obj/item/ammo_casing/c357/spent
projectile_type = null
-/obj/item/ammo_casing/a357/match
+/obj/item/ammo_casing/c357/match
name = ".357 match bullet casing"
desc = "A .357 bullet casing, manufactured to exceedingly high standards."
- projectile_type = /obj/projectile/bullet/a357/match
+ projectile_type = /obj/projectile/bullet/c357/match
-/obj/item/ammo_casing/a357/phasic
+/obj/item/ammo_casing/c357/phasic
name = ".357 phasic bullet casing"
- projectile_type = /obj/projectile/bullet/a357/phasic
+ projectile_type = /obj/projectile/bullet/c357/phasic
-/obj/item/ammo_casing/a357/heartseeker
+/obj/item/ammo_casing/c357/heartseeker
name = ".357 heartseeker bullet casing"
- projectile_type = /obj/projectile/bullet/a357/heartseeker
+ projectile_type = /obj/projectile/bullet/c357/heartseeker
// 7.62x38mmR (Nagant Revolver)
@@ -53,6 +53,11 @@
desc = "A .38 rubber bullet casing, manufactured to exceedingly bouncy standards."
projectile_type = /obj/projectile/bullet/c38/match/bouncy
+/obj/item/ammo_casing/c38/match/true
+ name = ".38 True Strike bullet casing"
+ desc = "A .38 True Strike bullet casing."
+ projectile_type = /obj/projectile/bullet/c38/match/true
+
/obj/item/ammo_casing/c38/dumdum
name = ".38 DumDum bullet casing"
desc = "A .38 DumDum bullet casing."
@@ -67,3 +72,35 @@
name = ".38 Iceblox bullet casing"
desc = "A .38 Iceblox bullet casing."
projectile_type = /obj/projectile/bullet/c38/iceblox
+
+//gatfruit
+/obj/item/ammo_casing/pea
+ name = "pea bullet casing"
+ desc = "A bizarre pea bullet."
+ caliber = CALIBER_PEA
+ icon_state = "pea"
+ projectile_type = /obj/projectile/bullet/pea
+ /// Damage we achieve at 100 potency
+ var/max_damage = 15
+ /// Damage set by the plant
+ var/damage = 15 //max potency, is set
+
+/obj/item/ammo_casing/pea/Initialize(mapload)
+ . = ..()
+ create_reagents(60, SEALED_CONTAINER)
+
+/obj/item/ammo_casing/pea/ready_proj(atom/target, mob/living/user, quiet, zone_override, atom/fired_from)
+ . = ..()
+ if(isnull(loaded_projectile))
+ return
+ loaded_projectile.damage = damage
+
+/obj/item/ammo_casing/pea/attack_self(mob/user)
+ . = ..()
+ if(isnull(loaded_projectile))
+ return
+ var/obj/item/food/grown/peas/peas = new(user.drop_location())
+ user.put_in_hands(peas)
+ to_chat(user, span_notice("You separate [peas] from [src]."))
+ loaded_projectile = null
+ update_appearance()
diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
index bbd89389eb809..b664be74e87f3 100644
--- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
+++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
@@ -2,7 +2,7 @@
name = "speed loader (.357)"
desc = "Designed to quickly reload revolvers."
icon_state = "357"
- ammo_type = /obj/item/ammo_casing/a357
+ ammo_type = /obj/item/ammo_casing/c357
max_ammo = 7
caliber = CALIBER_357
multiple_sprites = AMMO_BOX_PER_BULLET
@@ -13,13 +13,13 @@
/obj/item/ammo_box/a357/match
name = "speed loader (.357 Match)"
desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with."
- ammo_type = /obj/item/ammo_casing/a357/match
+ ammo_type = /obj/item/ammo_casing/c357/match
ammo_band_color = "#77828a"
/obj/item/ammo_box/a357/phasic
name = "speed loader (.357 Phasic)"
desc = "Designed to quickly reload revolvers. Holds phasic ammo, also known as 'Ghost Lead', allowing it to pass through non-organic material."
- ammo_type = /obj/item/ammo_casing/a357/phasic
+ ammo_type = /obj/item/ammo_casing/c357/phasic
ammo_band_color = "#693a6a"
/obj/item/ammo_box/a357/heartseeker
@@ -27,7 +27,7 @@
desc = "Designed to quickly reload revolvers. Holds heartseeker ammo, which veers into targets with exceptional precision using \
an unknown method. It apparently predicts movement using neural pulses in the brain, but that's less marketable. \
As seen in the hit NTFlik horror-space western film, Forget-Me-Not! Brought to you by Roseus Galactic!"
- ammo_type = /obj/item/ammo_casing/a357/heartseeker
+ ammo_type = /obj/item/ammo_casing/c357/heartseeker
ammo_band_color = "#a91e1e"
/obj/item/ammo_box/c38
@@ -60,6 +60,12 @@
ammo_type = /obj/item/ammo_casing/c38/match/bouncy
ammo_band_color = "#556696"
+/obj/item/ammo_box/c38/true
+ name = "speed loader (.38 True Strike)"
+ desc = "Designed to quickly reload revolvers. Bullets bounce towards new targets with surprising accuracy."
+ ammo_type = /obj/item/ammo_casing/c38/match/true
+ ammo_band_color = "#d647b0"
+
/obj/item/ammo_box/c38/dumdum
name = "speed loader (.38 DumDum)"
desc = "Designed to quickly reload revolvers. These rounds expand on impact, allowing them to shred the target and cause massive bleeding. Very weak against armor and distant targets."
diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm
index 882fefedec111..96916fe9bb5ad 100644
--- a/code/modules/projectiles/boxes_magazines/external/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm
@@ -21,3 +21,66 @@
/obj/item/ammo_box/magazine/m223/phasic
name = "toploader magazine (.223 Phasic)"
ammo_type = /obj/item/ammo_casing/a223/phasic
+
+// .38 (Battle Rifle) //
+
+/obj/item/ammo_box/magazine/m38
+ name = "battle rifle magazine (.38)"
+ desc = "A magazine for a BR-38 battle rifle."
+ icon_state = "38mag"
+ base_icon_state = "38mag"
+ w_class = WEIGHT_CLASS_NORMAL
+ ammo_type = /obj/item/ammo_casing/c38
+ caliber = CALIBER_38
+ max_ammo = 15
+ ammo_band_icon = "+38mag_ammo_band"
+ ammo_band_color = null
+
+/obj/item/ammo_box/magazine/m38/update_icon_state()
+ . = ..()
+ icon_state = "[base_icon_state][ammo_count() ? "-ammo" : ""]"
+
+/obj/item/ammo_box/magazine/m38/empty
+ start_empty = TRUE
+
+/obj/item/ammo_box/magazine/m38/trac
+ name = "battle rifle magazine (.38 TRAC)"
+ desc = "A magazine for a BR-38 battle rifle. TRAC bullets embed a tracking implant within the target's body and are entirely nonlethal."
+ ammo_type = /obj/item/ammo_casing/c38/trac
+ ammo_band_color = "#7b6383"
+
+/obj/item/ammo_box/magazine/m38/match
+ name = "battle rifle magazine (.38 Match)"
+ desc = "A magazine for a BR-38 battle rifle. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with."
+ ammo_type = /obj/item/ammo_casing/c38/match
+ ammo_band_color = "#7b6383"
+
+/obj/item/ammo_box/magazine/m38/match/bouncy
+ name = "battle rifle magazine (.38 Rubber)"
+ desc = "A magazine for a BR-38 battle rifle. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with."
+ ammo_type = /obj/item/ammo_casing/c38/match/bouncy
+ ammo_band_color = "#556696"
+
+/obj/item/ammo_box/magazine/m38/true
+ name = "battle rifle magazine (.38 True Strike)"
+ desc = "A magazine for a BR-38 battle rifle. Bullets bounce towards new targets with surprising accuracy."
+ ammo_type = /obj/item/ammo_casing/c38/match/true
+ ammo_band_color = "#d647b0"
+
+/obj/item/ammo_box/magazine/m38/dumdum
+ name = "battle rifle magazine (.38 DumDum)"
+ desc = "A magazine for a BR-38 battle rifle. These rounds expand on impact, allowing them to shred the target and cause massive bleeding. Very weak against armor and distant targets."
+ ammo_type = /obj/item/ammo_casing/c38/dumdum
+ ammo_band_color = "#969578"
+
+/obj/item/ammo_box/magazine/m38/hotshot
+ name = "battle rifle magazine (.38 Hot Shot)"
+ desc = "A magazine for a BR-38 battle rifle. Hot Shot bullets contain an incendiary payload."
+ ammo_type = /obj/item/ammo_casing/c38/hotshot
+ ammo_band_color = "#805a57"
+
+/obj/item/ammo_box/magazine/m38/iceblox
+ name = "battle rifle magazine (.38 Iceblox)"
+ desc = "A magazine for a BR-38 battle rifle. Iceblox bullets contain a cryogenic payload."
+ ammo_type = /obj/item/ammo_casing/c38/iceblox
+ ammo_band_color = "#658e94"
diff --git a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm
index 28df0262352d1..7f467881a9d61 100644
--- a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm
@@ -1,6 +1,6 @@
/obj/item/ammo_box/magazine/internal/cylinder
name = "revolver cylinder"
- ammo_type = /obj/item/ammo_casing/a357
+ ammo_type = /obj/item/ammo_casing/c357
caliber = CALIBER_357
max_ammo = 7
diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm
index e74a192d6900f..1e891abeef280 100644
--- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm
@@ -12,7 +12,7 @@
/obj/item/ammo_box/magazine/internal/cylinder/rus357
name = "\improper Russian revolver cylinder"
- ammo_type = /obj/item/ammo_casing/a357
+ ammo_type = /obj/item/ammo_casing/c357
caliber = CALIBER_357
max_ammo = 6
multiload = FALSE
@@ -21,5 +21,11 @@
/obj/item/ammo_box/magazine/internal/cylinder/rus357/Initialize(mapload)
. = ..()
for (var/i in 1 to max_ammo - 1)
- stored_ammo += new /obj/item/ammo_casing/a357/spent(src)
- stored_ammo += new /obj/item/ammo_casing/a357(src)
+ stored_ammo += new /obj/item/ammo_casing/c357/spent(src)
+ stored_ammo += new /obj/item/ammo_casing/c357(src)
+
+/obj/item/ammo_box/magazine/internal/cylinder/peashooter
+ name = "peashooter cylinder"
+ ammo_type = /obj/item/ammo_casing/pea
+ caliber = CALIBER_PEA
+ max_ammo = 7
diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm
index b1f761831ee62..fb44ee41d9d15 100644
--- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm
@@ -54,11 +54,11 @@
/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force
name = "two round magazine"
max_ammo = 2
- caliber = CALIBER_REBAR_FORCED
+ caliber = CALIBER_REBAR
ammo_type = /obj/item/ammo_casing/rebar
/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie
max_ammo = 3
- caliber = CALIBER_REBAR_SYNDIE
+ caliber = CALIBER_REBAR
ammo_type = /obj/item/ammo_casing/rebar/syndie
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index d3b0782036b2b..76cf2d1811302 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -54,6 +54,10 @@
/// Even snowflakier way to modify projectile wounding bonus/potential for projectiles fired from this gun.
var/projectile_wound_bonus = 0
+ /// The most reasonable way to modify projectile speed values for projectile fired from this gun. Honest.
+ /// Lower values are better, higher values are worse.
+ var/projectile_speed_multiplier = 1
+
var/spread = 0 //Spread induced by the gun itself.
var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once.
@@ -74,8 +78,9 @@
/obj/item/gun/Initialize(mapload)
. = ..()
- if(pin)
- pin = new pin(src)
+ if(ispath(pin))
+ pin = new pin
+ pin.gun_insert(new_gun = src)
add_seclight_point()
add_bayonet_point()
@@ -597,7 +602,8 @@
/obj/item/gun/proc/unlock() //used in summon guns and as a convience for admins
if(pin)
qdel(pin)
- pin = new /obj/item/firing_pin
+ var/obj/item/firing_pin/new_pin = new
+ new_pin.gun_insert(new_gun = src)
//Happens before the actual projectile creation
/obj/item/gun/proc/before_firing(atom/target,mob/user)
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 1c158cf4a87da..89c6deaa4d2d8 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -352,3 +352,196 @@
actions_types = list()
fire_sound = 'sound/items/weapons/laser.ogg'
casing_ejector = FALSE
+
+// NT Battle Rifle //
+
+/obj/item/gun/ballistic/automatic/battle_rifle
+ name = "\improper NT BR-38 battle rifle"
+ desc = "Nanotrasen's prototype security weapon, found exclusively in the hands of their private security teams. Chambered in .38 pistol rounds. \
+ Ignore that this makes it technically a carbine. And that it functions as a designated marksman rifle. Marketing weren't being very co-operative \
+ when it came time to name the gun. That, and the endless arguments in board rooms about exactly what designation the gun is meant to be."
+ icon = 'icons/obj/weapons/guns/wide_guns.dmi'
+ icon_state = "battle_rifle"
+ inhand_icon_state = "battle_rifle"
+ base_icon_state = "battle_rifle"
+ worn_icon = 'icons/mob/clothing/back.dmi'
+ worn_icon_state = "battle_rifle"
+ slot_flags = ITEM_SLOT_BACK
+
+ weapon_weight = WEAPON_HEAVY
+ accepted_magazine_type = /obj/item/ammo_box/magazine/m38
+ w_class = WEIGHT_CLASS_BULKY
+ force = 15 //this thing is kind of oversized, okay?
+ mag_display = TRUE
+ projectile_damage_multiplier = 1.2
+ projectile_speed_multiplier = 1.2
+ fire_delay = 2
+ burst_size = 1
+ actions_types = list()
+ spread = 10 //slightly inaccurate in burst fire mode, mostly important for long range shooting
+ fire_sound = 'sound/items/weapons/thermalpistol.ogg'
+ suppressor_x_offset = 8
+
+ /// Determines how many shots we can make before the weapon needs to be maintained.
+ var/shots_before_degradation = 10
+ /// The max number of allowed shots this gun can have before degradation.
+ var/max_shots_before_degradation = 10
+ /// Determines the degradation stage. The higher the value, the more poorly the weapon performs.
+ var/degradation_stage = 0
+ /// Maximum degradation stage.
+ var/degradation_stage_max = 5
+ /// The probability of degradation increasing per shot.
+ var/degradation_probability = 10
+ /// The maximum speed malus for projectile flight speed. Projectiles probably shouldn't move too slowly or else they will start to cause problems.
+ var/maximum_speed_malus = 0.7
+ /// What is our damage multiplier if the gun is emagged?
+ var/emagged_projectile_damage_multiplier = 1.6
+
+ /// Whether or not our gun is suffering an EMP related malfunction.
+ var/emp_malfunction = FALSE
+
+ /// Our timer for when our gun is suffering an extreme malfunction. AKA it is going to explode
+ var/explosion_timer
+
+ SET_BASE_PIXEL(-8, 0)
+
+/obj/item/gun/ballistic/automatic/battle_rifle/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/scope, range_modifier = 2)
+ register_context()
+
+/obj/item/gun/ballistic/automatic/battle_rifle/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+
+ if(held_item?.tool_behaviour == TOOL_MULTITOOL && shots_before_degradation < max_shots_before_degradation)
+ context[SCREENTIP_CONTEXT_LMB] = "Reset System"
+ return CONTEXTUAL_SCREENTIP_SET
+
+/obj/item/gun/ballistic/automatic/battle_rifle/examine_more(mob/user)
+ . = ..()
+ . += span_notice("Looking down at the [name], you recall something you read in a promotional pamphlet... ")
+
+ . += span_info("The BR-38 possesses an acceleration rail that launches bullets at higher than typical velocity.\
+ This allows even less powerful cartridges to put out significant amounts of stopping power.")
+
+ . += span_notice("However, you also remember some of the rumors... ")
+
+ . += span_notice("In a sour twist of irony for Nanotrasen's historical issues with ballistics-based security weapons, the BR-38 has one significant flaw. \
+ It is possible for the weapon to suffer from unintended discombulations due to closed heat distribution systems should the weapon be tampered with. \
+ R&D are working on this issue before the weapon sees commercial sales. That, and trying to work out why the weapon's onboard computation systems suffer \
+ from so many calculation errors.")
+
+/obj/item/gun/ballistic/automatic/battle_rifle/examine(mob/user)
+ . = ..()
+ if(shots_before_degradation)
+ . += span_notice("[src] can fire [shots_before_degradation] more times before risking system degradation.")
+ else
+ . += span_notice("[src] is in the process of system degradation. It is currently at stage [degradation_stage] of [degradation_stage_max]. Use a multitool on [src] to recalibrate. Alternatively, insert it into a weapon recharger.")
+
+/obj/item/gun/ballistic/automatic/battle_rifle/update_icon_state()
+ . = ..()
+ if(!shots_before_degradation)
+ inhand_icon_state = "[base_icon_state]-empty"
+ else
+ inhand_icon_state = "[base_icon_state]"
+
+/obj/item/gun/ballistic/automatic/battle_rifle/update_overlays()
+ . = ..()
+ if(degradation_stage)
+ . += "[base_icon_state]_empty"
+ else if(shots_before_degradation)
+ var/ratio_for_overlay = CEILING(clamp(shots_before_degradation / max_shots_before_degradation, 0, 1) * 3, 1)
+ . += "[icon_state]_stage_[ratio_for_overlay]"
+
+/obj/item/gun/ballistic/automatic/battle_rifle/emp_act(severity)
+ . = ..()
+ if (!(. & EMP_PROTECT_SELF) && prob(50 / severity))
+ shots_before_degradation = 0
+ emp_malfunction = TRUE
+ attempt_degradation(TRUE)
+
+/obj/item/gun/ballistic/automatic/battle_rifle/emag_act(mob/user, obj/item/card/emag/emag_card)
+ . = ..()
+ if(obj_flags & EMAGGED)
+ return FALSE
+ obj_flags |= EMAGGED
+ projectile_damage_multiplier = emagged_projectile_damage_multiplier
+ balloon_alert(user, "heat distribution systems deactivated")
+ return TRUE
+
+/obj/item/gun/ballistic/automatic/battle_rifle/multitool_act(mob/living/user, obj/item/tool)
+ if(!tool.use_tool(src, user, 20 SECONDS, volume = 50))
+ balloon_alert(user, "interrupted!")
+ return ITEM_INTERACT_BLOCKING
+
+ emp_malfunction = FALSE
+ shots_before_degradation = initial(shots_before_degradation)
+ degradation_stage = initial(degradation_stage)
+ projectile_speed_multiplier = initial(projectile_speed_multiplier)
+ fire_delay = initial(fire_delay)
+ update_appearance()
+ balloon_alert(user, "system reset")
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/gun/ballistic/automatic/battle_rifle/try_fire_gun(atom/target, mob/living/user, params)
+ . = ..()
+ if(!chambered || (chambered && !chambered.loaded_projectile))
+ return
+
+ if(shots_before_degradation)
+ shots_before_degradation --
+ return
+
+ else if ((obj_flags & EMAGGED) && degradation_stage == degradation_stage_max && !explosion_timer)
+ perform_extreme_malfunction(user)
+
+ else
+ attempt_degradation(FALSE)
+
+
+/obj/item/gun/ballistic/automatic/battle_rifle/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0)
+ if(chambered.loaded_projectile && prob(75) && (emp_malfunction || degradation_stage == degradation_stage_max))
+ balloon_alert_to_viewers("*click*")
+ playsound(src, dry_fire_sound, dry_fire_sound_volume, TRUE)
+ return
+
+ return ..()
+
+/// Proc to handle weapon degradation. Called when attempting to fire or immediately after an EMP takes place.
+/obj/item/gun/ballistic/automatic/battle_rifle/proc/attempt_degradation(force_increment = FALSE)
+ if(!prob(degradation_probability) && !force_increment || degradation_stage == degradation_stage_max)
+ return //Only update if we actually increment our degradation stage
+
+ degradation_stage = clamp(degradation_stage + (obj_flags & EMAGGED ? 2 : 1), 0, degradation_stage_max)
+ projectile_speed_multiplier = clamp(initial(projectile_speed_multiplier) + degradation_stage * 0.1, initial(projectile_speed_multiplier), maximum_speed_malus)
+ fire_delay = initial(fire_delay) + (degradation_stage * 0.5)
+ do_sparks(1, TRUE, src)
+ update_appearance()
+
+/// Called by /obj/machinery/recharger while inserted: attempts to recalibrate our gun but reducing degradation.
+/obj/item/gun/ballistic/automatic/battle_rifle/proc/attempt_recalibration(restoring_shots_before_degradation = FALSE, recharge_rate = 1)
+ emp_malfunction = FALSE
+
+ if(restoring_shots_before_degradation)
+ shots_before_degradation = clamp(round(shots_before_degradation + recharge_rate, 1), 0, max_shots_before_degradation)
+
+ else
+ degradation_stage = clamp(degradation_stage - 1, 0, degradation_stage_max)
+ if(degradation_stage)
+ projectile_speed_multiplier = clamp(initial(projectile_speed_multiplier) - degradation_stage * 0.1, maximum_speed_malus, initial(projectile_speed_multiplier))
+ fire_delay = initial(fire_delay) + (degradation_stage * 0.5)
+ else
+ projectile_speed_multiplier = initial(projectile_speed_multiplier)
+ fire_delay = initial(fire_delay)
+
+ update_appearance()
+
+/// Proc to handle the countdown for our detonation
+/obj/item/gun/ballistic/automatic/battle_rifle/proc/perform_extreme_malfunction(mob/living/user)
+ balloon_alert(user, "gun is exploding, throw it!")
+ explosion_timer = addtimer(CALLBACK(src, PROC_REF(fucking_explodes_you)), 5 SECONDS, (TIMER_UNIQUE|TIMER_OVERRIDE))
+ playsound(src, 'sound/items/weapons/gun/general/empty_alarm.ogg', 50, FALSE)
+
+/// proc to handle our detonation
+/obj/item/gun/ballistic/automatic/battle_rifle/proc/fucking_explodes_you()
+ explosion(src, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 6, explosion_cause = src)
diff --git a/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm b/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm
index d7a24c9deba47..41152b170ad3b 100644
--- a/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm
+++ b/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm
@@ -60,7 +60,7 @@
desc = "Quite the sticky situation..."
icon_state = "sticky_arrow_projectile"
damage = 30
- speed = 0.75
+ speed = 1.3
range = 20
embed_type = /datum/embed_data/arrow/sticky
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index bb589bc011a14..6fe97628fb072 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -318,3 +318,9 @@
clumsy_check = FALSE
icon_state = "mateba"
+/obj/item/gun/ballistic/revolver/peashooter
+ name = "peashooter"
+ icon_state = "peashooter"
+ desc = "A wild plantlife mutation that shoots hardened peas. Incredible."
+ fire_sound = 'sound/items/weapons/peashoot.ogg'
+ accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder/peashooter
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 7e174b544ea29..d542f2299148c 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -225,7 +225,7 @@
update_appearance()
/obj/projectile/kinetic/on_range()
- strike_thing()
+ strike_thing(loc)
..()
/obj/projectile/kinetic/on_hit(atom/target, blocked = 0, pierce_hit)
@@ -258,6 +258,17 @@
//mecha_kineticgun version of the projectile
/obj/projectile/kinetic/mech
range = 5
+ damage = 80
+
+/obj/projectile/kinetic/mech/strike_thing(atom/target)
+ . = ..()
+ new /obj/effect/temp_visual/explosion/fast(target)
+ for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(1, target) - target)
+ mineral_turf.gets_drilled(firer, TRUE)
+ for(var/mob/living/living_mob in range(1, target) - firer - target)
+ var/armor = living_mob.run_armor_check(def_zone, armor_flag, armour_penetration = armour_penetration)
+ living_mob.apply_damage(damage, damage_type, def_zone, armor)
+ to_chat(living_mob, span_userdanger("You're struck by a [name]!"))
//Modkits
/obj/item/borg/upgrade/modkit
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 9c69a718986e4..b1a34c30eb936 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -151,11 +151,11 @@
var/size_per_tile = 0.1
var/max_scale = 4
-/obj/projectile/beam/laser/accelerator/Range()
+/obj/projectile/beam/laser/accelerator/reduce_range()
..()
damage += 7
- transform = 0
- transform *= min(1 + (decayedRange - range) * size_per_tile, max_scale)
+ transform = matrix()
+ transform *= min(1 + (maximum_range - range) * size_per_tile, max_scale)
///X-ray gun
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 8072f62e46458..0cd4148e70996 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -431,7 +431,7 @@
playsound(user.loc, 'sound/effects/coin2.ogg', 50, TRUE)
user.visible_message(span_warning("[user] flips a coin towards [target]!"), span_danger("You flip a coin towards [target]!"))
var/obj/projectile/bullet/coin/new_coin = new(get_turf(user), target_turf, user)
- new_coin.preparePixelProjectile(target_turf, user)
+ new_coin.aim_projectile(target_turf, user)
new_coin.fire()
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/projectiles/guns/special/blastcannon.dm b/code/modules/projectiles/guns/special/blastcannon.dm
index a7c35c9122ec2..80bf245aa3305 100644
--- a/code/modules/projectiles/guns/special/blastcannon.dm
+++ b/code/modules/projectiles/guns/special/blastcannon.dm
@@ -49,8 +49,6 @@
/obj/item/gun/blastcannon/Initialize(mapload)
. = ..()
- if(!pin)
- pin = new
RegisterSignal(src, COMSIG_ATOM_INTERNAL_EXPLOSION, PROC_REF(channel_blastwave))
AddElement(/datum/element/update_icon_updates_onmob)
@@ -193,7 +191,7 @@
SSexplosions.shake_the_room(start_turf, max(heavy, medium, light, 0), (capped_heavy * 15) + (capped_medium * 20), capped_heavy, capped_medium)
var/obj/projectile/blastwave/blastwave = new(loc, heavy, medium, light)
- blastwave.preparePixelProjectile(target, start_turf, params2list(modifiers), spread)
+ blastwave.aim_projectile(target, start_turf, params2list(modifiers), spread)
blastwave.fire()
cached_firer = null
cached_target = null
@@ -314,7 +312,7 @@
/obj/projectile/blastwave/is_hostile_projectile()
return TRUE
-/obj/projectile/blastwave/Range()
+/obj/projectile/blastwave/reduce_range()
. = ..()
if(QDELETED(src))
return
diff --git a/code/modules/projectiles/guns/special/medbeam.dm b/code/modules/projectiles/guns/special/medbeam.dm
index 0ad5caf2fec82..95da571baf547 100644
--- a/code/modules/projectiles/guns/special/medbeam.dm
+++ b/code/modules/projectiles/guns/special/medbeam.dm
@@ -83,56 +83,26 @@
last_check = world.time
- if(!los_check(loc, current_target))
+ if(!los_check(loc, current_target, mid_check = CALLBACK(src, PROC_REF(mid_los_check))))
QDEL_NULL(current_beam)//this will give the target lost message
return
if(current_target)
on_beam_tick(current_target)
-/obj/item/gun/medbeam/proc/los_check(atom/movable/user, mob/target)
- var/turf/user_turf = user.loc
- if(mounted)
- user_turf = get_turf(user)
- else if(!istype(user_turf))
- return FALSE
- var/obj/dummy = new(user_turf)
- dummy.pass_flags |= PASSTABLE|PASSGLASS|PASSGRILLE //Grille/Glass so it can be used through common windows
- var/turf/previous_step = user_turf
- var/first_step = TRUE
- for(var/turf/next_step as anything in (get_line(user_turf, target) - user_turf))
- if(first_step)
- for(var/obj/blocker in user_turf)
- if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1))
- continue
- if(blocker.CanPass(dummy, get_dir(user_turf, next_step)))
- continue
- return FALSE // Could not leave the first turf.
- first_step = FALSE
- if(mounted && next_step == user_turf)
-
- continue //Mechs are dense and thus fail the check
- if(next_step.density)
+/obj/item/gun/medbeam/proc/mid_los_check(atom/movable/user, mob/target, pass_args = PASSTABLE|PASSGLASS|PASSGRILLE, turf/next_step, obj/dummy)
+ for(var/obj/effect/ebeam/medical/B in next_step)// Don't cross the str-beams!
+ if(QDELETED(current_beam))
+ break //We shouldn't be processing anymore.
+ if(QDELETED(B))
+ continue
+ if(!B.owner)
+ stack_trace("beam without an owner! [B]")
+ continue
+ if(B.owner.origin != current_beam.origin)
+ explosion(B.loc, heavy_impact_range = 3, light_impact_range = 5, flash_range = 8, explosion_cause = src)
qdel(dummy)
return FALSE
- for(var/atom/movable/movable as anything in next_step)
- if(!movable.CanPass(dummy, get_dir(next_step, previous_step)))
- qdel(dummy)
- return FALSE
- for(var/obj/effect/ebeam/medical/B in next_step)// Don't cross the str-beams!
- if(QDELETED(current_beam))
- break //We shouldn't be processing anymore.
- if(QDELETED(B))
- continue
- if(!B.owner)
- stack_trace("beam without an owner! [B]")
- continue
- if(B.owner.origin != current_beam.origin)
- explosion(B.loc, heavy_impact_range = 3, light_impact_range = 5, flash_range = 8, explosion_cause = src)
- qdel(dummy)
- return FALSE
- previous_step = next_step
- qdel(dummy)
return TRUE
/obj/item/gun/medbeam/proc/on_beam_hit(mob/living/target)
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index 7ee44a10e7d83..46345e769e4bd 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -20,11 +20,6 @@
var/pin_removable = TRUE
var/obj/item/gun/gun
-/obj/item/firing_pin/New(newloc)
- ..()
- if(isgun(newloc))
- gun = newloc
-
/obj/item/firing_pin/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isgun(interacting_with))
return NONE
@@ -58,8 +53,8 @@
balloon_alert(user, "authentication checks overridden")
return TRUE
-/obj/item/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/G)
- gun = G
+/obj/item/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/new_gun)
+ gun = new_gun
forceMove(gun)
gun.pin = src
return TRUE
@@ -165,9 +160,9 @@
return TRUE //The clown op leader antag datum isn't a subtype of the normal clown op antag datum.
return FALSE
-/obj/item/firing_pin/clown/ultra/gun_insert(mob/living/user, obj/item/gun/G)
+/obj/item/firing_pin/clown/ultra/gun_insert(mob/living/user, obj/item/gun/new_gun)
..()
- G.clumsy_check = FALSE
+ new_gun.clumsy_check = FALSE
/obj/item/firing_pin/clown/ultra/gun_remove(mob/living/user)
gun.clumsy_check = initial(gun.clumsy_check)
@@ -244,14 +239,15 @@
if(pin_owner)
. += span_notice("This firing pin is currently authorized to pay into the account of [pin_owner.account_holder].")
-/obj/item/firing_pin/paywall/gun_insert(mob/living/user, obj/item/gun/G)
+/obj/item/firing_pin/paywall/gun_insert(mob/living/user, obj/item/gun/new_gun)
if(!pin_owner)
- to_chat(user, span_warning("ERROR: Please swipe valid identification card before installing firing pin!"))
- user.put_in_hands(src)
+ if(isnull(user))
+ forceMove(new_gun.drop_location())
+ else
+ to_chat(user, span_warning("ERROR: Please swipe valid identification card before installing firing pin!"))
+ user.put_in_hands(src)
return FALSE
- gun = G
- forceMove(gun)
- gun.pin = src
+ ..()
if(multi_payment)
gun.desc += span_notice(" This [gun.name] has a per-shot cost of [payment_amount] credit[( payment_amount > 1 ) ? "s" : ""].")
return TRUE
@@ -260,7 +256,7 @@
/obj/item/firing_pin/paywall/gun_remove(mob/living/user)
- gun.desc = initial(desc)
+ gun.desc = gun::desc
..()
/obj/item/firing_pin/paywall/attackby(obj/item/M, mob/living/user, params)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 0b03f41293142..1a21ac4f82d89 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -1,7 +1,8 @@
-#define MOVES_HITSCAN -1 //Not actually hitscan but close as we get without actual hitscan.
-#define MUZZLE_EFFECT_PIXEL_INCREMENT 17 //How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers.
-#define MAX_RANGE_HIT_PRONE_TARGETS 10 //How far do the projectile hits the prone mob
+/// Not actually hitscan but close as we get without actual hitscan.
+#define MOVES_HITSCAN -1
+/// How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers.
+#define MUZZLE_EFFECT_PIXEL_INCREMENT 17
/obj/projectile
name = "projectile"
@@ -15,30 +16,56 @@
generic_canpass = FALSE
blocks_emissive = EMISSIVE_BLOCK_GENERIC
layer = MOB_LAYER
- //The sound this plays on impact.
+ /// The sound this plays on impact.
var/hitsound = 'sound/items/weapons/pierce.ogg'
- var/hitsound_wall = ""
+ /// Sound played when the projectile hits a wall
+ var/hitsound_wall
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
- var/def_zone = "" //Aiming at
- var/atom/movable/firer = null//Who shot it
- var/datum/fired_from = null // the thing that the projectile was fired from (gun, turret, spell)
- var/suppressed = FALSE //Attack message
- var/yo = null
- var/xo = null
- var/atom/original = null // the original target clicked
- var/turf/starting = null // the projectile's starting turf
+ /// Zone at which the projectile is aimed at
+ var/def_zone = ""
+ /// Atom who shot the projectile (Not the gun, the guy who shot the gun)
+ var/atom/movable/firer = null
+ /// The thing that the projectile was fired from (gun, turret, spell)
+ var/datum/fired_from = null
+ /// One of three suppression states: NONE displays the hit message and produces a loud sound,
+ /// QUIET makes a quiet sound and only lets the victim know they've been shot, and VERY only makes a very quiet sound with no messages
+ var/suppressed = SUPPRESSED_NONE
+ /// Original clicked target
+ var/atom/original = null
+ /// Initial target x coordinate offset of the projectile
+ VAR_FINAL/xo = null
+ /// Initial target y coordinate offset of the projectile
+ VAR_FINAL/yo = null
+ /// Projectile's starting turf
+ var/turf/starting = null
+ /// pixel_x where the player clicked. Default is the center.
var/p_x = 16
- var/p_y = 16 // the pixel location of the tile that the player clicked. Default is the center
-
- //Fired processing vars
- var/fired = FALSE //Have we been fired yet
- var/paused = FALSE //for suspending the projectile midair
- var/last_projectile_move = 0
- var/last_process = 0
- var/time_offset = 0
- var/datum/point/vector/trajectory
- var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location!
+ /// pixel_y where the player clicked. Default is the center
+ var/p_y = 16
+ /// X coordinate at which the projectile entered a new turf
+ var/entry_x
+ /// Y coordinate at which the projectile entered a new turf
+ var/entry_y
+ /// X coordinate at which the projectile visually impacted the target
+ var/impact_x
+ /// Y coordinate at which the projectile visually impacted the target
+ var/impact_y
+ /// Turf of the last atom we've impacted
+ VAR_FINAL/turf/last_impact_turf = null
+
+ /// If the projectile was fired already
+ var/fired = FALSE
+ /// If the projectile is suspended mid-air
+ var/paused = FALSE
+ /// Last time the projectile moved, used for lag compensation if SSprojectiles starts chugging
+ VAR_PRIVATE/last_projectile_move = 0
+ /// Last time the projectile was processed, also used for lag compensation
+ VAR_PRIVATE/last_process = 0
+ /// How many pixels we missed last tick due to lag or speed cap
+ VAR_PRIVATE/overrun = 0
+ /// Projectile's movement vector - this caches sine/cosine of our angle to cut down on trig calculations
+ var/datum/vector/movement_vector
/// We already impacted these things, do not impact them again. Used to make sure we can pierce things we want to pierce. Lazylist, typecache style (object = TRUE) for performance.
var/list/impacted = list()
/// If TRUE, we can hit our firer.
@@ -66,38 +93,36 @@
var/projectile_phasing = NONE
/// Bitflag for things the projectile should hit, but pierce through without deleting itself. Defers to projectile_phasing. Uses pass_flags flags.
var/projectile_piercing = NONE
- /// number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc!
+ /// Number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc!
var/pierces = 0
- /// how many times this projectile can pierce something before deleting
+ /// How many times this projectile can pierce something before deleting
var/max_pierces = 0
/// If objects are below this layer, we pass through them
var/hit_threshhold = PROJECTILE_HIT_THRESHHOLD_LAYER
- /// During each fire of SSprojectiles, the number of deciseconds since the last fire of SSprojectiles
- /// is divided by this var, and the result truncated to the next lowest integer is
- /// the number of times the projectile's `pixel_move` proc will be called.
- var/speed = 0.8
-
- /// This var is multiplied by SSprojectiles.global_pixel_speed to get how many pixels
- /// the projectile moves during each iteration of the movement loop
- ///
- /// If you want to make a fast-moving projectile, you should keep this equal to 1 and
- /// reduce the value of `speed`. If you want to make a slow-moving projectile, make
- /// `speed` a modest value like 1 and set this to a low value like 0.2.
- var/pixel_speed_multiplier = 1
+ /// How many tiles we pass in a single SSprojectiles tick
+ var/speed = 1.25
/// The current angle of the projectile. Initially null, so if the arg is missing from [/fire()], we can calculate it from firer and target as fallback.
var/angle
- var/original_angle = 0 //Angle at firing
- var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle
- var/spread = 0 //amount (in degrees) of projectile spread
- animate_movement = NO_STEPS //Use SLIDE_STEPS in conjunction with legacy
- /// how many times we've ricochet'd so far (instance variable, not a stat)
+ /// Angle at the moment of firing
+ var/original_angle = 0
+ /// Set TRUE to prevent projectiles from having their sprites rotated based on firing angle
+ var/nondirectional_sprite = FALSE
+ /// Random spread done projectile-side for convinience
+ var/spread = 0
+ /// Additional rotation for the projectile, in case it uses some object's sprite
+ var/projectile_angle = 0
+ /// Gliding does not enjoy something getting moved multiple turfs in a tick, which is why we animate it manually
+ animate_movement = NO_STEPS
+
+ // Ricochet logic
+ /// How many times we've ricochet'd so far (instance variable, not a stat)
var/ricochets = 0
- /// how many times we can ricochet max
+ /// How many times we can ricochet max
var/ricochets_max = 0
- /// how many times we have to ricochet min (unless we hit an atom we can ricochet off)
+ /// How many times we have to ricochet min (unless we hit an atom we can ricochet off)
var/min_ricochets = 0
/// 0-100 (or more, I guess), the base chance of ricocheting, before being modified by the atom we shoot and our chance decay
var/ricochet_chance = 0
@@ -114,18 +139,22 @@
/// Can our ricochet autoaim hit our firer?
var/ricochet_shoots_firer = TRUE
- ///If the object being hit can pass the damage on to something else, it should not do it for this bullet
- var/force_hit = FALSE
-
- //Hitscan
- var/hitscan = FALSE //Whether this is hitscan. If it is, speed is basically ignored.
- var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. Used for hitscan effect generation.
- /// Last turf an angle was changed in for hitscan projectiles.
- var/turf/last_angle_set_hitscan_store
- var/datum/point/beam_index
- var/turf/hitscan_last //last turf touched during hitscanning.
+ // Hitscan logic
+ /// Wherever this projectile is hitscan. Hitscan projectiles are processed until the end of their path instantly upon being fired and leave a tracer in their path
+ var/hitscan = FALSE
+ /// Associated list of coordinate points in which we changed trajectories in order to calculate hitscan tracers
+ /// Value points to the next point in the beam
+ var/list/datum/point/beam_points
+ /// Last point in the beam
+ var/datum/point/last_point
+ /// Next forceMove will not create tracer end/start effects
+ var/free_hitscan_forceMove = FALSE
+
+ /// Hitscan tracer effect left behind the projectile
var/tracer_type
+ /// Hitscan muzzle effect spawned on the firer
var/muzzle_type
+ /// Hitscan impact effect spawned on the target
var/impact_type
//Fancy hitscan lighting effects!
@@ -139,11 +168,16 @@
var/impact_light_range = 2
var/impact_light_color_override
- //Homing
+ // Homing
+ /// If the projectile is homing. Warning - this changes projectile's processing logic, reverting it to segmented processing instead of new raymarching logic
var/homing = FALSE
+ /// Target the projectile is homing on
var/atom/homing_target
- var/homing_turn_speed = 10 //Angle per tick.
- var/homing_inaccuracy_min = 0 //in pixels for these. offsets are set once when setting target.
+ /// Angles per move segment, distance is based on SSprojectiles.pixels_per_decisecond
+ /// With pixels_per_decisecond set to 16 and homing_turn_speed, the projectile can turn up to 20 pixels per turf passed
+ var/homing_turn_speed = 10
+ // Allowed leeway in pixels
+ var/homing_inaccuracy_min = 0
var/homing_inaccuracy_max = 0
var/homing_offset_x = 0
var/homing_offset_y = 0
@@ -151,17 +185,20 @@
var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY are the only things that should be in here
- ///Defines what armor to use when it hits things. Must be set to bullet, laser, energy, or bomb
+ /// Defines what armor to use when it hits things. Must be set to bullet, laser, energy, or bomb
var/armor_flag = BULLET
- ///How much armor this projectile pierces.
+ /// How much armor this projectile pierces.
var/armour_penetration = 0
- ///Whether or not our projectile doubles the value of affecting armour
+ /// Whether or not our projectile doubles the value of affecting armour
var/weak_against_armour = FALSE
- var/projectile_type = /obj/projectile
- var/range = 50 //This will de-increment every step. When 0, it will deletze the projectile.
- var/decayedRange //stores original range
- var/reflect_range_decrease = 5 //amount of original range that falls off when reflecting, so it doesn't go forever
- var/reflectable = NONE // Can it be reflected or not?
+ /// This will de-increment every step. When 0, it will delete the projectile.
+ var/range = 50
+ /// Original range upon being fired/reflected
+ var/maximum_range
+ /// Amount of original range that falls off when reflecting, so it doesn't go forever
+ var/reflect_range_decrease = 5
+ /// If this projectile can be reflected
+ var/reflectable = FALSE
// Status effects applied on hit
var/stun = 0 SECONDS
@@ -182,59 +219,86 @@
/// Slurring applied on projectile hit
var/slur = 0 SECONDS
- var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all.
- var/catastropic_dismemberment = FALSE //If TRUE, this projectile deals its damage to the chest if it dismembers a limb.
- var/impact_effect_type //what type of impact effect to show when hitting something
- var/log_override = FALSE //is this type spammed enough to not log? (KAs)
- /// If true, the projectile won't cause any logging. Used for hallucinations and shit.
+ /// Damage the limb must have for it to be dismembered upon getting hit. 0 will prevent dismembering altogether
+ var/dismemberment = 0
+ /// If TRUE, this projectile deals its damage to the chest if it dismembers a limb.
+ var/catastropic_dismemberment = FALSE
+ /// Impact VFX created upon hitting something
+ var/impact_effect_type
+ /// If the act of firing this projectile does not create logs
+ var/log_override = FALSE
+ /// If true, the projectile won't cause any logging whatsoever. Used for hallucinations and shit.
var/do_not_log = FALSE
/// We ignore mobs with these factions.
var/list/ignored_factions
-
- ///If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets
+ /// Turf that we have registered connect_loc signal - this is done for performance, as we're moving ~a dozen turfs per tick
+ /// and registering and unregistering signal for every single one of them is stupid. Unregistering the signal from the correct turf in case we get moved by smth else is important
+ var/turf/last_tick_turf
+ /// Remaining pixel movement last tick - used for precise range calculations
+ var/pixels_moved_last_tile = 0
+ /// In order to preserve animations, projectiles are only deleted the tick *after* they impact something.
+ /// Same is applied to reaching the range limit
+ var/deletion_queued = NONE
+ /// How many ticks should we wait in queued deletion mode before qdeleting? Sometimes increased in animations
+ var/ticks_to_deletion = 1
+
+ /// If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets
var/shrapnel_type
- ///If we have a shrapnel_type defined, these embedding stats will be passed to the spawned shrapnel type, which will roll for embedding on the target
+ /// If we have a shrapnel_type defined, these embedding stats will be passed to the spawned shrapnel type, which will roll for embedding on the target
var/embed_type
- ///Saves embedding data
+ /// Saves embedding data
var/datum/embed_data/embed_data
- ///If TRUE, hit mobs, even if they are lying on the floor and are not our target within MAX_RANGE_HIT_PRONE_TARGETS tiles
+ /// If TRUE, hit mobs, even if they are lying on the floor and are not our target within MAX_RANGE_HIT_PRONE_TARGETS tiles
var/hit_prone_targets = FALSE
- ///if TRUE, ignores the range of MAX_RANGE_HIT_PRONE_TARGETS tiles of hit_prone_targets
+ /// If TRUE, ignores the range of MAX_RANGE_HIT_PRONE_TARGETS tiles of hit_prone_targets
var/ignore_range_hit_prone_targets = FALSE
- ///For what kind of brute wounds we're rolling for, if we're doing such a thing. Lasers obviously don't care since they do burn instead.
+ /// For what kind of brute wounds we're rolling for, if we're doing such a thing. Lasers obviously don't care since they do burn instead.
var/sharpness = NONE
- ///How much we want to drop damage per tile as it travels through the air
+ /// How much we want to drop damage per tile as it travels through the air
var/damage_falloff_tile
- ///How much we want to drop stamina damage (defined by the stamina variable) per tile as it travels through the air
+ /// How much we want to drop stamina damage (defined by the stamina variable) per tile as it travels through the air
var/stamina_falloff_tile
- ///How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes
+ /// How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes
var/wound_falloff_tile
- ///How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes
+ /// How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes
var/embed_falloff_tile
- ///How much accuracy is lost for each tile travelled
+ /// How much accuracy is lost for each tile travelled
var/accuracy_falloff = 7
- ///How much accuracy before falloff starts to matter. Formula is range - falloff * tiles travelled
+ /// How much accuracy before falloff starts to matter. Formula is range - falloff * tiles travelled
var/accurate_range = 100
- var/static/list/projectile_connections = list(COMSIG_ATOM_ENTERED = PROC_REF(on_entered))
/// If true directly targeted turfs can be hit
var/can_hit_turfs = FALSE
/obj/projectile/Initialize(mapload)
. = ..()
- decayedRange = range
- if(get_embed())
+ maximum_range = range
+ if (get_embed())
AddElement(/datum/element/embed)
- AddElement(/datum/element/connect_loc, projectile_connections)
-
add_traits(list(TRAIT_FREE_HYPERSPACE_MOVEMENT, TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT), INNATE_TRAIT)
-/obj/projectile/proc/Range()
+/obj/projectile/Destroy()
+ if (hitscan)
+ generate_hitscan_tracers()
+ STOP_PROCESSING(SSprojectiles, src)
+ firer = null
+ original = null
+ if (movement_vector)
+ QDEL_NULL(movement_vector)
+ if (beam_points)
+ QDEL_LIST(beam_points)
+ if (last_point)
+ QDEL_NULL(last_point)
+ return ..()
+
+/// Called every time a projectile passes one tile worth of movement
+/obj/projectile/proc/reduce_range()
range--
- if(wound_bonus != CANT_WOUND)
+ pixels_moved_last_tile -= ICON_SIZE_ALL
+ if(wound_falloff_tile && wound_bonus != CANT_WOUND)
wound_bonus += wound_falloff_tile
bare_wound_bonus = max(0, bare_wound_bonus + wound_falloff_tile)
- if(get_embed())
- set_embed(embed_data.generate_with_values(embed_data.embed_chance + embed_falloff_tile)) // Should be rewritten in projecitle refactor
+ if(embed_falloff_tile && get_embed())
+ set_embed(embed_data.generate_with_values(embed_data.embed_chance + embed_falloff_tile))
if(damage_falloff_tile && damage >= 0)
damage += damage_falloff_tile
if(stamina_falloff_tile && stamina >= 0)
@@ -242,26 +306,22 @@
SEND_SIGNAL(src, COMSIG_PROJECTILE_RANGE)
if(range <= 0 && loc)
- on_range()
+ if (hitscan)
+ qdel(src)
+ return
+ deletion_queued = PROJECTILE_RANGE_DELETE
if(damage_falloff_tile && damage <= 0 || stamina_falloff_tile && stamina <= 0)
- on_range()
+ if (hitscan)
+ qdel(src)
+ return
+ deletion_queued = PROJECTILE_RANGE_DELETE
-/obj/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range
+/// Called next tick after the projectile reaches its maximum range so the animation has time to fully play out
+/obj/projectile/proc/on_range()
SEND_SIGNAL(src, COMSIG_PROJECTILE_RANGE_OUT)
qdel(src)
-/// Returns the string form of the def_zone we have hit.
-/mob/living/proc/check_hit_limb_zone_name(hit_zone)
- if(has_limbs)
- return hit_zone
-
-/mob/living/carbon/check_hit_limb_zone_name(hit_zone)
- if(get_bodypart(hit_zone))
- return hit_zone
- else //when a limb is missing the damage is actually passed to the chest
- return BODY_ZONE_CHEST
-
/**
* Called when the projectile hits something
*
@@ -289,21 +349,19 @@
hit_limb_zone = victim.check_hit_limb_zone_name(def_zone)
if(fired_from)
- SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, angle, hit_limb_zone, blocked)
- SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_ON_HIT, firer, target, angle, hit_limb_zone, blocked)
+ SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, angle, hit_limb_zone, blocked, pierce_hit)
+ SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_ON_HIT, firer, target, angle, hit_limb_zone, blocked, pierce_hit)
- if(QDELETED(src)) // in case one of the above signals deleted the projectile for whatever reason
+ if(QDELETED(src) || deletion_queued) // in case one of the above signals deleted the projectile for whatever reason
return BULLET_ACT_BLOCK
var/turf/target_turf = get_turf(target)
- var/hitx
- var/hity
if(target == original)
- hitx = target.pixel_x + p_x - 16
- hity = target.pixel_y + p_y - 16
+ impact_x = target.pixel_x + p_x - ICON_SIZE_X / 2
+ impact_y = target.pixel_y + p_y - ICON_SIZE_Y / 2
else
- hitx = target.pixel_x + rand(-8, 8)
- hity = target.pixel_y + rand(-8, 8)
+ impact_x = entry_x + movement_vector?.pixel_x * rand(0, ICON_SIZE_X / 2)
+ impact_y = entry_y + movement_vector?.pixel_y * rand(0, ICON_SIZE_Y / 2)
if(isturf(target) && hitsound_wall)
playsound(src, hitsound_wall, clamp(vol_by_damage() + (suppressed ? 0 : 20), 0, 100), TRUE, -1)
@@ -311,9 +369,9 @@
if(damage > 0 && (damage_type == BRUTE || damage_type == BURN) && iswallturf(target_turf) && prob(75))
var/turf/closed/wall/target_wall = target_turf
if(impact_effect_type && !hitscan)
- new impact_effect_type(target_wall, hitx, hity)
+ new impact_effect_type(target_wall, impact_x, impact_y)
- target_wall.add_dent(WALL_DENT_SHOT, hitx, hity)
+ target_wall.add_dent(WALL_DENT_SHOT, impact_x, impact_y)
return BULLET_ACT_HIT
if (hitsound)
@@ -321,11 +379,11 @@
if (!isliving(target))
if(impact_effect_type && !hitscan)
- new impact_effect_type(target_turf, hitx, hity)
+ new impact_effect_type(target_turf, impact_x, impact_y)
return BULLET_ACT_HIT
if((blocked >= 100 || (damage && damage_type != BRUTE)) && impact_effect_type && !hitscan)
- new impact_effect_type(target_turf, hitx, hity)
+ new impact_effect_type(target_turf, impact_x, impact_y)
var/mob/living/living_target = target
var/reagent_note
@@ -353,9 +411,20 @@
/obj/projectile/proc/vol_by_damage()
if (suppressed)
return 5
- if(!damage)
+ if (!damage)
return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume
- return clamp(damage * 0.67, 30, 100)// Multiply projectile damage by 0.67, then CLAMP the value between 30 and 1
+ return clamp(damage * 0.67, 30, 100) // Multiply projectile damage by 0.67, then CLAMP the value between 30 and 1
+
+/obj/projectile/proc/firer_deleted(datum/source)
+ SIGNAL_HANDLER
+ // Shooting yourself point-blank
+ if (firer == original)
+ original = null
+ firer = null
+
+/obj/projectile/proc/original_deleted(datum/source)
+ SIGNAL_HANDLER
+ original = null
/obj/projectile/proc/on_ricochet(atom/target)
ricochets++
@@ -378,16 +447,10 @@
set_angle(get_angle(src, unlucky_sob.loc))
original = unlucky_sob
-/obj/projectile/proc/store_hitscan_collision(datum/point/point_cache)
- beam_segments[beam_index] = point_cache
- beam_index = point_cache
- beam_segments[beam_index] = null
-
/obj/projectile/Bump(atom/bumped_atom)
SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, bumped_atom)
- if(!can_hit_target(bumped_atom, bumped_atom == original, TRUE, TRUE))
- return
- impact(bumped_atom)
+ if (can_hit_target(bumped_atom, bumped_atom == original, TRUE, TRUE))
+ impact(bumped_atom)
/**
* Called when the projectile hits something
@@ -401,44 +464,58 @@
* Also, we select_target to find what to process_hit first.
*/
/obj/projectile/proc/impact(atom/target)
- if(impacted[target.weak_reference]) // never doublehit, otherwise someone may end up running into a projectile from the back
+ // Don't impact anything if we've been queued for deletion
+ if (deletion_queued)
+ return
+
+ // never doublehit, otherwise someone may end up running into a projectile from the back
+ if(impacted[target.weak_reference])
return
if(ricochets < ricochets_max && check_ricochet_flag(target) && check_ricochet(target) && target.handle_ricochet(src))
on_ricochet(target)
impacted = list() // Shoot a x-ray laser at a pair of mirrors I dare you
ignore_source_check = TRUE // Firer is no longer immune
- decayedRange = max(0, decayedRange - reflect_range_decrease)
+ maximum_range = max(0, maximum_range - reflect_range_decrease)
ricochet_chance *= ricochet_decay_chance
damage *= ricochet_decay_damage
stamina *= ricochet_decay_damage
- range = decayedRange
- if(hitscan && trajectory)
- store_hitscan_collision(trajectory.copy_to())
+ range = maximum_range
return
- var/turf/target_turf = get_turf(target)
+ last_impact_turf = get_turf(target)
// Lower accurancy/longer range tradeoff. 7 is a balanced number to use.
- def_zone = ran_zone(def_zone, clamp(accurate_range - (accuracy_falloff * get_dist(target_turf, starting)), 5, 100))
- process_hit_loop(select_target(target_turf, target))
+ def_zone = ran_zone(def_zone, clamp(accurate_range - (accuracy_falloff * get_dist(last_impact_turf, starting)), 5, 100))
+ var/impact_result = process_hit_loop(select_target(last_impact_turf, target))
+ if (impact_result == PROJECTILE_IMPACT_PASSED)
+ return
+ if (hitscan)
+ qdel(src)
+ return
+ deletion_queued = PROJECTILE_IMPACT_DELETE
/*
* Main projectile hit loop code
* As long as there are valid targets on the hit target's tile, we will loop through all the ones that we have not hit
* (and thus invalidated) and try to hit them until either no targets remain or we've been deleted.
+ * Should *never* be called directly, as impact() is the proc queueing projectiles for deletion
+ * If you need to call this directly, you should reconsider the choices that led you to this point
*/
/obj/projectile/proc/process_hit_loop(atom/target)
SHOULD_NOT_SLEEP(TRUE)
- SHOULD_NOT_OVERRIDE(TRUE)
+ PRIVATE_PROC(TRUE)
+
+ // Don't impact anything if we've been queued for deletion
+ if (deletion_queued)
+ return PROJECTILE_IMPACT_PASSED
var/turf/target_turf = get_turf(target)
- while (target && !QDELETED(src))
+ while (target && !QDELETED(src) && !deletion_queued)
// Doublehitting can be an issue with slow projectiles or when the server is chugging
impacted[WEAKREF(target)] = TRUE
var/mode = prehit_pierce(target)
if(mode == PROJECTILE_DELETE_WITHOUT_HITTING)
- qdel(src)
- return
+ return PROJECTILE_IMPACT_INTERRUPTED
// If we've phasing through a target, first set ourselves as phasing and then try to locate a new one
if(mode == PROJECTILE_PIERCE_PHASE)
@@ -448,27 +525,29 @@
target = select_target(target_turf, target)
continue
- if (SEND_SIGNAL(target, COMSIG_PROJECTILE_PREHIT, args, src) & PROJECTILE_INTERRUPT_HIT)
- qdel(src)
- return
+ var/target_signal = SEND_SIGNAL(target, COMSIG_PROJECTILE_PREHIT, src)
+ if (target_signal & PROJECTILE_INTERRUPT_HIT_PHASE)
+ return PROJECTILE_IMPACT_PASSED
+ if (target_signal & PROJECTILE_INTERRUPT_HIT)
+ return PROJECTILE_IMPACT_INTERRUPTED
- if (SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_PREHIT, args) & PROJECTILE_INTERRUPT_HIT)
- qdel(src)
- return
+ var/self_signal = SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_PREHIT, target)
+ if (self_signal & PROJECTILE_INTERRUPT_HIT_PHASE)
+ return PROJECTILE_IMPACT_PASSED
+ if (self_signal & PROJECTILE_INTERRUPT_HIT)
+ return PROJECTILE_IMPACT_INTERRUPTED
if(mode == PROJECTILE_PIERCE_HIT)
pierces += 1
// Targets should handle their impact logic on our own and if they decide that we hit them, they call our on_hit
- var/result = target.bullet_act(src, def_zone, mode == PROJECTILE_PIERCE_HIT)
+ var/result = target.projectile_hit(src, def_zone, mode == PROJECTILE_PIERCE_HIT)
if (result != BULLET_ACT_FORCE_PIERCE && max_pierces && pierces >= max_pierces)
- qdel(src)
- return
+ return PROJECTILE_IMPACT_SUCCESSFUL
// If we're not piercing or phasing, delete ourselves
if (result != BULLET_ACT_FORCE_PIERCE && mode != PROJECTILE_PIERCE_HIT && mode != PROJECTILE_PIERCE_PHASE)
- qdel(src)
- return
+ return PROJECTILE_IMPACT_SUCCESSFUL
// We've piercing though this one, go look for a new target
if(!(movement_type & PHASING))
@@ -477,13 +556,14 @@
target = select_target(target_turf, target)
+ return PROJECTILE_IMPACT_PASSED
+
/**
* Selects a target to hit from a turf
*
* @params
- * T - The turf
- * target - The "preferred" atom to hit, usually what we Bumped() first.
- * bumped - used to track if something is the reason we impacted in the first place.
+ * our_turf - Turf on which we hit the target
+ * bumped - What we've impacted and why this selection was called in the first place.
* If set, this atom is always treated as dense by can_hit_target.
*
* Priority:
@@ -523,8 +603,8 @@
// 6. nothing
// (returns null)
-//Returns true if the target atom is on our current turf and above the right layer
-//If direct target is true it's the originally clicked target.
+/// Returns true if the target atom is on our current turf and above the right layer
+/// If direct target is true it's the originally clicked target.
/obj/projectile/proc/can_hit_target(atom/target, direct_target = FALSE, ignore_loc = FALSE, cross_failed = FALSE)
if(QDELETED(target) || impacted[target.weak_reference])
return FALSE
@@ -538,7 +618,7 @@
var/mob/living/living_target = target
living_target.block_projectile_effects()
return FALSE
- if(!ignore_source_check && firer)
+ if(!ignore_source_check && firer && !direct_target)
if(target == firer || (target == firer.loc && ismecha(firer.loc)) || (target in firer.buckled_mobs))
return FALSE
if(ismob(firer))
@@ -568,7 +648,7 @@
return FALSE
if(hit_prone_targets)
var/mob/living/buckled_to = living_target.lowest_buckled_mob()
- if((decayedRange - range) <= MAX_RANGE_HIT_PRONE_TARGETS) // after MAX_RANGE_HIT_PRONE_TARGETS tiles, auto-aim hit for mobs on the floor turns off
+ if((maximum_range - range) <= MAX_RANGE_HIT_PRONE_TARGETS) // after MAX_RANGE_HIT_PRONE_TARGETS tiles, auto-aim hit for mobs on the floor turns off
return TRUE
if(ignore_range_hit_prone_targets) // doesn't apply to projectiles that must hit the target in combat mode or something else, no matter what
return TRUE
@@ -579,19 +659,6 @@
return FALSE
return TRUE
-/**
- * Scan if we should hit something and hit it if we need to
- * The difference between this and handling in impact is
- * In this we strictly check if we need to impact() something in specific
- * If we do, we do
- * We don't even check if it got hit already - impact() does that
- * In impact there's more code for selecting WHAT to hit
- * So this proc is more of checking if we should hit something at all BY having an atom cross us.
- */
-/obj/projectile/proc/scan_crossed_hit(atom/movable/crossed_atom)
- if(can_hit_target(crossed_atom, direct_target = (crossed_atom == original)))
- impact(crossed_atom)
-
/**
* Scans if we should hit something on the turf we just moved to if we haven't already
*
@@ -619,14 +686,15 @@
*/
/obj/projectile/proc/on_entered(datum/source, atom/movable/entered_atom)
SIGNAL_HANDLER
- scan_crossed_hit(entered_atom)
+ if(can_hit_target(entered_atom, direct_target = (entered_atom == original)))
+ impact(entered_atom)
/**
* Projectile can pass through
* Used to not even attempt to Bump() or fail to Cross() anything we already hit.
*/
/obj/projectile/CanPassThrough(atom/blocker, movement_dir, blocker_opinion)
- return ..() || impacted[blocker.weak_reference]
+ return impacted[blocker.weak_reference] || ..()
/**
* Projectile moved:
@@ -644,7 +712,8 @@
if(temporary_unstoppable_movement)
temporary_unstoppable_movement = FALSE
movement_type &= ~PHASING
- scan_moved_turf() //mostly used for making sure we can hit a non-dense object the user directly clicked on, and for penetrating projectiles that don't bump
+ // Mostly used for making sure we can hit a non-dense object the user directly clicked on, and for penetrating projectiles that don't bump
+ scan_moved_turf()
/**
* Checks if we should pierce something.
@@ -674,268 +743,443 @@
/obj/projectile/proc/check_ricochet_flag(atom/target)
if((armor_flag in list(ENERGY, LASER)) && (target.flags_ricochet & RICOCHET_SHINY))
return TRUE
-
if((armor_flag in list(BOMB, BULLET)) && (target.flags_ricochet & RICOCHET_HARD))
return TRUE
-
return FALSE
-/obj/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight.
- if(!trajectory && isnull(forced_angle) && isnull(angle))
- return FALSE
- var/datum/point/vector/current = trajectory
- if(!current)
- var/turf/T = get_turf(src)
- current = new(T.x, T.y, T.z, pixel_x, pixel_y, isnull(forced_angle)? angle : forced_angle, SSprojectiles.global_pixel_speed)
- var/datum/point/vector/v = current.return_vector_after_increments(moves * SSprojectiles.global_iterations_per_move)
- return v.return_turf()
-
-/obj/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle)
- var/turf/current = get_turf(src)
- var/turf/ending = return_predicted_turf_after_moves(moves, forced_angle)
- return get_line(current, ending)
-
/obj/projectile/Process_Spacemove(movement_dir = 0, continuous_move = FALSE)
return TRUE //Bullets don't drift in space
-/obj/projectile/process()
- last_process = world.time
- if(!loc || !fired || !trajectory)
- fired = FALSE
- return PROCESS_KILL
- if(paused || !isturf(loc))
- last_projectile_move += world.time - last_process //Compensates for pausing, so it doesn't become a hitscan projectile when unpaused from charged up ticks.
- return
- var/elapsed_time_deciseconds = (world.time - last_projectile_move) + time_offset
- time_offset = 0
- var/required_moves = speed > 0? FLOOR(elapsed_time_deciseconds / speed, 1) : MOVES_HITSCAN //Would be better if a 0 speed made hitscan but everyone hates those so I can't make it a universal system :<
- if(required_moves == MOVES_HITSCAN)
- required_moves = SSprojectiles.global_max_tick_moves
- else
- if(required_moves > SSprojectiles.global_max_tick_moves)
- var/overrun = required_moves - SSprojectiles.global_max_tick_moves
- required_moves = SSprojectiles.global_max_tick_moves
- time_offset += overrun * speed
- time_offset += MODULUS(elapsed_time_deciseconds, speed)
- SEND_SIGNAL(src, COMSIG_PROJECTILE_BEFORE_MOVE)
- for(var/i in 1 to required_moves)
- pixel_move(pixel_speed_multiplier, FALSE)
-
/obj/projectile/proc/fire(fire_angle, atom/direct_target)
LAZYINITLIST(impacted)
- if(fired_from)
+ if (fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_BEFORE_FIRE, src, original)
- if(firer)
+ if (firer)
RegisterSignal(firer, COMSIG_QDELETING, PROC_REF(firer_deleted))
SEND_SIGNAL(firer, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE, src, fired_from, original)
if (original)
if (firer != original)
RegisterSignal(original, COMSIG_QDELETING, PROC_REF(original_deleted))
- if(!log_override && firer && original && !do_not_log)
+ if (!log_override && firer && original && !do_not_log)
log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]")
//note: mecha projectile logging is handled in /obj/item/mecha_parts/mecha_equipment/weapon/action(). try to keep these messages roughly the sameish just for consistency's sake.
- if(direct_target && (get_dist(direct_target, get_turf(src)) <= 1)) // point blank shots
- process_hit_loop(direct_target)
- if(QDELETED(src))
+ if (direct_target && (get_dist(direct_target, get_turf(src)) <= 1)) // point blank shots
+ impact(direct_target)
+ if (QDELETED(src))
return
var/turf/starting = get_turf(src)
- if(isnum(fire_angle))
+ if (isnum(fire_angle))
set_angle(fire_angle)
- else if(isnull(angle)) //Try to resolve through offsets if there's no angle set.
- if(isnull(xo) || isnull(yo))
+ else if (isnull(angle)) //Try to resolve through offsets if there's no angle set.
+ if (isnull(xo) || isnull(yo))
stack_trace("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!")
qdel(src)
return
- var/turf/target = locate(clamp(starting + xo, 1, world.maxx), clamp(starting + yo, 1, world.maxy), starting.z)
+ var/turf/target = locate(clamp(starting.x + xo, 1, world.maxx), clamp(starting.y + yo, 1, world.maxy), starting.z)
set_angle(get_angle(src, target))
- if(spread)
+ if (spread)
set_angle(angle + (rand() - 0.5) * spread)
original_angle = angle
- trajectory_ignore_forcemove = TRUE
+ movement_vector = new(speed, angle)
+ if (hitscan)
+ beam_points = list()
+ free_hitscan_forceMove = TRUE
forceMove(starting)
- trajectory_ignore_forcemove = FALSE
- trajectory = new(starting.x, starting.y, starting.z, pixel_x, pixel_y, angle, SSprojectiles.global_pixel_speed)
last_projectile_move = world.time
fired = TRUE
play_fov_effect(starting, 6, "gunfire", dir = NORTH, angle = angle)
SEND_SIGNAL(src, COMSIG_PROJECTILE_FIRE)
- if(hitscan)
+ if (hitscan && !deletion_queued)
+ record_hitscan_start()
process_hitscan()
- if(QDELETED(src))
+ if (QDELETED(src))
return
- if(!(datum_flags & DF_ISPROCESSING))
+ if (!(datum_flags & DF_ISPROCESSING))
START_PROCESSING(SSprojectiles, src)
- pixel_move(pixel_speed_multiplier, FALSE) //move it now!
+ // move it now to avoid potentially hitting yourself with firer-hitting projectiles
+ if (!deletion_queued && !hitscan)
+ process_movement(max(FLOOR(speed, 1), 1), tile_limit = TRUE)
-/obj/projectile/proc/set_angle(new_angle) //wrapper for overrides.
+/// Makes projectile home onto the passed target with minor inaccuracy
+/obj/projectile/proc/set_homing_target(atom/target)
+ if(!target || (!isturf(target) && !isturf(target.loc)))
+ return FALSE
+ homing = TRUE
+ homing_target = target
+ homing_offset_x = rand(homing_inaccuracy_min, homing_inaccuracy_max)
+ homing_offset_y = rand(homing_inaccuracy_min, homing_inaccuracy_max)
+ if(prob(50))
+ homing_offset_x = -homing_offset_x
+ if(prob(50))
+ homing_offset_y = -homing_offset_y
+
+/obj/projectile/proc/set_angle(new_angle)
+ if (angle == new_angle)
+ return
if(!nondirectional_sprite)
- transform = transform.TurnTo(angle, new_angle)
+ transform = transform.TurnTo(angle, new_angle + projectile_angle)
angle = new_angle
- if(trajectory)
- trajectory.set_angle(new_angle)
- if(fired && hitscan && isloc(loc) && (loc != last_angle_set_hitscan_store))
- last_angle_set_hitscan_store = loc
- var/datum/point/point_cache = new (src)
- point_cache = trajectory.copy_to()
- store_hitscan_collision(point_cache)
- return TRUE
-
-/obj/projectile/proc/firer_deleted(datum/source)
- SIGNAL_HANDLER
- // Shooting yourself point-blank
- if (firer == original)
- original = null
- firer = null
-
-/obj/projectile/proc/original_deleted(datum/source)
- SIGNAL_HANDLER
- original = null
+ if(movement_vector)
+ movement_vector.set_angle(new_angle)
+ if(fired && hitscan && isturf(loc))
+ create_hitscan_point()
/// Same as set_angle, but the reflection continues from the center of the object that reflects it instead of the side
-/obj/projectile/proc/set_angle_centered(new_angle)
+/obj/projectile/proc/set_angle_centered(center_turf, new_angle)
+ if (angle == new_angle)
+ return
if(!nondirectional_sprite)
- transform = transform.TurnTo(angle, new_angle)
+ transform = transform.TurnTo(angle, new_angle + projectile_angle)
+ free_hitscan_forceMove = TRUE
+ forceMove(center_turf)
+ entry_x = 0
+ entry_y = 0
angle = new_angle
- if(trajectory)
- trajectory.set_angle(new_angle)
+ if(movement_vector)
+ movement_vector.set_angle(new_angle)
+ if(fired && hitscan && isturf(loc))
+ create_hitscan_point(tile_center = TRUE)
+
+/obj/projectile/vv_edit_var(var_name, var_value)
+ if(var_name == NAMEOF(src, angle))
+ set_angle(var_value)
+ return TRUE
+ return ..()
- var/list/coordinates = trajectory.return_coordinates()
- trajectory.set_location(coordinates[1], coordinates[2], coordinates[3]) // Sets the trajectory to the center of the tile it bounced at
+/*
+ * Projectile's process calculates the amount of pixels that it needs to move per tick and calls moveloop processing
+ * There is a strict cap on how many pixels it can move in a tick to prevent them from turning into hitscans during lag
+ * Path that the projectile could not finish would be stored in the overrun variable to be processed next tick
+ */
- if(fired && hitscan && isloc(loc) && (loc != last_angle_set_hitscan_store)) // Handles hitscan projectiles
- last_angle_set_hitscan_store = loc
- var/datum/point/point_cache = new (src)
- point_cache.initialize_location(coordinates[1], coordinates[2], coordinates[3]) // Take the center of the hitscan collision tile
- store_hitscan_collision(point_cache)
- return TRUE
+/obj/projectile/process()
+ last_process = world.time
+ if(!loc || !fired || !movement_vector)
+ fired = FALSE
+ return PROCESS_KILL
-/obj/projectile/forceMove(atom/target)
- if(!isloc(target) || !isloc(loc) || !z)
- return ..()
- var/zc = target.z != z
- var/old = loc
- if(zc)
- before_z_change(old, target)
- . = ..()
- if(QDELETED(src)) // we coulda bumped something
+ // If last tick the projectile impacted something or reached its range, don't process it
+ if (deletion_queued == PROJECTILE_IMPACT_DELETE)
+ ticks_to_deletion -= 1
+ if (!ticks_to_deletion)
+ qdel(src)
return
- if(trajectory && !trajectory_ignore_forcemove && isturf(target))
- if(hitscan)
- finalize_hitscan_and_generate_tracers(FALSE)
- trajectory.initialize_location(target.x, target.y, target.z, 0, 0)
- if(hitscan)
- record_hitscan_start(RETURN_PRECISE_POINT(src))
- if(zc)
- after_z_change(old, target)
-
-/obj/projectile/proc/after_z_change(atom/olcloc, atom/newloc)
- return
-/obj/projectile/proc/before_z_change(atom/oldloc, atom/newloc)
- return
+ if (deletion_queued == PROJECTILE_RANGE_DELETE)
+ on_range()
+ return
-/obj/projectile/vv_edit_var(var_name, var_value)
- switch(var_name)
- if(NAMEOF(src, angle))
- set_angle(var_value)
- return TRUE
- else
- return ..()
+ if(paused || !isturf(loc))
+ // Compensates for pausing, so it doesn't become a hitscan projectile when unpaused from charged up ticks.
+ last_projectile_move = last_process
+ return
-/obj/projectile/proc/set_pixel_speed(new_speed)
- if(trajectory)
- trajectory.set_speed(new_speed)
- return TRUE
- return FALSE
+ if (hitscan)
+ process_hitscan()
+ return
-/obj/projectile/proc/record_hitscan_start(datum/point/point_cache)
- if(point_cache)
- beam_segments = list()
- beam_index = point_cache
- beam_segments[beam_index] = null //record start.
+ // Calculates how many pixels should be moved this tick, including overrun debt from the previous tick
+ var/elapsed_time = world.time - last_projectile_move
+ var/pixels_to_move = elapsed_time * SSprojectiles.pixels_per_decisecond * speed + overrun
+ overrun = 0
-/obj/projectile/proc/process_hitscan()
- var/safety = range * 10
- record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
- while(loc && !QDELETED(src))
- if(paused)
- stoplag(1)
- continue
- if(safety-- <= 0)
- if(loc)
- Bump(loc)
- if(!QDELETED(src))
- qdel(src)
- return //Kill!
- pixel_move(1, TRUE)
- // No kevinz I do not care that this is a hitscan weapon, it is not allowed to travel 100 turfs in a tick
- if(CHECK_TICK && QDELETED(src))
- return
+ if (pixels_to_move > SSprojectiles.max_pixels_per_tick)
+ overrun = pixels_to_move - SSprojectiles.max_pixels_per_tick
+ pixels_to_move = SSprojectiles.max_pixels_per_tick
-/obj/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
- if(!loc || !trajectory)
- return
+ overrun += MODULUS(pixels_to_move, 1)
+ pixels_to_move = FLOOR(pixels_to_move, 1)
+ SEND_SIGNAL(src, COMSIG_PROJECTILE_BEFORE_MOVE)
+
+ // Registering turf entries is done here instead of a connect_loc because else it could be called multiple times per tick and waste performance
+ if (last_tick_turf)
+ UnregisterSignal(last_tick_turf, COMSIG_ATOM_ENTERED)
+
+ process_movement(pixels_to_move)
+
+ if (!QDELETED(src) && !deletion_queued && isturf(loc))
+ RegisterSignal(loc, COMSIG_ATOM_ENTERED, PROC_REF(on_entered))
+ last_tick_turf = loc
+
+/*
+ * Main projectile movement cycle.
+ * Normal behavior moves projectiles in a straight line through tiles, but it gets trickier with homing.
+ * Every pixels_per_decisecond we will stop and call process_homing(), which while a bit rough, does not have a significant performance impact
+ * This proc needs to be very performant, so do not add overridable logic that can be handled in homing or animations here.
+ * Return is how many tiles we've actually passed (or attempted to pass, if we ended up on a half-move)
+ *
+ * pixels_to_move determines how many pixels the projectile should move
+ * hitscan prevents animation logic from running
+ * tile_limit prevents any movements past the first tile change
+ */
+/obj/projectile/proc/process_movement(pixels_to_move, hitscan = FALSE, tile_limit = FALSE)
+ if (!isturf(loc) || !movement_vector)
+ return 0
+ var/total_move_distance = pixels_to_move
+ var/movements_done = 0
last_projectile_move = world.time
- if(homing)
- process_homing()
- var/forcemoved = FALSE
- for(var/i in 1 to SSprojectiles.global_iterations_per_move)
- if(QDELETED(src))
- return
- trajectory.increment(trajectory_multiplier)
- var/turf/cur_turf = trajectory.return_turf()
- if(!istype(cur_turf))
- // step back to the last valid turf before we Destroy
- trajectory.increment(-trajectory_multiplier)
+ while (pixels_to_move > 0 && isturf(loc) && !QDELETED(src) && !deletion_queued)
+ // Because pixel_x/y represents offset and not actual visual position of the projectile, we add 16 pixels to each and cut the excess because projectiles are not meant to be highly offset by default
+ var/pixel_x_actual = pixel_x + ICON_SIZE_X / 2
+ if(pixel_x_actual > ICON_SIZE_X)
+ pixel_x_actual = pixel_x_actual % ICON_SIZE_X
+
+ var/pixel_y_actual = pixel_y + ICON_SIZE_Y / 2
+ if(pixel_y_actual > ICON_SIZE_Y)
+ pixel_y_actual = pixel_y_actual % ICON_SIZE_Y
+
+ var/distance_to_border = INFINITY
+ // What distances do we need to move to hit the horizontal/vertical turf border
+ var/x_to_border = INFINITY
+ var/y_to_border = INFINITY
+ // If we're moving strictly up/down/left/right then one of these can be 0 and produce div by zero
+ if (movement_vector.pixel_x)
+ var/x_border_dist = -pixel_x_actual
+ if (movement_vector.pixel_x > 0)
+ x_border_dist = ICON_SIZE_X - pixel_x_actual
+ x_to_border = x_border_dist / movement_vector.pixel_x
+ distance_to_border = x_to_border
+
+ if (movement_vector.pixel_y)
+ var/y_border_dist = -pixel_y_actual
+ if (movement_vector.pixel_y > 0)
+ y_border_dist = ICON_SIZE_Y - pixel_y_actual
+ y_to_border = y_border_dist / movement_vector.pixel_y
+ distance_to_border = min(distance_to_border, y_to_border)
+
+ // Something went extremely wrong
+ if (distance_to_border == INFINITY)
+ stack_trace("WARNING: Projectile had an empty movement vector and tried to process")
qdel(src)
- return
- if (cur_turf == loc)
- continue
- if (cur_turf.z == loc.z)
- step_towards(src, cur_turf)
- hitscan_last = loc
- SEND_SIGNAL(src, COMSIG_PROJECTILE_PIXEL_STEP)
- continue
- var/old = loc
- before_z_change(loc, cur_turf)
- trajectory_ignore_forcemove = TRUE
- forceMove(cur_turf)
- trajectory_ignore_forcemove = FALSE
- after_z_change(old, loc)
- if(!hitscanning)
- pixel_x = trajectory.return_px()
- pixel_y = trajectory.return_py()
- forcemoved = TRUE
- hitscan_last = loc
- SEND_SIGNAL(src, COMSIG_PROJECTILE_PIXEL_STEP)
- if(QDELETED(src)) //deleted on last move
- return
- if(!hitscanning && !forcemoved)
- pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move
- pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move
- animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW)
- Range()
+ return movements_done
+
+ var/distance_to_move = min(distance_to_border, pixels_to_move)
+ // For homing we cap the maximum distance to move every loop
+ if (homing && distance_to_move > SSprojectiles.pixels_per_decisecond)
+ distance_to_move = SSprojectiles.pixels_per_decisecond
+
+ // Figure out if we move to the next turf and if so, what its positioning relatively to us is
+ var/x_shift = distance_to_move >= x_to_border ? SIGN(movement_vector.pixel_x) : 0
+ var/y_shift = distance_to_move >= y_to_border ? SIGN(movement_vector.pixel_y) : 0
+ var/moving_turfs = x_shift || y_shift
+ // Calculate where in the turf we will be when we cross the edge.
+ // This is a projectile variable because its also used in hit VFX
+ entry_x = pixel_x + movement_vector.pixel_x * distance_to_move - x_shift * ICON_SIZE_X
+ entry_y = pixel_y + movement_vector.pixel_y * distance_to_move - y_shift * ICON_SIZE_Y
+ var/delete_distance = 0
+
+ if (moving_turfs)
+ var/turf/new_turf = locate(x + x_shift, y + y_shift, z)
+ // We've hit an invalid turf, end of a z level or smth went wrong
+ if (!istype(new_turf))
+ qdel(src)
+ return movements_done
+
+ // Move to the next tile
+ step_towards(src, new_turf)
+ SEND_SIGNAL(src, COMSIG_PROJECTILE_MOVE_PROCESS_STEP)
+ // We hit something and got deleted, stop the loop
+ if (QDELETED(src))
+ return movements_done
+ if (loc != new_turf)
+ moving_turfs = FALSE
+ // If we've impacted something, we need to animate our movement until the actual hit
+ // Otherwise the projectile visually disappears slightly before the actual impact
+ if (deletion_queued)
+ // distance_to_move is how much we have to step to get to the next turf, hypotenuse is how much we need
+ // to move in the next turf to get from entry to impact position
+ delete_distance = distance_to_move + sqrt((impact_x - entry_x) ** 2 + (impact_y - entry_y) ** 2)
+
+ movements_done += 1
+ // We cannot move more than one turf worth of distance per loop, so this is a safe solution
+ pixels_moved_last_tile += distance_to_move
+ if (!deletion_queued && pixels_moved_last_tile >= ICON_SIZE_ALL)
+ reduce_range()
+ if (QDELETED(src))
+ return movements_done
+ // Similarly with range out deletion, need to calculate how many pixels we can actually move before deleting
+ if (deletion_queued)
+ delete_distance = distance_to_move - (ICON_SIZE_ALL - pixels_moved_last_tile)
+
+ if (deletion_queued)
+ // We moved to the next turf first, then impacted something
+ // This means that we need to offset our visual position back to the previous turf, then figure out
+ // how much we moved on the next turf (or we didn't move at all in which case we both shifts are 0 anyways)
+ if (moving_turfs)
+ pixel_x -= x_shift * ICON_SIZE_X
+ pixel_y -= y_shift * ICON_SIZE_Y
+
+ // Similarly to normal animate code, but use lowered deletion distance instead.
+ var/delete_x = pixel_x + movement_vector.pixel_x * delete_distance
+ var/delete_y = pixel_y + movement_vector.pixel_y * delete_distance
+ // In order to keep a consistent speed, calculate at what point between ticks we get deleted
+ var/animate_time = world.tick_lag * delete_distance / total_move_distance
+ // Sometimes we need to move *just a bit* more than we can afford this tick - in this case, delete a tick after
+ // so we don't disappear before impact. This shouldn't be more than 1, ever.
+ if (delete_distance > pixels_to_move)
+ ticks_to_deletion += 1
+ // We can use animation chains to visually disappear between ticks.
+ if (!move_animate(delete_x, delete_y, animate_time, deleting = TRUE))
+ animate(src, pixel_x = delete_x, pixel_y = delete_y, time = animate_time, flags = ANIMATION_PARALLEL | ANIMATION_CONTINUE)
+ animate(alpha = 0, time = 0, flags = ANIMATION_CONTINUE)
+ return movements_done
+
+ pixels_to_move -= distance_to_move
+ // animate() instantly changes pixel_x/y values and just interpolates them client-side so next loop processes properly
+ if (hitscan)
+ pixel_x = entry_x
+ pixel_y = entry_y
+ else
+ // We need to shift back to the tile we were on before moving
+ pixel_x -= x_shift * ICON_SIZE_X
+ pixel_y -= y_shift * ICON_SIZE_Y
+ if (!move_animate(entry_x, entry_y))
+ animate(src, pixel_x = entry_x, pixel_y = entry_y, time = world.tick_lag * distance_to_move / total_move_distance, flags = ANIMATION_PARALLEL | ANIMATION_CONTINUE)
+
+ // Homing caps our movement speed per loop while leaving per tick speed intact, so we can just call process_homing every loop here
+ if (homing)
+ process_homing()
+
+ // We've hit a timestop field, abort any remaining movement
+ if (paused)
+ return movements_done
+
+ // Prevents long-range high-speed projectiles from ruining the server performance by moving 100 tiles per tick when subsystem is set to a high cap
+ if (TICK_CHECK)
+ // If we ran out of time, add whatever distance we're yet to pass to overrun debt to be processed next tick and break the loop
+ overrun += pixels_to_move
+ return movements_done
+
+ if (tile_limit && moving_turfs)
+ return movements_done
+
+ return movements_done
+
+/// Called every time projectile animates its movement, in case child wants to have custom animations.
+/// Returning TRUE cancels normal animation
+/obj/projectile/proc/move_animate(animate_x, animate_y, animate_time = world.tick_lag, deleting = FALSE)
+ return FALSE
-/obj/projectile/proc/process_homing() //may need speeding up in the future performance wise.
+/// Called every projectile loop for homing or alternatively, custom trajectory changes.
+/obj/projectile/proc/process_homing()
if(!homing_target)
- return FALSE
+ return
var/datum/point/new_point = RETURN_PRECISE_POINT(homing_target)
- new_point.x += clamp(homing_offset_x, 1, world.maxx)
- new_point.y += clamp(homing_offset_y, 1, world.maxy)
+ new_point.pixel_x += homing_offset_x
+ new_point.pixel_y += homing_offset_y
var/new_angle = closer_angle_difference(angle, angle_between_points(RETURN_PRECISE_POINT(src), new_point))
set_angle(angle + clamp(new_angle, -homing_turn_speed, homing_turn_speed))
-/obj/projectile/proc/set_homing_target(atom/target)
- if(!target || (!isturf(target) && !isturf(target.loc)))
- return FALSE
- homing = TRUE
- homing_target = target
- homing_offset_x = rand(homing_inaccuracy_min, homing_inaccuracy_max)
- homing_offset_y = rand(homing_inaccuracy_min, homing_inaccuracy_max)
- if(prob(50))
- homing_offset_x = -homing_offset_x
- if(prob(50))
- homing_offset_y = -homing_offset_y
+/// Attempts to force the projectile to move until the subsystem runs out of processing time, the projectile impacts something or gets frozen by timestop
+/obj/projectile/proc/process_hitscan()
+ if (isnull(movement_vector))
+ qdel(src)
+ return
+
+ while (isturf(loc) && !QDELETED(src))
+ process_movement(ICON_SIZE_ALL, hitscan = TRUE)
+ if (TICK_CHECK || paused || QDELETED(src))
+ return
+
+/// Creates (or wipes clean) list of tracer keypoints and creates a first point.
+/obj/projectile/proc/record_hitscan_start(offset = TRUE)
+ if (isnull(beam_points))
+ beam_points = list()
+ else
+ QDEL_LIST_ASSOC(beam_points)
+ QDEL_NULL(last_point)
+ last_point = RETURN_PRECISE_POINT(src)
+ // If moving, increment its position a bit to prevent it from looking like its coming from firer's ass
+ if (offset && !isnull(movement_vector))
+ last_point.increment(movement_vector.pixel_x * MUZZLE_EFFECT_PIXEL_INCREMENT, movement_vector.pixel_y * MUZZLE_EFFECT_PIXEL_INCREMENT)
+ beam_points[last_point] = null
+
+/// Creates a new keypoint in which the tracer will split
+/obj/projectile/proc/create_hitscan_point(impact = FALSE, tile_center = FALSE, broken_segment = FALSE)
+ var/atom/handle_atom = last_impact_turf || src
+ var/atom/used_point = tile_center ? loc : src
+ var/datum/point/new_point = impact ? new /datum/point(handle_atom.x, handle_atom.y, handle_atom.z, impact_x, impact_y) : RETURN_PRECISE_POINT(used_point)
+ if (!broken_segment)
+ beam_points[last_point] = new_point
+ beam_points[new_point] = null
+ last_point = new_point
+
+/obj/projectile/forceMove(atom/target)
+ if (!hitscan || isnull(beam_points))
+ return ..()
+ create_hitscan_point()
+ . = ..()
+ if(!isturf(loc) || !isturf(target) || !z || QDELETED(src) || deletion_queued)
+ return
+ if (isnull(movement_vector) || free_hitscan_forceMove)
+ return
+ // Create firing VFX and start a new chain because we most likely got teleported
+ generate_hitscan_tracers(impact = FALSE)
+ original_angle = angle
+ record_hitscan_start(offset = FALSE)
+
+/obj/projectile/proc/generate_hitscan_tracers(impact = TRUE)
+ if (!length(beam_points))
+ return
+
+ if (impact)
+ create_hitscan_point(impact = TRUE)
+
+ if (tracer_type)
+ // Stores all turfs we've created light effects on, in order to not dupe them if we enter a reflector loop
+ // Uses an assoc list for performance reasons
+ var/list/passed_turfs = list()
+ for (var/beam_point in beam_points)
+ generate_tracer(beam_point, passed_turfs)
+
+ if (muzzle_type)
+ var/datum/point/start_point = beam_points[1]
+ var/atom/movable/muzzle_effect = new muzzle_type(loc)
+ start_point.move_atom_to_src(muzzle_effect)
+ var/matrix/matrix = new
+ matrix.Turn(original_angle)
+ muzzle_effect.transform = matrix
+ muzzle_effect.color = color
+ muzzle_effect.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override || color)
+ QDEL_IN(muzzle_effect, PROJECTILE_TRACER_DURATION)
+
+ if (impact_type)
+ var/atom/movable/impact_effect = new impact_type(loc)
+ last_point.move_atom_to_src(impact_effect)
+ var/matrix/matrix = new
+ matrix.Turn(angle)
+ impact_effect.transform = matrix
+ impact_effect.color = color
+ impact_effect.set_light(impact_light_range, impact_light_intensity, impact_light_color_override || color)
+ QDEL_IN(impact_effect, PROJECTILE_TRACER_DURATION)
+
+/obj/projectile/proc/generate_tracer(datum/point/start_point, list/passed_turfs)
+ if (isnull(beam_points[start_point]))
+ return
+
+ var/datum/point/end_point = beam_points[start_point]
+ var/datum/point/midpoint = point_midpoint_points(start_point, end_point)
+ var/obj/effect/projectile/tracer/tracer_effect = new tracer_type(midpoint.return_turf())
+ tracer_effect.apply_vars(
+ angle_override = angle_between_points(start_point, end_point),
+ p_x = midpoint.pixel_x,
+ p_y = midpoint.pixel_y,
+ color_override = color,
+ scaling = pixel_length_between_points(start_point, end_point) / ICON_SIZE_ALL
+ )
+ SET_PLANE_EXPLICIT(tracer_effect, GAME_PLANE, src)
+
+ QDEL_IN(tracer_effect, PROJECTILE_TRACER_DURATION)
+
+ if (!hitscan_light_range || !hitscan_light_intensity)
+ return
+
+ var/list/turf/light_line = get_line(start_point.return_turf(), end_point.return_turf())
+ for (var/turf/light_turf as anything in light_line)
+ if (passed_turfs[light_turf])
+ continue
+ passed_turfs[light_turf] = TRUE
+ QDEL_IN(new /obj/effect/abstract/projectile_lighting(light_turf, hitscan_light_color_override || color, hitscan_light_range, hitscan_light_intensity), PROJECTILE_TRACER_DURATION)
/**
* Aims the projectile at a target.
@@ -950,29 +1194,50 @@
* - deviation: (Optional) How the trajectory should deviate from the target in degrees.
* - //Spread is FORCED!
*/
-/obj/projectile/proc/preparePixelProjectile(atom/target, atom/source, list/modifiers = null, deviation = 0)
+/obj/projectile/proc/aim_projectile(atom/target, atom/source, list/modifiers = null, deviation = 0)
if(!(isnull(modifiers) || islist(modifiers)))
- stack_trace("WARNING: Projectile [type] fired with non-list modifiers, likely was passed click params.")
+ stack_trace("WARNING: Projectile [type] fired with non-list modifiers, likely was passed click params. Modifiers were the following: [modifiers]")
modifiers = null
var/turf/source_loc = get_turf(source)
var/turf/target_loc = get_turf(target)
+
if(isnull(source_loc))
stack_trace("WARNING: Projectile [type] fired from nullspace.")
qdel(src)
return FALSE
- trajectory_ignore_forcemove = TRUE
- forceMove(source_loc)
- trajectory_ignore_forcemove = FALSE
+ if(fired)
+ stack_trace("WARNING: Projectile [type] was aimed after already being fired.")
+ qdel(src)
+ return FALSE
+ free_hitscan_forceMove = TRUE
+ forceMove(source_loc)
starting = source_loc
pixel_x = source.pixel_x
pixel_y = source.pixel_y
original = target
+
+ // Trim off excess pixel_x/y by converting them into turf offset
+ if (abs(pixel_x) > ICON_SIZE_X / 2)
+ for (var/i in 1 to floor(abs(pixel_x) + ICON_SIZE_X / 2) / ICON_SIZE_X)
+ var/turf/new_loc = get_step(source_loc, pixel_x > 0 ? EAST : WEST)
+ if (!istype(new_loc))
+ break
+ source_loc = new_loc
+ pixel_x = pixel_x % (ICON_SIZE_X / 2)
+
+ if (abs(pixel_y) > ICON_SIZE_Y / 2)
+ for (var/i in 1 to floor(abs(pixel_y) + ICON_SIZE_Y / 2) / ICON_SIZE_Y)
+ var/turf/new_loc = get_step(source_loc, pixel_y > 0 ? NORTH : SOUTH)
+ if (!istype(new_loc))
+ break
+ source_loc = new_loc
+ pixel_y = pixel_y % (ICON_SIZE_X / 2)
+
if(length(modifiers))
var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, target_loc && target, modifiers)
-
p_x = calculated[2]
p_y = calculated[3]
set_angle(calculated[1] + deviation)
@@ -1031,63 +1296,11 @@
//Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average.
var/list/screenview = view_to_pixels(user.client.view)
- var/ox = round(screenview[1] / 2) - user.client.pixel_x //"origin" x
- var/oy = round(screenview[2] / 2) - user.client.pixel_y //"origin" y
+ var/ox = round(screenview[1] * 0.5) - user.client.pixel_x //"origin" x
+ var/oy = round(screenview[2] * 0.5) - user.client.pixel_y //"origin" y
angle = ATAN2(tx - oy, ty - ox)
return list(angle, p_x, p_y)
-/obj/projectile/Destroy()
- if(hitscan)
- finalize_hitscan_and_generate_tracers()
- STOP_PROCESSING(SSprojectiles, src)
- cleanup_beam_segments()
- firer = null
- original = null
- if(trajectory)
- QDEL_NULL(trajectory)
- return ..()
-
-/obj/projectile/proc/cleanup_beam_segments()
- QDEL_LIST_ASSOC(beam_segments)
- beam_segments = list()
- QDEL_NULL(beam_index)
-
-/obj/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
- if(trajectory && beam_index)
- var/datum/point/point_cache = trajectory.copy_to()
- beam_segments[beam_index] = point_cache
- generate_hitscan_tracers(null, null, impacting)
-
-/obj/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 3, impacting = TRUE)
- if(!length(beam_segments))
- return
- if(tracer_type)
- var/tempref = REF(src)
- for(var/datum/point/beam_point in beam_segments)
- generate_tracer_between_points(beam_point, beam_segments[beam_point], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity, tempref)
- if(muzzle_type && duration > 0)
- var/datum/point/beam_point = beam_segments[1]
- var/atom/movable/thing = new muzzle_type
- beam_point.move_atom_to_src(thing)
- var/matrix/matrix = new
- matrix.Turn(original_angle)
- thing.transform = matrix
- thing.color = color
- thing.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override? muzzle_flash_color_override : color)
- QDEL_IN(thing, duration)
- if(impacting && impact_type && duration > 0)
- var/datum/point/beam_point = beam_segments[beam_segments[beam_segments.len]]
- var/atom/movable/thing = new impact_type
- beam_point.move_atom_to_src(thing)
- var/matrix/matrix = new
- matrix.Turn(angle)
- thing.transform = matrix
- thing.color = color
- thing.set_light(impact_light_range, impact_light_intensity, impact_light_color_override? impact_light_color_override : color)
- QDEL_IN(thing, duration)
- if(cleanup)
- cleanup_beam_segments()
-
/obj/projectile/experience_pressure_difference()
return
@@ -1126,15 +1339,11 @@
firer = hit_atom
yo = new_y - current_tile.y
xo = new_x - current_tile.x
- var/new_angle_s = angle + rand(120,240)
+ var/new_angle_s = angle + rand(120, 240)
while(new_angle_s > 180) // Translate to regular projectile degrees
new_angle_s -= 360
set_angle(new_angle_s)
-#undef MOVES_HITSCAN
-#undef MUZZLE_EFFECT_PIXEL_INCREMENT
-#undef MAX_RANGE_HIT_PRONE_TARGETS
-
/// Fire a projectile from this atom at another atom
/atom/proc/fire_projectile(projectile_type, atom/target, sound, firer, list/ignore_targets = list())
if (!isnull(sound))
@@ -1150,7 +1359,7 @@
bullet.yo = target.y - startloc.y
bullet.xo = target.x - startloc.x
bullet.original = target
- bullet.preparePixelProjectile(target, src)
+ bullet.aim_projectile(target, src)
bullet.fire()
return bullet
@@ -1167,3 +1376,6 @@
if(!isnull(embed_data) && !GLOB.embed_by_type[embed_data.type])
qdel(embed_data)
embed_data = ispath(embed) ? get_embed_by_type(armor) : embed
+
+#undef MOVES_HITSCAN
+#undef MUZZLE_EFFECT_PIXEL_INCREMENT
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 355221eab8620..edbb0535ac640 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -15,7 +15,7 @@
light_color = COLOR_SOFT_RED
ricochets_max = 50 //Honk!
ricochet_chance = 80
- reflectable = REFLECT_NORMAL
+ reflectable = TRUE
wound_bonus = -20
bare_wound_bonus = 10
@@ -45,7 +45,7 @@
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
damage = 9
wound_bonus = -40
- speed = 1.1
+ speed = 0.9
//overclocked laser, does a bit more damage but has much higher wound power (-0 vs -20)
/obj/projectile/beam/laser/hellfire
@@ -53,7 +53,7 @@
icon_state = "hellfire"
wound_bonus = 0
damage = 30
- speed = 0.6 // higher power = faster, that's how light works right
+ speed = 1.6
light_color = "#FF969D"
/obj/projectile/beam/laser/heavylaser
diff --git a/code/modules/projectiles/projectile/bullets/_incendiary.dm b/code/modules/projectiles/projectile/bullets/_incendiary.dm
index 2e526adb05311..d5c4dc93c5bfa 100644
--- a/code/modules/projectiles/projectile/bullets/_incendiary.dm
+++ b/code/modules/projectiles/projectile/bullets/_incendiary.dm
@@ -35,7 +35,7 @@
suppressed = SUPPRESSED_VERY
damage_type = BURN
armor_flag = BOMB
- speed = 1.2
+ speed = 0.8
wound_bonus = 30
bare_wound_bonus = 30
wound_falloff_tile = -4
diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm
index 63e491e2f290d..bc64363a2d33f 100644
--- a/code/modules/projectiles/projectile/bullets/pistol.dm
+++ b/code/modules/projectiles/projectile/bullets/pistol.dm
@@ -79,7 +79,7 @@
icon_state = "smartgun"
damage = 10
embed_type = /datum/embed_data/bullet_c160smart
- speed = 2
+ speed = 0.5
homing_turn_speed = 5
homing_inaccuracy_min = 4
homing_inaccuracy_max = 10
diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm
index e9d6389c89d0d..6513be9cfb7c8 100644
--- a/code/modules/projectiles/projectile/bullets/revolver.dm
+++ b/code/modules/projectiles/projectile/bullets/revolver.dm
@@ -48,7 +48,6 @@
name = ".38 Rubber bullet"
damage = 10
stamina = 30
- weak_against_armour = TRUE
ricochets_max = 6
ricochet_incidence_leeway = 0
ricochet_chance = 130
@@ -57,6 +56,16 @@
sharpness = NONE
embed_type = null
+/obj/projectile/bullet/c38/match/true
+ name = ".38 True Strike bullet"
+ damage = 15
+ ricochet_auto_aim_range = 3
+ ricochet_auto_aim_angle = 100
+ ricochet_incidence_leeway = 0
+ ricochet_shoots_firer = FALSE
+ shrapnel_type = null
+ embed_type = null
+
// premium .38 ammo from cargo, weak against armor, lower base damage, but excellent at embedding and causing slice wounds at close range
/obj/projectile/bullet/c38/dumdum
name = ".38 DumDum bullet"
@@ -106,9 +115,9 @@
/obj/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(iscarbon(target))
- var/mob/living/carbon/M = target
- M.adjust_fire_stacks(6)
- M.ignite_mob()
+ var/mob/living/carbon/criminal_scum = target
+ criminal_scum.adjust_fire_stacks(6)
+ criminal_scum.ignite_mob()
/obj/projectile/bullet/c38/iceblox //see /obj/projectile/temp for the original code
name = ".38 Iceblox bullet"
@@ -119,24 +128,24 @@
/obj/projectile/bullet/c38/iceblox/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(isliving(target))
- var/mob/living/M = target
- M.adjust_bodytemperature(((100-blocked)/100)*(temperature - M.bodytemperature))
+ var/mob/living/criminal_scum = target
+ criminal_scum.adjust_bodytemperature(((100-blocked)/100)*(temperature - criminal_scum.bodytemperature))
// .357 (Syndie Revolver)
-/obj/projectile/bullet/a357
+/obj/projectile/bullet/c357
name = ".357 bullet"
damage = 60
wound_bonus = -30
-/obj/projectile/bullet/a357/phasic
+/obj/projectile/bullet/c357/phasic
name = ".357 phasic bullet"
icon_state = "gaussphase"
damage = 35
armour_penetration = 100
projectile_phasing = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS
-/obj/projectile/bullet/a357/heartseeker
+/obj/projectile/bullet/c357/heartseeker
name = ".357 heartseeker bullet"
icon_state = "gauss"
damage = 50
@@ -144,7 +153,7 @@
homing_turn_speed = 120
// admin only really, for ocelot memes
-/obj/projectile/bullet/a357/match
+/obj/projectile/bullet/c357/match
name = ".357 match bullet"
ricochets_max = 5
ricochet_chance = 140
@@ -152,3 +161,32 @@
ricochet_auto_aim_range = 6
ricochet_incidence_leeway = 80
ricochet_decay_chance = 1
+
+//gatfruit
+/obj/projectile/bullet/pea
+ name = "pea bullet"
+ damage = 15
+ weak_against_armour = TRUE
+ ricochets_max = 3
+ ricochet_chance = 100
+ icon_state = "pea"
+
+/obj/projectile/bullet/pea/Initialize(mapload)
+ . = ..()
+ create_reagents(100, NO_REACT) //same as the fruit itself, wont ever hit that much though i believe
+
+/obj/projectile/bullet/pea/on_hit(mob/living/carbon/target, blocked = 0, pierce_hit)
+ if(istype(target) && blocked != 100)
+ if(iszombie(target)) // https://www.youtube.com/watch?v=ssZoq1eUK-s
+ target.adjustBruteLoss(15)
+ if(target.can_inject(target_zone = def_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
+ ..()
+ reagents.trans_to(target, reagents.total_volume, methods = INJECT)
+ return BULLET_ACT_HIT
+ blocked = 100
+ target.visible_message(span_danger("\The [src] is deflected!"), span_userdanger("You are protected against \the [src]!"))
+ . = ..()
+ if(reagents & NO_REACT) //first impact on a noncarbon
+ reagents.flags &= ~(NO_REACT)
+ reagents.handle_reactions()
+
diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm
index 4caec924625e1..1302aea9315a4 100644
--- a/code/modules/projectiles/projectile/bullets/rifle.dm
+++ b/code/modules/projectiles/projectile/bullets/rifle.dm
@@ -67,7 +67,7 @@
name = "rebar"
icon_state = "rebar"
damage = 30
- speed = 0.4
+ speed = 2.5
dismemberment = 1 //because a 1 in 100 chance to just blow someones arm off is enough to be cool but also not enough to be reliable
armour_penetration = 10
wound_bonus = -20
@@ -93,7 +93,6 @@
name = "rebar"
icon_state = "rebar"
damage = 45
- speed = 0.4
dismemberment = 2 //It's a budget sniper rifle.
armour_penetration = 20 //A bit better versus armor. Gets past anti laser armor or a vest, but doesnt wound proc on sec armor.
wound_bonus = 10
@@ -116,7 +115,7 @@
name = "zaukerite shard"
icon_state = "rebar_zaukerite"
damage = 60
- speed = 0.6
+ speed = 1.6
dismemberment = 10
damage_type = TOX
eyeblur = 5
@@ -141,7 +140,7 @@
name = "metallic hydrogen bolt"
icon_state = "rebar_hydrogen"
damage = 35
- speed = 0.6
+ speed = 1.6
projectile_piercing = PASSMOB|PASSVEHICLE
projectile_phasing = ~(PASSMOB|PASSVEHICLE)
max_pierces = 3
@@ -172,7 +171,6 @@
name = "healium bolt"
icon_state = "rebar_healium"
damage = 0
- speed = 0.4
dismemberment = 0
damage_type = BRUTE
armour_penetration = 100
@@ -199,7 +197,6 @@
name = "supermatter bolt"
icon_state = "rebar_supermatter"
damage = 0
- speed = 0.4
dismemberment = 0
damage_type = TOX
embed_type = null
diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm
index a2c11f76d4789..3576c9e5a12d1 100644
--- a/code/modules/projectiles/projectile/bullets/shotgun.dm
+++ b/code/modules/projectiles/projectile/bullets/shotgun.dm
@@ -94,7 +94,7 @@
stamina = 11
sharpness = NONE
embed_type = null
- speed = 1.2
+ speed = 0.8
stamina_falloff_tile = -0.25
ricochets_max = 4
ricochet_chance = 120
@@ -106,7 +106,7 @@
/// Subtracted from the ricochet chance for each tile traveled
var/tile_dropoff_ricochet = 4
-/obj/projectile/bullet/pellet/shotgun_rubbershot/Range()
+/obj/projectile/bullet/pellet/shotgun_rubbershot/reduce_range()
if(ricochet_chance > 0)
ricochet_chance -= tile_dropoff_ricochet
. = ..()
@@ -124,7 +124,7 @@
wound_bonus = -25
bare_wound_bonus = 50
wound_falloff_tile = -10
- speed = 0.8
+ speed = 1.2
ricochet_decay_chance = 0.6
ricochet_decay_damage = 0.3
demolition_mod = 10
diff --git a/code/modules/projectiles/projectile/bullets/sniper.dm b/code/modules/projectiles/projectile/bullets/sniper.dm
index 6118d90644d9e..44caa2ebe2162 100644
--- a/code/modules/projectiles/projectile/bullets/sniper.dm
+++ b/code/modules/projectiles/projectile/bullets/sniper.dm
@@ -2,7 +2,7 @@
/obj/projectile/bullet/p50
name =".50 BMG bullet"
- speed = 0.4
+ speed = 2.5
range = 400 // Enough to travel from one corner of the Z to the opposite corner and then some.
damage = 70
paralyze = 100
@@ -87,7 +87,7 @@
name = ".50 BMG aggression dissuasion round"
icon_state = "gaussstrong"
damage = 25
- speed = 0.3
+ speed = 3
range = 16
/obj/projectile/bullet/p50/marksman
diff --git a/code/modules/projectiles/projectile/bullets/special.dm b/code/modules/projectiles/projectile/bullets/special.dm
index c1299b3bed0f0..cd1439cbb01ae 100644
--- a/code/modules/projectiles/projectile/bullets/special.dm
+++ b/code/modules/projectiles/projectile/bullets/special.dm
@@ -79,8 +79,7 @@
/obj/projectile/bullet/coin
name = "marksman coin"
icon_state = "coinshot"
- pixel_speed_multiplier = 0.333
- speed = 1
+ speed = 0.33
damage = 5
color = "#dbdd4c"
@@ -100,7 +99,7 @@
/obj/projectile/bullet/coin/Initialize(mapload, turf/the_target, mob/original_firer)
src.original_firer = original_firer
target_turf = the_target
- range = (get_dist(original_firer, target_turf) + 3) * 3 // 3 tiles past the origin (the *3 is because Range() ticks 3 times a tile because of the slower speed)
+ range = (get_dist(original_firer, target_turf) + 3) * 3 // 3 tiles past the origin (the *3 is because reduce_range() ticks 3 times a tile because of the slower speed)
. = ..()
@@ -167,7 +166,7 @@
if(Adjacent(current_turf, target_turf))
new_splitshot.fire(get_angle(current_turf, target_turf), direct_target = next_target)
else
- new_splitshot.preparePixelProjectile(next_target, get_turf(src))
+ new_splitshot.aim_projectile(next_target, get_turf(src))
new_splitshot.fire()
if(istype(next_target, /obj/projectile/bullet/coin)) // handle further splitshot checks
diff --git a/code/modules/projectiles/projectile/energy/_energy.dm b/code/modules/projectiles/projectile/energy/_energy.dm
index 8527041e86006..0985691a5fb72 100644
--- a/code/modules/projectiles/projectile/energy/_energy.dm
+++ b/code/modules/projectiles/projectile/energy/_energy.dm
@@ -4,5 +4,5 @@
damage = 0
damage_type = BURN
armor_flag = ENERGY
- reflectable = REFLECT_NORMAL
+ reflectable = TRUE
impact_effect_type = /obj/effect/temp_visual/impact_effect/energy
diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm
index b82ff478a05b4..08c3569028664 100644
--- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm
+++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm
@@ -6,7 +6,7 @@
armor_flag = ENERGY
damage_type = TOX
damage = 10
- speed = 0.4
+ speed = 2.5
hitsound = 'sound/items/weapons/emitter2.ogg'
impact_type = /obj/effect/projectile/impact/xray
var/static/list/particle_colors = list(
@@ -29,7 +29,7 @@
if (ishuman(target))
SSradiation.irradiate(target)
- ..()
+ return ..()
/atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction.
var/obj/projectile/energy/nuclear_particle/P = new /obj/projectile/energy/nuclear_particle(src)
diff --git a/code/modules/projectiles/projectile/energy/photon.dm b/code/modules/projectiles/projectile/energy/photon.dm
index 5210737a19801..00ae9281af7b6 100644
--- a/code/modules/projectiles/projectile/energy/photon.dm
+++ b/code/modules/projectiles/projectile/energy/photon.dm
@@ -1,4 +1,4 @@
-#define MULTIPLY_PIXELSPEED 0.8
+#define MULTIPLY_SPEED 0.8
/obj/projectile/energy/photon
name = "photon bolt"
@@ -9,7 +9,6 @@
damage = 5 //It's literally a weaker tesla bolt, which is already weak. Don't worry, we'll fix that.
range = 20
speed = 1
- pixel_speed_multiplier = 1
projectile_piercing = PASSMOB
light_color = LIGHT_COLOR_DEFAULT
light_system = OVERLAY_LIGHT
@@ -44,9 +43,9 @@
if(prob(40))
new /obj/effect/hotspot(arrived)
-/obj/projectile/energy/photon/Range()
+/obj/projectile/energy/photon/reduce_range()
. = ..()
- pixel_speed_multiplier *= MULTIPLY_PIXELSPEED
+ speed *= MULTIPLY_SPEED
/obj/projectile/energy/photon/on_range()
do_sparks(rand(4, 9), FALSE, src)
@@ -55,4 +54,4 @@
flashed_mob.flash_act()
return ..()
-#undef MULTIPLY_PIXELSPEED
+#undef MULTIPLY_SPEED
diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm
index 9dfe043a01565..91677dab2fc8d 100644
--- a/code/modules/projectiles/projectile/energy/tesla.dm
+++ b/code/modules/projectiles/projectile/energy/tesla.dm
@@ -29,7 +29,7 @@
name = "tesla orb"
icon_state = "ice_1"
damage = 0
- speed = 1.5
+ speed = 0.66
var/shock_damage = 5
/obj/projectile/energy/tesla_cannon/on_hit(atom/target, blocked = 0, pierce_hit)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 5c050bdebb6c2..c7f457ee427a1 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -37,7 +37,7 @@
if(isliving(target))
var/mob/living/victim = target
if(victim.mob_biotypes & MOB_UNDEAD) //negative energy heals the undead
- if(victim.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE)) // This heals suicides
+ if(victim.revive(ADMIN_HEAL_ALL & ~HEAL_REFRESH_ORGANS , force_grab_ghost = TRUE)) // This heals suicides
victim.grab_ghost(force = TRUE)
to_chat(victim, span_notice("You rise with a start, you're undead!!!"))
else if(victim.stat != DEAD)
@@ -68,7 +68,7 @@
victim.death()
return
- if(victim.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE)) // This heals suicides
+ if(victim.revive(ADMIN_HEAL_ALL & ~HEAL_REFRESH_ORGANS , force_grab_ghost = TRUE)) // This heals suicides
to_chat(victim, span_notice("You rise with a start, you're alive!!!"))
else if(victim.stat != DEAD)
to_chat(victim, span_notice("You feel great!"))
@@ -238,7 +238,8 @@
/obj/projectile/magic/locker/Destroy()
locker_suck = FALSE
- RemoveElement(/datum/element/connect_loc, projectile_connections) //We do this manually so the forcemoves don't "hit" us. This behavior is kinda dumb, someone refactor this
+ if (last_tick_turf)
+ UnregisterSignal(last_tick_turf, COMSIG_ATOM_ENTERED)
for(var/atom/movable/AM in contents)
AM.forceMove(get_turf(src))
. = ..()
@@ -400,8 +401,10 @@
var/trail_icon = 'icons/effects/magic.dmi'
/// The icon state the trail uses.
var/trail_icon_state = "arrow"
+ /// Can we spawn a trail effect again?
+ COOLDOWN_DECLARE(trail_cooldown)
-/obj/projectile/magic/aoe/Range()
+/obj/projectile/magic/aoe/reduce_range()
if(trigger_range >= 1)
for(var/mob/living/nearby_guy in range(trigger_range, get_turf(src)))
if(nearby_guy.stat == DEAD)
@@ -413,38 +416,31 @@
return ..()
-/obj/projectile/magic/aoe/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
+/obj/projectile/magic/aoe/prehit_pierce(atom/target)
if(can_only_hit_target && target != original)
- return FALSE
+ return PROJECTILE_PIERCE_PHASE
return ..()
-/obj/projectile/magic/aoe/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
- . = ..()
- if(trail)
- create_trail()
-
-/// Creates and handles the trail that follows the projectile.
-/obj/projectile/magic/aoe/proc/create_trail()
- if(!trajectory)
+/obj/projectile/magic/aoe/move_animate(animate_x, animate_y, animate_time = world.tick_lag, deleting = FALSE)
+ if(!trail || !movement_vector || deleting || !COOLDOWN_FINISHED(src, trail_cooldown))
return
- var/datum/point/vector/previous = trajectory.return_vector_after_increments(1, -1)
- var/obj/effect/overlay/trail = new /obj/effect/overlay(previous.return_turf())
- trail.pixel_x = previous.return_px()
- trail.pixel_y = previous.return_py()
- trail.icon = trail_icon
- trail.icon_state = trail_icon_state
- //might be changed to temp overlay
- trail.set_density(FALSE)
- trail.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- QDEL_IN(trail, trail_lifespan)
+ var/obj/effect/overlay/trail_effect = new /obj/effect/overlay(loc)
+ trail_effect.pixel_x = pixel_x
+ trail_effect.pixel_y = pixel_y
+ trail_effect.icon = trail_icon
+ trail_effect.icon_state = trail_icon_state
+ trail_effect.set_density(FALSE)
+ trail_effect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ QDEL_IN(trail_effect, trail_lifespan)
+ COOLDOWN_START(src, trail_cooldown, trail_lifespan)
/obj/projectile/magic/aoe/lightning
name = "lightning bolt"
icon_state = "tesla_projectile" //Better sprites are REALLY needed and appreciated!~
damage = 15
damage_type = BURN
- speed = 0.3
+ speed = 3.5
/// The power of the zap itself when it electrocutes someone
var/zap_power = 2e4
@@ -513,8 +509,7 @@
name = "magic missile"
icon_state = "magicm"
range = 100
- speed = 1
- pixel_speed_multiplier = 0.2
+ speed = 0.2
trigger_range = 0
can_only_hit_target = TRUE
paralyze = 6 SECONDS
@@ -540,8 +535,7 @@
antimagic_flags = MAGIC_RESISTANCE_HOLY
ignored_factions = list(FACTION_CULT)
range = 105
- speed = 1
- pixel_speed_multiplier = 1/7
+ speed = 0.15
/obj/projectile/magic/aoe/juggernaut/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
diff --git a/code/modules/projectiles/projectile/special/curse.dm b/code/modules/projectiles/projectile/special/curse.dm
index 5f1f1017e836e..8d1030c8c93ef 100644
--- a/code/modules/projectiles/projectile/special/curse.dm
+++ b/code/modules/projectiles/projectile/special/curse.dm
@@ -10,7 +10,7 @@
damage_type = BURN
damage = 10
paralyze = 20
- speed = 2
+ speed = 0.5
range = 16
var/datum/beam/arm
var/handedness = 0
diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm
index 43d7968b9ae72..ce95ff585e07e 100644
--- a/code/modules/projectiles/projectile/special/temperature.dm
+++ b/code/modules/projectiles/projectile/special/temperature.dm
@@ -36,6 +36,13 @@
icon_state = "lava"
temperature = 100 // Raise the body temp by 100 points
+/obj/projectile/temp/hot/on_hit(atom/target, blocked = FALSE, pierce_hit)
+ . = ..()
+
+ if(isliving(target))
+ var/mob/living/living_target = target
+ living_target.adjust_wet_stacks(-10)
+
/obj/projectile/temp/cryo
name = "cryo beam"
range = 9
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 7716784e4b438..a009ab35dd1f3 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -9,7 +9,6 @@
circuit = /obj/item/circuitboard/machine/reagentgrinder
pass_flags = PASSTABLE
resistance_flags = ACID_PROOF
- interaction_flags_machine = parent_type::interaction_flags_machine | INTERACT_MACHINE_OFFLINE
anchored_tabletop_offset = 8
/// The maximum weight of items this grinder can hold
@@ -90,10 +89,14 @@
for(var/obj/item/target in src)
if((target in component_parts) || target == beaker)
continue
- to_process["[target.name]"] += 1
+ var/amount = 1
+ if (isstack(target))
+ var/obj/item/stack/target_stack = target
+ amount = target_stack.amount
+ to_process["[target.name]"] += amount
total_weight += target.w_class
if(to_process.len)
- . += span_notice("Currently holding.")
+ . += span_notice("Currently holding:")
for(var/target_name as anything in to_process)
. += span_notice("[to_process[target_name]] [target_name]")
. += span_notice("Filled to [round((total_weight / maximum_weight) * 100)]% capacity.")
@@ -269,45 +272,36 @@
return NONE
/obj/machinery/reagentgrinder/wrench_act(mob/living/user, obj/item/tool)
- if(user.combat_mode)
- return NONE
+ . = NONE
- var/tool_result = ITEM_INTERACT_BLOCKING
if(operating)
balloon_alert(user, "still operating!")
- return tool_result
+ return ITEM_INTERACT_BLOCKING
if(default_unfasten_wrench(user, tool) == SUCCESSFUL_UNFASTEN)
update_appearance(UPDATE_OVERLAYS)
- tool_result = ITEM_INTERACT_SUCCESS
- return tool_result
+ return ITEM_INTERACT_SUCCESS
/obj/machinery/reagentgrinder/screwdriver_act(mob/living/user, obj/item/tool)
- if(user.combat_mode)
- return NONE
+ . = NONE
- var/tool_result = ITEM_INTERACT_BLOCKING
if(operating)
balloon_alert(user, "still operating!")
- return tool_result
+ return ITEM_INTERACT_BLOCKING
if(default_deconstruction_screwdriver(user, icon_state, icon_state, tool))
update_appearance(UPDATE_OVERLAYS)
- tool_result = ITEM_INTERACT_SUCCESS
- return tool_result
+ return ITEM_INTERACT_SUCCESS
/obj/machinery/reagentgrinder/crowbar_act(mob/living/user, obj/item/tool)
- if(user.combat_mode)
- return NONE
+ . = NONE
- var/tool_result = ITEM_INTERACT_BLOCKING
if(operating)
balloon_alert(user, "still operating!")
- return tool_result
+ return ITEM_INTERACT_BLOCKING
if(default_deconstruction_crowbar(tool))
- tool_result = ITEM_INTERACT_SUCCESS
- return tool_result
+ return ITEM_INTERACT_SUCCESS
/obj/machinery/reagentgrinder/proc/on_storage_dump(datum/source, datum/storage/storage, mob/user)
SIGNAL_HANDLER
@@ -324,9 +318,7 @@
/obj/machinery/reagentgrinder/attack_hand_secondary(mob/user, list/modifiers)
. = ..()
- if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
- return
- if(operating || !can_interact(user) || !user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH))
+ if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN || !check_interactable(user))
return
replace_beaker(user)
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
@@ -338,13 +330,11 @@
return attack_hand_secondary(user, modifiers)
/obj/machinery/reagentgrinder/ui_interact(mob/user)
- . = ..()
-
- //some interaction sanity checks
- if(!anchored || operating || !can_interact(user) || !user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH))
+ //sanity check
+ if(!user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH))
return
+
var/static/radial_eject = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_eject")
- var/static/radial_mix = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_mix")
//create list of options available
var/list/options = list()
@@ -353,7 +343,7 @@
if((to_process in component_parts) || to_process == beaker)
continue
- if(!QDELETED(beaker) && !beaker.reagents.holder_full() && is_operational && anchored)
+ if(is_operational && anchored && !QDELETED(beaker) && !beaker.reagents.holder_full())
var/static/radial_grind = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_grind")
options["grind"] = radial_grind
@@ -362,16 +352,17 @@
options["eject"] = radial_eject
break
+
//eject action if we have a beaker
if(!QDELETED(beaker))
options["eject"] = radial_eject
//mix reagents present inside
- if(beaker?.reagents.total_volume && is_operational && anchored)
+ if(is_operational && anchored && beaker.reagents.total_volume)
+ var/static/radial_mix = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_mix")
options["mix"] = radial_mix
+
//examine action if Ai is trying to see whats up
if(HAS_AI_ACCESS(user))
- if(machine_stat & NOPOWER)
- return
var/static/radial_examine = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_examine")
options["examine"] = radial_examine
@@ -385,16 +376,18 @@
)
if(!choice)
return
+
+ //act on choice
switch(choice)
if("eject")
replace_beaker(user)
dump_inventory_contents()
if("grind", "juice")
- operate_for(60 DECISECONDS, choice == "juice", user)
+ operate_for(6 SECONDS, choice == "juice", user)
if("mix")
- mix(50 DECISECONDS, user)
+ mix(5 SECONDS, user)
if("examine")
- to_chat(user, examine_block(span_infoplain("[examine(user)]")))
+ to_chat(user, examine_block(jointext(examine(user), "\n")))
/**
* Checks if the radial menu can interact with this machine
@@ -405,13 +398,7 @@
/obj/machinery/reagentgrinder/proc/check_interactable(mob/user)
PRIVATE_PROC(TRUE)
- if(!can_interact(user))
- return FALSE
-
- if(!anchored || operating || !user.can_perform_action(src, ALLOW_SILICON_REACH))
- return FALSE
-
- return TRUE
+ return !operating && user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH)
/**
* Grinds/Juices all contents inside the grinder
@@ -424,10 +411,14 @@
/obj/machinery/reagentgrinder/proc/operate_for(time, juicing = FALSE, mob/user)
PRIVATE_PROC(TRUE)
+ if(!anchored || !is_operational || QDELETED(beaker) || beaker.reagents.holder_full())
+ operating = FALSE
+ return
+ operating = TRUE
+
var/duration = time / speed
Shake(pixelshiftx = 1, pixelshifty = 0, duration = duration)
- operating = TRUE
if(!juicing)
playsound(src, 'sound/machines/blender.ogg', 50, TRUE)
else
@@ -482,10 +473,15 @@
/obj/machinery/reagentgrinder/proc/mix(time, mob/user)
PRIVATE_PROC(TRUE)
+ if(!anchored || !is_operational || QDELETED(beaker) || !beaker.reagents.total_volume)
+ operating = FALSE
+ return
+ operating = TRUE
+
var/duration = time / speed
Shake(pixelshiftx = 1, pixelshifty = 0, duration = duration)
- operating = TRUE
+
playsound(src, 'sound/machines/juicer.ogg', 20, TRUE)
addtimer(CALLBACK(src, PROC_REF(mix_complete), duration), duration)
@@ -499,8 +495,7 @@
/obj/machinery/reagentgrinder/proc/mix_complete(duration)
PRIVATE_PROC(TRUE)
- if(QDELETED(beaker) || beaker.reagents.total_volume <= 0)
- operating = FALSE
+ if(QDELETED(src) || !is_operational)
return
//Recipe to make Butter
@@ -512,13 +507,12 @@
tasty_butter.reagents.set_all_reagents_purity(purity)
//Recipe to make Mayonnaise
- if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk))
- beaker.reagents.convert_reagent(/datum/reagent/consumable/eggyolk, /datum/reagent/consumable/mayonnaise)
+ beaker.reagents.convert_reagent(/datum/reagent/consumable/eggyolk, /datum/reagent/consumable/mayonnaise)
//Recipe to make whipped cream
- if (beaker.reagents.has_reagent(/datum/reagent/consumable/cream))
- beaker.reagents.convert_reagent(/datum/reagent/consumable/cream, /datum/reagent/consumable/whipped_cream)
+ beaker.reagents.convert_reagent(/datum/reagent/consumable/cream, /datum/reagent/consumable/whipped_cream)
//power consumed based on the ratio of total reagents mixed
use_energy((active_power_usage * (duration / 1 SECONDS)) * (beaker.reagents.total_volume / beaker.reagents.maximum_volume))
+
operating = FALSE
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 4ed21b0e29871..7176b4c13370e 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -82,7 +82,7 @@
var/purge_multiplier = 1
///The default reagent container for the reagent, used for icon generation
- var/obj/item/reagent_containers/default_container = /obj/item/reagent_containers/cup/bottle
+ var/obj/default_container = /obj/item/reagent_containers/cup/bottle
// Used for restaurants.
///The amount a robot will pay for a glass of this (20 units but can be higher if you pour more, be frugal!)
@@ -129,10 +129,10 @@
exposed_mob.reagents.add_reagent(type, amount, added_purity = purity)
/// Applies this reagent to an [/obj]
-/datum/reagent/proc/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/proc/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
SHOULD_CALL_PARENT(TRUE)
- return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_OBJ, exposed_obj, reac_volume)
+ return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_OBJ, exposed_obj, reac_volume, methods, show_message)
/// Applies this reagent to a [/turf]
/datum/reagent/proc/expose_turf(turf/exposed_turf, reac_volume)
diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
index 1f0df3ca51a89..4b4843c4dc908 100644
--- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
@@ -77,7 +77,7 @@
if(3) //VICTORY ROYALE
to_chat(affected_mob, span_hierophant("You win, and the malevolent spirits fade away as well as your wounds."))
affected_mob.client.give_award(/datum/award/achievement/jobs/helbitaljanken, affected_mob)
- affected_mob.revive(HEAL_ALL)
+ affected_mob.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS)
holder.del_reagent(type)
return
diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
index 7866b2eb37f14..76c88142c92f8 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
@@ -81,7 +81,7 @@
if(liver.apply_organ_damage(((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/150)))
return UPDATE_MOB_HEALTH
-/datum/reagent/consumable/ethanol/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/consumable/ethanol/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
if(istype(exposed_obj, /obj/item/paper))
var/obj/item/paper/paperaffected = exposed_obj
paperaffected.clear_paper()
@@ -183,7 +183,7 @@
. = ..()
drinker.set_dizzy_if_lower(10 SECONDS * REM * seconds_per_tick)
drinker.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
- drinker.AdjustSleeping(-40 * REM * seconds_per_tick)
+ drinker.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
drinker.set_jitter_if_lower(10 SECONDS)
@@ -231,7 +231,7 @@
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
drinker.adjust_drowsiness(-14 SECONDS * REM * seconds_per_tick)
- drinker.AdjustSleeping(-40 * REM * seconds_per_tick)
+ drinker.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
drinker.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, drinker.get_body_temp_normal())
if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
drinker.set_jitter_if_lower(10 SECONDS)
@@ -1411,7 +1411,7 @@
if(52 to 201)
drinker.Sleeping(100 * REM * seconds_per_tick)
if(202 to INFINITY)
- drinker.AdjustSleeping(40 * REM * seconds_per_tick)
+ drinker.AdjustSleeping(4 SECONDS * REM * seconds_per_tick)
if(drinker.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
@@ -2655,7 +2655,7 @@
var/mob/living/carbon/exposed_carbon = exposed_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
- stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL)
+ stomach.adjust_charge(reac_volume * 0.001 * ETHEREAL_CHARGE_NORMAL)
/datum/reagent/consumable/ethanol/telepole
name = "Telepole"
@@ -2675,7 +2675,7 @@
var/mob/living/carbon/exposed_carbon = exposed_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
- stomach.adjust_charge(reac_volume * 0.05 * ETHEREAL_CHARGE_NORMAL)
+ stomach.adjust_charge(reac_volume * 0.008 * ETHEREAL_CHARGE_NORMAL)
/datum/reagent/consumable/ethanol/pod_tesla
name = "Pod Tesla"
@@ -2702,7 +2702,7 @@
var/mob/living/carbon/exposed_carbon = exposed_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
- stomach.adjust_charge(reac_volume * 0.1 * ETHEREAL_CHARGE_NORMAL)
+ stomach.adjust_charge(reac_volume * 0.03 * ETHEREAL_CHARGE_NORMAL)
// Welcome to the Blue Room Bar and Grill, home to Mars' finest cocktails
/datum/reagent/consumable/ethanol/rice_beer
diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
index 2cbf4c3ecf778..93f3c41e64df5 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
@@ -278,7 +278,7 @@
. = ..()
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
//310.15 is the normal bodytemp.
affected_mob.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
if(holder.has_reagent(/datum/reagent/consumable/frostoil))
@@ -300,7 +300,7 @@
affected_mob.adjust_dizzy(-4 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-2 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_jitter(-6 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-20 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
@@ -377,7 +377,7 @@
. = ..()
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
/datum/reagent/consumable/hot_ice_coffee
@@ -398,7 +398,7 @@
. = ..()
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-60 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-6 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_bodytemperature(-7 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
if(affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
@@ -416,7 +416,7 @@
. = ..()
affected_mob.adjust_dizzy(-4 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-2 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
@@ -529,7 +529,7 @@
affected_mob.set_jitter_if_lower(40 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_dizzy(2 SECONDS * REM * seconds_per_tick)
affected_mob.remove_status_effect(/datum/status_effect/drowsiness)
- affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
/datum/reagent/consumable/spacemountainwind
@@ -543,7 +543,7 @@
/datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjust_drowsiness(-14 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-20 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
@@ -642,7 +642,7 @@
. = ..()
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
/datum/reagent/consumable/wellcheers
@@ -680,7 +680,7 @@
affected_mob.set_jitter_if_lower(80 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_dizzy(2 SECONDS * REM * seconds_per_tick)
affected_mob.remove_status_effect(/datum/status_effect/drowsiness)
- affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
/datum/reagent/consumable/monkey_energy/on_mob_metabolize(mob/living/affected_mob)
@@ -1257,7 +1257,7 @@
return
affected_mob.set_silence_if_lower(MIMEDRINK_SILENCE_DURATION)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
- affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
if(affected_mob.getToxLoss() && SPT_PROB(25, seconds_per_tick))
if(affected_mob.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index 61836a49163e0..4a4bf137b3c4d 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -832,7 +832,7 @@
if(kronkaine_fiend.adjustOrganLoss(ORGAN_SLOT_HEART, 0.4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
. = UPDATE_MOB_HEALTH
kronkaine_fiend.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick)
- kronkaine_fiend.AdjustSleeping(-20 * REM * seconds_per_tick)
+ kronkaine_fiend.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
kronkaine_fiend.adjust_drowsiness(-10 SECONDS * REM * seconds_per_tick)
if(volume < 10)
return
@@ -865,3 +865,54 @@
)
new /obj/structure/bouncy_castle(gored.loc, gored)
gored.gib()
+
+/datum/reagent/drug/syndol
+ name = "Syndol"
+ description = "A potent and addictive hallucinogen used by syndicate agents disorient certain targets. \
+ It is said that the hallucinations it causes are tailored to the user's fears, but tests have been inconclusive, \
+ with subjects in security and assistants reporting wildly different experiences."
+ color = "#c90000"
+ taste_description = "metallic"
+ ph = 7
+ overdose_threshold = 10
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ addiction_types = list(/datum/addiction/hallucinogens = 20)
+ /// Track the active hallucination we're giving out so we don't replace it by accident
+ VAR_PRIVATE/datum/weakref/active_hallucination_weakref
+
+/datum/reagent/drug/syndol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ . = ..()
+ var/obj/item/organ/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ if(isnull(liver) || !(liver.organ_flags & affected_organ_flags))
+ return
+ // non-trivial but not immediately dangerous liver damage
+ liver.apply_organ_damage(0.5 * REM * seconds_per_tick)
+ // anti-hallucinogens can counteract the effects
+ if(HAS_TRAIT(affected_mob, TRAIT_HALLUCINATION_IMMUNE) || affected_mob.reagents.has_reagent(/datum/reagent/medicine/haloperidol, amount = 3, needs_metabolizing = TRUE))
+ QDEL_NULL(active_hallucination_weakref)
+ return
+
+ // and the main event, funny hallucinations
+ if(active_hallucination_weakref?.resolve())
+ return
+ var/greatest_fear
+ if(HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
+ greatest_fear = /datum/hallucination/delusion/preset/syndies
+ else if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM) || HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM))
+ greatest_fear = /datum/hallucination/delusion/preset/seccies
+
+ if(greatest_fear)
+ // 5 minutes = 15 units, roughly. we cancel the hallucination early when we exit the mob, anyway
+ active_hallucination_weakref = WEAKREF(affected_mob.cause_hallucination(greatest_fear, name, duration = 5 MINUTES, skip_nearby = !overdosed))
+ else
+ // if they're just some random schmuck, give them random hallucinations
+ affected_mob.adjust_hallucinations_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS)
+
+/datum/reagent/drug/syndol/on_mob_end_metabolize(mob/living/affected_mob)
+ . = ..()
+ affected_mob.adjust_hallucinations(-16 SECONDS)
+ QDEL_NULL(active_hallucination_weakref)
+
+/datum/reagent/drug/syndol/overdose_start(mob/living/affected_mob)
+ // no message, just refresh the hallucination
+ QDEL_NULL(active_hallucination_weakref)
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index b33153e9480ff..f930e3e4ff594 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -13,7 +13,7 @@
inverse_chem_val = 0.1
inverse_chem = null
creation_purity = CONSUMABLE_STANDARD_PURITY
- /// How much nutrition this reagent supplies
+ /// How much nutrition this reagent supplies. Look at get_nutriment_factor() for an understanding.
var/nutriment_factor = 1
/// affects mood, typically higher for mixed drinks with more complex recipes'
var/quality = 0
@@ -58,7 +58,7 @@
exposed_mob.add_mood_event("quality_drink", /datum/mood_event/race_drink)
// DOPPLER EDIT ADDITION END
-/// Gets just how much nutrition this reagent is worth for the passed mob
+/// Gets just how much nutrition this reagent supplies per server tick to the eater
/datum/reagent/consumable/proc/get_nutriment_factor(mob/living/carbon/eater)
return nutriment_factor * REAGENTS_METABOLISM * purity * 2
@@ -163,7 +163,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
var/fry_temperature = 450 //Around ~350 F (117 C) which deep fryers operate around in the real world
-/datum/reagent/consumable/nutriment/fat/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/consumable/nutriment/fat/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
if(!holder || (holder.chem_temp <= fry_temperature))
return
@@ -865,6 +865,27 @@
taste_description = "rancid fungus"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+/datum/reagent/consumable/moltobeso
+ name = "Molt'Obeso" //pardon my Italian
+ description = "Concentrated gluttony."
+ color = "#f8fc36"
+ taste_description = "gluttony"
+ taste_mult = 0.3
+ nutriment_factor = 0 //the essence of this sauce is to stimulate hunger and improve the absorption of calories from food eaten
+ metabolization_rate = 0.025 * REAGENTS_METABOLISM
+ metabolized_traits = list(TRAIT_GLUTTON)
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+
+/datum/reagent/consumable/moltobeso/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ . = ..()
+ for(var/datum/reagent/consumable/food in affected_mob.reagents.reagent_list)
+ if(food == src)
+ continue
+ var/food_factor = food.get_nutriment_factor(affected_mob)
+ if(food_factor <= 0)
+ continue
+ affected_mob.adjust_nutrition(food_factor * REM * seconds_per_tick)
+
/datum/reagent/consumable/eggrot
name = "Rotten Eggyolk"
description = "It smells absolutely dreadful."
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
index b8a2250722534..ebd392f536892 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
@@ -480,6 +480,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
overdose_threshold = 20
self_consuming = TRUE //No pesky liver shenanigans
chemical_flags = REAGENT_DONOTSPLIT | REAGENT_DEAD_PROCESS
+ affected_organ_flags = NONE
///If we brought someone back from the dead
var/back_from_the_dead = FALSE
/// List of trait buffs to give to the affected mob, and remove as needed.
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index d6fef868831d7..a60b4c171b703 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -43,7 +43,7 @@
chemical_flags = REAGENT_DEAD_PROCESS
metabolized_traits = list(TRAIT_ANALGESIA)
/// Flags to fullheal every metabolism tick
- var/full_heal_flags = ~(HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_REFRESH_ORGANS)
+ var/full_heal_flags = ~(HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_ORGANS)
// The best stuff there is. For testing/debugging.
/datum/reagent/medicine/adminordrazine/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user)
@@ -76,7 +76,7 @@
name = "Quantum Medicine"
description = "Rare and experimental particles, that apparently swap the user's body with one from an alternate dimension where it's completely healthy."
taste_description = "science"
- full_heal_flags = ~(HEAL_ADMIN|HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_ALL_REAGENTS|HEAL_REFRESH_ORGANS)
+ full_heal_flags = ~(HEAL_ADMIN|HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_ALL_REAGENTS|HEAL_ORGANS)
/datum/reagent/medicine/synaptizine
name = "Synaptizine"
@@ -646,7 +646,7 @@
overdose_threshold = 30
ph = 8.96
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
- addiction_types = list(/datum/addiction/opioids = 10)
+ addiction_types = list(/datum/addiction/opioids = 20) // 30 units of morphine may cause addition
metabolized_traits = list(TRAIT_ANALGESIA)
/datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/affected_mob)
@@ -661,13 +661,28 @@
. = ..()
if(current_cycle > 5)
affected_mob.add_mood_event("numb", /datum/mood_event/narcotic_medium, name)
+ if(affected_mob.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(50 * (2 - creation_purity), seconds_per_tick))
+ affected_mob.adjust_disgust(1.5 * REM * seconds_per_tick)
+
switch(current_cycle)
- if(12)
- to_chat(affected_mob, span_warning("You start to feel tired...") )
- if(13 to 25)
- affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick)
- if(25 to INFINITY)
- affected_mob.Sleeping(40 * REM * seconds_per_tick)
+ if(16) //~3u
+ to_chat(affected_mob, span_warning("You start to feel tired..."))
+ affected_mob.adjust_eye_blur(2 SECONDS * REM * seconds_per_tick)
+ if(SPT_PROB(66, seconds_per_tick))
+ affected_mob.emote("yawn")
+
+ if(24 to 36) // 5u to 7.5u
+ if(SPT_PROB(66 * (2 - creation_purity), seconds_per_tick))
+ affected_mob.adjust_drowsiness_up_to(2 SECONDS * REM * seconds_per_tick, 12 SECONDS)
+
+ if(36 to 48) // 7.5u to 10u
+ affected_mob.adjust_drowsiness_up_to(2 SECONDS * REM * seconds_per_tick, 12 SECONDS)
+
+ if(48 to INFINITY) //10u onward
+ affected_mob.adjust_drowsiness_up_to(3 SECONDS * REM * seconds_per_tick, 20 SECONDS)
+ // doesn't scale from purity - at this point it tries to guarantee sleep
+ if(SPT_PROB(30 * (48 - current_cycle), seconds_per_tick))
+ affected_mob.Sleeping(4 SECONDS * REM * seconds_per_tick)
/datum/reagent/medicine/morphine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
@@ -906,6 +921,10 @@
/// The maximum amount of damage we can revive from, as a ratio of max health
var/max_revive_damage_ratio = 2
+// To override for subtypes.
+/datum/reagent/medicine/strange_reagent/proc/pre_rez_check(atom/thing_to_rez)
+ return TRUE
+
/datum/reagent/medicine/strange_reagent/instant
name = "Stranger Reagent"
instant = TRUE
@@ -965,6 +984,11 @@
exposed_mob.do_jitter_animation(10)
return
+ if(!pre_rez_check(exposed_mob))
+ exposed_mob.visible_message(span_warning("[exposed_mob]'s body twitches slightly."))
+ exposed_mob.do_jitter_animation(1)
+ return
+
exposed_mob.visible_message(span_warning("[exposed_mob]'s body starts convulsing!"))
exposed_mob.notify_revival("Your body is being revived with Strange Reagent!")
exposed_mob.do_jitter_animation(10)
@@ -995,6 +1019,27 @@
if(need_mob_update)
return UPDATE_MOB_HEALTH
+/datum/reagent/medicine/strange_reagent/fishy_reagent
+ name = "Fishy Reagent"
+ description = "This reagent has a chemical composition very similar to that of Strange Reagent, however, it seems to work purely and only on... fish. Or at least, aquatic creatures."
+ reagent_state = LIQUID
+ color = "#5ee8b3"
+ metabolization_rate = 1.25 * REAGENTS_METABOLISM
+ taste_description = "magnetic scales"
+ ph = 0.5
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+
+// only revives fish.
+/datum/reagent/medicine/strange_reagent/fishy_reagent/pre_rez_check(atom/thing_to_rez)
+ if(ismob(thing_to_rez))
+ var/mob/living/mob_to_rez = thing_to_rez
+ if(mob_to_rez.mob_biotypes & MOB_AQUATIC)
+ return TRUE
+ return FALSE
+ if(isfish(thing_to_rez))
+ return TRUE
+ return FALSE
+
/datum/reagent/medicine/mannitol
name = "Mannitol"
description = "Efficiently restores brain damage."
@@ -1184,7 +1229,7 @@
/datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- affected_mob.AdjustSleeping(-20 * REM * seconds_per_tick)
+ affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
holder.remove_reagent(/datum/reagent/consumable/sugar, 3 * REM * seconds_per_tick)
//Trek Chems, used primarily by medibots. Only heals a specific damage type, but is very efficient.
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 2941e5ecd7d08..4444ef843c8cf 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -67,6 +67,12 @@
exposed_carbon.reagents.remove_reagent(type, reac_volume) // Because we don't want blood to just lie around in the patient's blood, makes no sense.
+ // covers them and their worn equipment in blood
+ if((methods & (TOUCH|VAPOR)) && reac_volume > 3)
+ if(data["blood_DNA"] && data["blood_type"])
+ exposed_carbon.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
+ else
+ exposed_carbon.add_blood_DNA(list("Non-human DNA" = random_blood_type()))
/datum/reagent/blood/on_new(list/data)
. = ..()
@@ -126,6 +132,28 @@
if(data["blood_DNA"])
bloodsplatter.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
+/datum/reagent/blood/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
+ . = ..()
+ if(!istype(exposed_obj))
+ return
+ if(reac_volume < 3)
+ return
+
+ if(!(methods & (VAPOR|TOUCH)))
+ return
+
+ if(LAZYLEN(data["viruses"]))
+ var/list/viruses_to_add = list()
+ for(var/datum/disease/virus in data["viruses"])
+ if(virus.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS)
+ viruses_to_add += virus
+ if(length(viruses_to_add))
+ exposed_obj.AddComponent(/datum/component/infective, viruses_to_add)
+ if(data["blood_DNA"] && data["blood_type"])
+ exposed_obj.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
+ else
+ exposed_obj.add_blood_DNA(list("Non-human DNA" = random_blood_type()))
+
/datum/reagent/blood/get_taste_description(mob/living/taster)
if(isnull(taster))
return ..()
@@ -238,7 +266,7 @@
* Water reaction to an object
*/
-/datum/reagent/water/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/water/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
exposed_obj.extinguish()
exposed_obj.wash(CLEAN_TYPE_ACID)
@@ -282,6 +310,16 @@
exposed_mob.incapacitate(1) // startles the felinid, canceling any do_after
exposed_mob.add_mood_event("watersprayed", /datum/mood_event/watersprayed)
+ if(methods & (TOUCH|VAPOR)) // wakey wakey eggs and bakey
+ exposed_mob.adjust_dizzy(-2 SECONDS)
+ exposed_mob.adjust_confusion(-2 SECONDS)
+ exposed_mob.adjust_drowsiness(-4 SECONDS)
+ exposed_mob.adjust_jitter(-4 SECONDS)
+ exposed_mob.AdjustSleeping(-15 SECONDS)
+ exposed_mob.AdjustUnconscious(-8 SECONDS)
+ var/drunkness_restored = HAS_TRAIT(exposed_mob, TRAIT_WATER_ADAPTATION) ? -0.5 : -0.25
+ exposed_mob.adjust_drunk_effect(drunkness_restored)
+
if((methods & INGEST) && HAS_TRAIT(exposed_mob, TRAIT_WATER_ADAPTATION) && reac_volume >= 4)
exposed_mob.adjust_wet_stacks(0.15 * reac_volume)
@@ -973,7 +1011,7 @@
ph = 5.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
-/datum/reagent/copper/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/copper/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
if(!istype(exposed_obj, /obj/item/stack/sheet/iron))
return
@@ -1342,7 +1380,7 @@
ph = 5.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_CLEANS|REAGENT_AFFECTS_WOUNDS
-/datum/reagent/space_cleaner/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/space_cleaner/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
exposed_obj?.wash(clean_types)
@@ -1369,9 +1407,9 @@
/datum/reagent/space_cleaner/on_burn_wound_processing(datum/wound/burn/flesh/burn_wound)
burn_wound.sanitization += 0.3
if(prob(5))
- to_chat(burn_wound.victim, span_notice("Your [burn_wound] stings and burns from the [src] covering it! It does look pretty clean though."))
- burn_wound.victim.adjustToxLoss(0.5)
- burn_wound.limb.receive_damage(burn = 0.5, wound_bonus = CANT_WOUND)
+ to_chat(burn_wound.victim, span_notice("Your [burn_wound] stings and burns from [src] covering it! It does look pretty clean though."))
+ burn_wound.victim.apply_damage(0.5, TOX)
+ burn_wound.victim.apply_damage(0.5, BURN, burn_wound.limb, wound_bonus = CANT_WOUND)
/datum/reagent/space_cleaner/ez_clean
name = "EZ Clean"
@@ -2189,13 +2227,13 @@
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(can_colour_mobs)
- affected_mob.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
+ affected_mob.add_atom_colour(color_transition_filter(pick(random_color_list), SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY)
/// Colors anything it touches a random color.
/datum/reagent/colorful_reagent/expose_atom(atom/exposed_atom, reac_volume)
. = ..()
if(!isliving(exposed_atom) || can_colour_mobs)
- exposed_atom.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
+ exposed_atom.add_atom_colour(color_transition_filter(pick(random_color_list), SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY)
/datum/reagent/hair_dye
name = "Quantum Hair Dye"
@@ -2344,7 +2382,7 @@
// We want one spray of this stuff (5u) to take out a wet floor. Feels better that way
exposed_turf.MakeDry(ALL, TRUE, reac_volume * 10 SECONDS)
-/datum/reagent/drying_agent/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/drying_agent/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
if(exposed_obj.type != /obj/item/clothing/shoes/galoshes)
return
@@ -2725,7 +2763,7 @@
/// The amount of materials to apply to the transmuted objects if they don't contain materials
var/default_material_amount = 100
-/datum/reagent/metalgen/expose_obj(obj/exposed_obj, volume)
+/datum/reagent/metalgen/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
metal_morph(exposed_obj)
@@ -2764,7 +2802,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
self_consuming = TRUE //this works on objects, so it should work on skeletons and robots too
-/datum/reagent/gravitum/expose_obj(obj/exposed_obj, volume)
+/datum/reagent/gravitum/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
exposed_obj.AddElement(/datum/element/forced_gravity, 0)
addtimer(CALLBACK(exposed_obj, PROC_REF(_RemoveElement), list(/datum/element/forced_gravity, 0)), volume * time_multiplier, TIMER_UNIQUE|TIMER_OVERRIDE)
@@ -2941,7 +2979,7 @@
amount_left = round(reac_volume,0.1)
exposed_mob.apply_status_effect(status_effect, amount_left)
-/datum/reagent/ants/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/ants/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
var/turf/open/my_turf = exposed_obj.loc // No dumping ants on an object in a storage slot
if(!istype(my_turf)) //Are we actually in an open turf?
@@ -3077,7 +3115,8 @@
ph = 10
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
-/datum/reagent/hauntium/expose_obj(obj/exposed_obj, volume) //gives 15 seconds of haunting effect for every unit of it that touches an object
+//gives 15 seconds of haunting effect for every unit of it that touches an object
+/datum/reagent/hauntium/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
if(HAS_TRAIT_FROM(exposed_obj, TRAIT_HAUNTED, HAUNTIUM_REAGENT_TRAIT))
return
@@ -3096,11 +3135,11 @@
. = ..()
if(affected_mob.mob_biotypes & MOB_UNDEAD || HAS_MIND_TRAIT(affected_mob, TRAIT_MORBID)) //if morbid or undead,acts like an addiction-less drug
affected_mob.remove_status_effect(/datum/status_effect/jitter)
- affected_mob.AdjustStun(-50 * REM * seconds_per_tick)
- affected_mob.AdjustKnockdown(-50 * REM * seconds_per_tick)
- affected_mob.AdjustUnconscious(-50 * REM * seconds_per_tick)
- affected_mob.AdjustParalyzed(-50 * REM * seconds_per_tick)
- affected_mob.AdjustImmobilized(-50 * REM * seconds_per_tick)
+ affected_mob.AdjustStun(-5 SECONDS * REM * seconds_per_tick)
+ affected_mob.AdjustKnockdown(-5 SECONDS * REM * seconds_per_tick)
+ affected_mob.AdjustUnconscious(-5 SECONDS * REM * seconds_per_tick)
+ affected_mob.AdjustParalyzed(-5 SECONDS * REM * seconds_per_tick)
+ affected_mob.AdjustImmobilized(-5 SECONDS * REM * seconds_per_tick)
else
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, REM * seconds_per_tick)) //1 heart damage per tick
. = UPDATE_MOB_HEALTH
diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
index c81eb5e1fb6a5..c401d39f020ed 100644
--- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
@@ -379,7 +379,7 @@
air.react(src)
qdel(hotspot)
-/datum/reagent/firefighting_foam/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/firefighting_foam/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
exposed_obj.extinguish()
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index a5d8fdaae18c2..22c5902ad4136 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -362,7 +362,7 @@
mytray.adjust_toxic(round(volume * 6))
mytray.adjust_weedlevel(-rand(4,8))
-/datum/reagent/toxin/plantbgone/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/toxin/plantbgone/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
if(istype(exposed_obj, /obj/structure/alien/weeds))
var/obj/structure/alien/weeds/alien_weeds = exposed_obj
@@ -1097,7 +1097,7 @@
return
exposed_carbon.acid_act(acidpwr, reac_volume)
-/datum/reagent/toxin/acid/expose_obj(obj/exposed_obj, reac_volume)
+/datum/reagent/toxin/acid/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
. = ..()
if(ismob(exposed_obj.loc)) //handled in human acid_act()
return
@@ -1223,12 +1223,12 @@
if(BP)
playsound(affected_mob, SFX_DESECRATION, 50, TRUE, -1)
affected_mob.visible_message(span_warning("[affected_mob]'s bones hurt too much!!"), span_danger("Your bones hurt too much!!"))
- affected_mob.say("OOF!!", forced = /datum/reagent/toxin/bonehurtingjuice)
- if(BP.receive_damage(brute = 20 * REM * seconds_per_tick, burn = 0, blocked = 200, updating_health = FALSE, wound_bonus = rand(30, 130)))
- . = UPDATE_MOB_HEALTH
+ affected_mob.say("OOF!!", forced = type)
+ affected_mob.apply_damage(20, BRUTE, BP, wound_bonus = rand(30, 130))
+
else //SUCH A LUST FOR REVENGE!!!
to_chat(affected_mob, span_warning("A phantom limb hurts!"))
- affected_mob.say("Why are we still here, just to suffer?", forced = /datum/reagent/toxin/bonehurtingjuice)
+ affected_mob.say("Why are we still here, just to suffer?", forced = type)
/datum/reagent/toxin/bonehurtingjuice/used_on_fish(obj/item/fish/fish)
if(HAS_TRAIT(fish, TRAIT_FISH_MADE_OF_BONE))
@@ -1435,3 +1435,9 @@
SIGNAL_HANDLER
if(current_cycle > 28 && !HAS_TRAIT(source, TRAIT_TETRODOTOXIN_HEALING))
return COMSIG_CARBON_BLOCK_BREATH
+
+/datum/reagent/toxin/gatfruit
+ name = "Phytotoxin"
+ description = "A poison produced by the rare and elusive gatfruit plant."
+ liver_damage_multiplier = 0
+ toxpwr = 1
diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index 868917893c90c..84f251b759fad 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -208,6 +208,16 @@
required_reagents = list(/datum/reagent/medicine/omnizine/protozine = 1, /datum/reagent/water/holywater = 1, /datum/reagent/toxin/mutagen = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_PLANT | REACTION_TAG_OTHER
+/datum/chemical_reaction/medicine/fishy_reagent
+ results = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 3)
+ required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/salt = 1, /datum/reagent/toxin/carpotoxin = 1)
+ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER
+
+/datum/chemical_reaction/medicine/fishy_reagent/alt
+ results = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 6)
+ required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/salt = 1, /datum/reagent/toxin/tetrodotoxin = 1)
+ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER
+
/datum/chemical_reaction/medicine/mannitol
results = list(/datum/reagent/medicine/mannitol = 3)
required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, /datum/reagent/water = 1)
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index 542850ac9beae..6219fc964575b 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -575,6 +575,29 @@
new /mob/living/basic/pet/dog/corgi(location)
..()
+/datum/chemical_reaction/lifish
+ required_reagents = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 1, /datum/reagent/medicine/c2/synthflesh = 1, /datum/reagent/blood = 1)
+ required_temp = 374
+ reaction_flags = REACTION_INSTANT
+ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
+
+/datum/chemical_reaction/lifish/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
+ var/location = get_turf(holder.my_atom)
+
+ // create fish possibles
+ var/list/fish_types = list()
+ for(var/path in subtypesof(/obj/item/fish))
+ var/obj/item/fish/fake_fish = path
+ if(initial(fake_fish.random_case_rarity) == FISH_RARITY_NOPE) // means they aren't mean to be randomly available
+ continue
+ fish_types |= path
+
+ // spawn from popssible fishes
+ for(var/i in 1 to rand(1, created_volume)) // More flop.
+ var/obj/item/fish/spawned_fish = pick(fish_types)
+ new spawned_fish(location)
+ return ..()
+
//monkey powder heehoo
/datum/chemical_reaction/monkey_powder
results = list(/datum/reagent/monkey_powder = 5)
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 0814834b25a51..f331dcfbab740 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -578,7 +578,7 @@
required_reagents = list(/datum/reagent/teslium = 1, /datum/reagent/water = 1)
strengthdiv = 100
modifier = -100
- mix_message = span_boldannounce("The teslium starts to spark as electricity arcs away from it!")
+ mix_message = span_bolddanger("The teslium starts to spark as electricity arcs away from it!")
mix_sound = 'sound/machines/defib/defib_zap.ogg'
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
@@ -640,4 +640,4 @@
/datum/chemical_reaction/reagent_explosion/patriotism_overload
required_reagents = list(/datum/reagent/consumable/ethanol/planet_cracker = 1, /datum/reagent/consumable/ethanol/triumphal_arch = 1)
strengthdiv = 20
- mix_message = span_boldannounce("The two patriotic drinks instantly reject each other!")
+ mix_message = span_bolddanger("The two patriotic drinks instantly reject each other!")
diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm
index 3f83bc122282e..08ef730011f64 100644
--- a/code/modules/reagents/reagent_containers/cups/_cup.dm
+++ b/code/modules/reagents/reagent_containers/cups/_cup.dm
@@ -28,7 +28,7 @@
. = ..()
if(drink_type)
var/list/types = bitfield_to_list(drink_type, FOOD_FLAGS)
- . += span_notice("It is [LOWER_TEXT(english_list(types))].")
+ . += span_notice("The label says it contains [LOWER_TEXT(english_list(types))] ingredients.")
/**
* Checks if the mob actually liked drinking this cup.
diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm
index 0b1acf8aa5508..dbf88ff7e4302 100644
--- a/code/modules/reagents/reagent_containers/cups/bottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/bottle.dm
@@ -37,6 +37,11 @@
desc = "A small bottle of spewium."
list_reagents = list(/datum/reagent/toxin/spewium = 30)
+/obj/item/reagent_containers/cup/bottle/syndol
+ name = "syndol bottle"
+ desc = "A small bottle of syndol."
+ list_reagents = list(/datum/reagent/drug/syndol = 30)
+
/obj/item/reagent_containers/cup/bottle/morphine
name = "morphine bottle"
desc = "A small bottle of morphine."
@@ -134,6 +139,11 @@
desc = "A small bottle. May be used to revive people."
list_reagents = list(/datum/reagent/medicine/strange_reagent = 30)
+/obj/item/reagent_containers/cup/bottle/fishy_reagent
+ name = "Fishy Reagent Bottle"
+ desc = "A small bottle. May be used to revive fish."
+ list_reagents = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 30)
+
/obj/item/reagent_containers/cup/bottle/traitor
name = "syndicate bottle"
desc = "A small bottle. Contains a random nasty chemical."
@@ -255,6 +265,12 @@
desc = "A small bottle of Romerol. The REAL zombie powder."
list_reagents = list(/datum/reagent/romerol = 30)
+/obj/item/reagent_containers/cup/bottle/moltobeso
+ name = "Molt'Obeso bottle"
+ desc = "The revolutionary new sauce from Syndicate's culinary experts, designed to instantly reshape your figure! \
+ The key to the effectiveness of this product lies in its unique formulation, which combines carefully selected ingredients to stimulate appetite and enhance the absorption of calories."
+ list_reagents = list(/datum/reagent/consumable/moltobeso = 50)
+
/obj/item/reagent_containers/cup/bottle/random_virus
name = "Experimental disease culture bottle"
desc = "A small bottle. Contains an untested viral culture in synthblood medium."
diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm
index 241dfd7c6f89f..841539fa0cc55 100644
--- a/code/modules/reagents/reagent_containers/cups/drinks.dm
+++ b/code/modules/reagents/reagent_containers/cups/drinks.dm
@@ -31,11 +31,11 @@
qdel(src)
target.Bumped(B)
-/obj/item/reagent_containers/cup/glass/bullet_act(obj/projectile/P)
+/obj/item/reagent_containers/cup/glass/bullet_act(obj/projectile/proj)
. = ..()
if(QDELETED(src))
return
- if(P.damage > 0 && P.damage_type == BRUTE)
+ if(proj.damage > 0 && proj.damage_type == BRUTE)
var/atom/T = get_turf(src)
smash(T)
diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
index 5712d383f0b57..90cc93e54111f 100644
--- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
@@ -21,7 +21,6 @@
var/broken_inhand_icon_state = "broken_beer"
lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
- drink_type = ALCOHOL
age_restricted = TRUE // wrryy can't set an init value to see if drink_type contains ALCOHOL so here we go
///Directly relates to the 'knockdown' duration. Lowered by armor (i.e. helmets)
var/bottle_knockdown_duration = BOTTLE_KNOCKDOWN_DEFAULT_DURATION
@@ -308,6 +307,7 @@
desc = "Brewed with \"Pure Ice Asteroid Spring Water\"."
icon_state = "litebeer"
list_reagents = list(/datum/reagent/consumable/ethanol/beer/light = 30)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/rootbeer
name = "Two-Time root beer"
@@ -333,47 +333,53 @@
desc = "A bottle of high quality gin, produced in the New London Space Station."
icon_state = "ginbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/gin = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/whiskey
name = "Uncle Git's special reserve"
desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES."
icon_state = "whiskeybottle"
list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/kong
name = "Kong"
desc = "Makes You Go Ape!®"
list_reagents = list(/datum/reagent/consumable/ethanol/whiskey/kong = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/candycornliquor
name = "candy corn liquor"
desc = "Like they drank in 2D speakeasies."
list_reagents = list(/datum/reagent/consumable/ethanol/whiskey/candycorn = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/vodka
name = "Tunguska triple distilled"
desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide."
icon_state = "vodkabottle"
list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/vodka/badminka
name = "Badminka vodka"
desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'."
icon_state = "badminka"
list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/tequila
name = "Caccavo guaranteed quality tequila"
desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!"
icon_state = "tequilabottle"
list_reagents = list(/datum/reagent/consumable/ethanol/tequila = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/bottleofnothing
name = "bottle of nothing"
desc = "A bottle filled with nothing."
icon_state = "bottleofnothing"
list_reagents = list(/datum/reagent/consumable/nothing = 100)
- drink_type = NONE
age_restricted = FALSE
/obj/item/reagent_containers/cup/glass/bottle/patron
@@ -381,18 +387,21 @@
desc = "Silver laced tequila, served in space night clubs across the galaxy."
icon_state = "patronbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/patron = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/rum
name = "Captain Pete's Cuban spiced rum"
desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle."
icon_state = "rumbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/rum = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/rum/aged
name = "Captain Pete's Vintage spiced rum"
desc = "Shiver me timbers, a vintage edition of Captain Pete's rum. It's pratically GRIFF in a bottle from over 50 years ago."
icon_state = "rumbottle_gold"
list_reagents = list(/datum/reagent/consumable/ethanol/rum/aged = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/maltliquor
name = "\improper Rabid Bear malt liquor"
@@ -400,6 +409,7 @@
icon_state = "maltliquorbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/beer/maltliquor = 100)
custom_price = PAYCHECK_CREW
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/holywater
name = "flask of holy water"
@@ -409,7 +419,6 @@
inhand_icon_state = "holyflask"
broken_inhand_icon_state = "broken_holyflask"
list_reagents = list(/datum/reagent/water/holywater = 100)
- drink_type = NONE
/obj/item/reagent_containers/cup/glass/bottle/holywater/add_message_overlay()
return //looks too weird...
@@ -424,6 +433,7 @@
desc = "Sweet, sweet dryness~"
icon_state = "vermouthbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/vermouth = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/kahlua
name = "Robert Robust's coffee liqueur"
@@ -437,12 +447,14 @@
desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps."
icon_state = "goldschlagerbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/goldschlager = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/cognac
name = "Chateau de Baton premium cognac"
desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time."
icon_state = "cognacbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/cognac = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/wine
name = "Doublebeard's bearded special wine"
@@ -490,6 +502,7 @@
desc = "A strong alcoholic drink brewed and distributed by"
icon_state = "absinthebottle"
list_reagents = list(/datum/reagent/consumable/ethanol/absinthe = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/absinthe/Initialize(mapload)
. = ..()
@@ -539,6 +552,7 @@
name = "Gwyn's premium absinthe"
desc = "A potent alcoholic beverage, almost makes you forget the ash in your lungs."
icon_state = "absinthepremium"
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/absinthe/premium/redact()
return
@@ -556,24 +570,28 @@
icon_state = "hcider"
volume = 50
list_reagents = list(/datum/reagent/consumable/ethanol/hcider = 50)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/amaretto
name = "Luini Amaretto"
desc = "A gentle, syrupy drink that tastes of almonds and apricots."
icon_state = "disaronno"
list_reagents = list(/datum/reagent/consumable/ethanol/amaretto = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/grappa
name = "Phillipes well-aged Grappa"
desc = "Bottle of Grappa."
icon_state = "grappabottle"
list_reagents = list(/datum/reagent/consumable/ethanol/grappa = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/sake
name = "Ryo's traditional sake"
desc = "Sweet as can be, and burns like fire going down."
icon_state = "sakebottle"
list_reagents = list(/datum/reagent/consumable/ethanol/sake = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/sake/Initialize(mapload)
if(prob(10))
@@ -596,6 +614,7 @@
desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station"
icon_state = "fernetbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/fernet = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/bitters
name = "Andromeda Bitters"
@@ -603,12 +622,14 @@
icon_state = "bitters_bottle"
volume = 30
list_reagents = list(/datum/reagent/consumable/ethanol/bitters = 30)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/curacao
name = "Beekhof Blauw Curaçao"
desc = "Still produced on the island of Curaçao, after all these years."
icon_state = "curacao_bottle"
list_reagents = list(/datum/reagent/consumable/ethanol/curacao = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/curacao/add_message_overlay()
return //doesn't fit the sprite
@@ -618,6 +639,7 @@
desc = "Ironically named, given it's made in Bermuda."
icon_state = "navy_rum_bottle"
list_reagents = list(/datum/reagent/consumable/ethanol/navy_rum = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/grenadine
name = "Jester Grenadine"
@@ -652,6 +674,7 @@
reagent_flags = TRANSPARENT
spillable = FALSE
list_reagents = list(/datum/reagent/consumable/ethanol/champagne = 100)
+ drink_type = ALCOHOL
///Used for sabrage; increases the chance of success per 1 force of the attacking sharp item
var/sabrage_success_percentile = 5
///Whether this bottle was a victim of a successful sabrage attempt
@@ -805,6 +828,7 @@
desc = "You feel like you should give the bottle a good rub before opening."
icon_state = "blazaambottle"
list_reagents = list(/datum/reagent/consumable/ethanol/blazaam = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/trappist
name = "Mont de Requin Trappistes Bleu"
@@ -812,12 +836,14 @@
icon_state = "trappistbottle"
volume = 50
list_reagents = list(/datum/reagent/consumable/ethanol/trappist = 50)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/hooch
name = "hooch bottle"
desc = "A bottle of rotgut. Its owner has applied some street wisdom to cleverly disguise it as a brown paper bag."
icon_state = "hoochbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/hooch = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/hooch/add_message_overlay()
return //doesn't fit the sprite
@@ -827,6 +853,7 @@
desc = "It is said that the ancient Applalacians used these stoneware jugs to capture lightning in a bottle."
icon_state = "moonshinebottle"
list_reagents = list(/datum/reagent/consumable/ethanol/moonshine = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/moonshine/add_message_overlay()
return //doesn't fit the sprite
@@ -838,6 +865,7 @@
volume = 30
list_reagents = list(/datum/reagent/consumable/ethanol/mushi_kombucha = 30)
isGlass = FALSE
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/hakka_mate
name = "Hakka-Mate"
@@ -850,18 +878,21 @@
desc = "A boozier form of shochu designed for mixing. Comes straight from Mars' Dusty City itself, Shu-Kouba."
icon_state = "shochu_bottle"
list_reagents = list(/datum/reagent/consumable/ethanol/shochu = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/yuyake
name = "Moonlabor Yūyake"
desc = "The distilled essence of disco and flared pants, captured like lightning in a bottle."
icon_state = "yuyake_bottle"
list_reagents = list(/datum/reagent/consumable/ethanol/yuyake = 100)
+ drink_type = ALCOHOL
/obj/item/reagent_containers/cup/glass/bottle/coconut_rum
name = "Breezy Shoals Coconut Rum"
desc = "Live the breezy life with Breezy Shoals, made with only the *finest Caribbean rum."
icon_state = "coconut_rum_bottle"
list_reagents = list(/datum/reagent/consumable/ethanol/coconut_rum = 100)
+ drink_type = ALCOHOL
////////////////////////// MOLOTOV ///////////////////////
/obj/item/reagent_containers/cup/glass/bottle/molotov
diff --git a/code/modules/reagents/reagent_containers/cups/soda.dm b/code/modules/reagents/reagent_containers/cups/soda.dm
index a23e9c323545b..c9380d2b9b9c1 100644
--- a/code/modules/reagents/reagent_containers/cups/soda.dm
+++ b/code/modules/reagents/reagent_containers/cups/soda.dm
@@ -76,17 +76,17 @@
return TRUE
return ..()
-/obj/item/reagent_containers/cup/soda_cans/bullet_act(obj/projectile/P)
+/obj/item/reagent_containers/cup/soda_cans/bullet_act(obj/projectile/proj)
. = ..()
if(QDELETED(src))
return
- if(P.damage > 0 && P.damage_type == BRUTE)
- var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(src.loc)
- crushed_can.icon_state = icon_state
- var/atom/throw_target = get_edge_target_turf(crushed_can, pick(GLOB.alldirs))
- crushed_can.throw_at(throw_target, rand(1,2), 7)
- qdel(src)
+ if(!proj.damage || proj.damage_type != BRUTE)
return
+ var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(loc)
+ crushed_can.icon_state = icon_state
+ var/atom/throw_target = get_edge_target_turf(crushed_can, pick(GLOB.alldirs))
+ crushed_can.throw_at(throw_target, rand(1,2), 7)
+ qdel(src)
/obj/item/reagent_containers/cup/soda_cans/proc/open_soda(mob/user)
if(prob(fizziness))
@@ -138,7 +138,7 @@
burst_soda(hit_atom, hide_message = TRUE)
visible_message(span_danger("[src]'s impact with [hit_atom] causes it to rupture, spilling everywhere!"))
- var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(src.loc)
+ var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(loc)
crushed_can.icon_state = icon_state
moveToNullspace()
QDEL_IN(src, 1 SECONDS) // give it a second so it can still be logged for the throw impact
diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm
index 40e203dcb3456..29cfadd745b3e 100644
--- a/code/modules/reagents/reagent_containers/patch.dm
+++ b/code/modules/reagents/reagent_containers/patch.dm
@@ -11,20 +11,21 @@
self_delay = 30 // three seconds
dissolvable = FALSE
-/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user)
- if(ishuman(L))
- var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected))
- if(!affecting)
- to_chat(user, span_warning("The limb is missing!"))
- return
- if(!IS_ORGANIC_LIMB(affecting))
- to_chat(user, span_notice("Medicine won't work on an inorganic limb!"))
- return
- ..()
-
/obj/item/reagent_containers/pill/patch/canconsume(mob/eater, mob/user)
if(!iscarbon(eater))
return FALSE
+ if(!ishuman(eater))
+ return TRUE
+ var/mob/living/carbon/human/human_eater = eater
+ var/obj/item/bodypart/affecting = human_eater.get_bodypart(check_zone(user.zone_selected))
+ if(!affecting)
+ to_chat(user, span_warning("The limb is missing!"))
+ return FALSE
+
+ if(!IS_ORGANIC_LIMB(affecting))
+ to_chat(user, span_notice("Medicine won't work on an inorganic limb!"))
+ return FALSE
+
return TRUE // Masks were stopping people from "eating" patches. Thanks, inheritance.
/obj/item/reagent_containers/pill/patch/libital
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 629e0e96937db..f407a75030a65 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -25,27 +25,6 @@
if(apply_type == INGEST)
AddComponent(/datum/component/germ_sensitive, mapload)
-/obj/item/reagent_containers/pill/attack(mob/M, mob/user, def_zone)
- if(!canconsume(M, user))
- return FALSE
-
- if(M == user)
- M.visible_message(span_notice("[user] attempts to [apply_method] [src]."))
- if(self_delay)
- if(!do_after(user, self_delay, M))
- return FALSE
- to_chat(M, span_notice("You [apply_method] [src]."))
-
- else
- M.visible_message(span_danger("[user] attempts to force [M] to [apply_method] [src]."), \
- span_userdanger("[user] attempts to force you to [apply_method] [src]."))
- if(!do_after(user, CHEM_INTERACT_DELAY(3 SECONDS, user), M))
- return FALSE
- M.visible_message(span_danger("[user] forces [M] to [apply_method] [src]."), \
- span_userdanger("[user] forces you to [apply_method] [src]."))
-
- return on_consumption(M, user)
-
///Runs the consumption code, can be overriden for special effects
/obj/item/reagent_containers/pill/proc/on_consumption(mob/consumer, mob/giver)
if(icon_state == "pill4" && prob(5)) //you take the red pill - you stay in Wonderland, and I show you how deep the rabbit hole goes
@@ -56,15 +35,35 @@
if(reagents.total_volume)
reagents.trans_to(consumer, reagents.total_volume, transferred_by = giver, methods = apply_type)
qdel(src)
- return TRUE
-
/obj/item/reagent_containers/pill/interact_with_atom(atom/target, mob/living/user, list/modifiers)
+ if (ismob(target))
+ var/mob/target_mob = target
+ if(!canconsume(target_mob, user))
+ return ITEM_INTERACT_BLOCKING
+ if(target_mob == user)
+ target_mob.visible_message(span_notice("[user] attempts to [apply_method] [src]."))
+ if(self_delay)
+ if(!do_after(user, self_delay, target_mob))
+ return ITEM_INTERACT_BLOCKING
+ to_chat(target_mob, span_notice("You [apply_method] [src]."))
+ else
+ target_mob.visible_message(span_danger("[user] attempts to force [target_mob] to [apply_method] [src]."), \
+ span_userdanger("[user] attempts to force you to [apply_method] [src]."))
+ if(!do_after(user, CHEM_INTERACT_DELAY(3 SECONDS, user), target_mob))
+ return ITEM_INTERACT_BLOCKING
+ target_mob.visible_message(span_danger("[user] forces [target_mob] to [apply_method] [src]."), \
+ span_userdanger("[user] forces you to [apply_method] [src]."))
+ on_consumption(target_mob, user)
+ return ITEM_INTERACT_SUCCESS
+
if(!dissolvable || !target.is_refillable())
return NONE
+
if(target.is_drainable() && !target.reagents.total_volume)
to_chat(user, span_warning("[target] is empty! There's nothing to dissolve [src] in."))
return ITEM_INTERACT_BLOCKING
+
if(target.reagents.holder_full())
to_chat(user, span_warning("[target] is full."))
return ITEM_INTERACT_BLOCKING
@@ -277,10 +276,9 @@
if(prob(30))
desc = pick(descs)
-/obj/item/reagent_containers/pill/maintenance/achievement/on_consumption(mob/M, mob/user)
+/obj/item/reagent_containers/pill/maintenance/achievement/on_consumption(mob/consumer, mob/user)
. = ..()
-
- M.client?.give_award(/datum/award/score/maintenance_pill, M)
+ consumer.client?.give_award(/datum/award/score/maintenance_pill, consumer)
/obj/item/reagent_containers/pill/potassiodide
name = "potassium iodide pill"
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 17ce2fea149f4..04ff332a9ea31 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -402,6 +402,7 @@
spray_range = 2
spray_sound = 'sound/effects/snap.ogg'
possible_transfer_amounts = list(5)
+ reagent_container_liquid_sound = null
/obj/item/reagent_containers/spray/chemsprayer/party/spray(atom/A, mob/user)
. = ..()
diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm
index 77cfcdaac2494..b2e5724778c1b 100644
--- a/code/modules/religion/burdened/psyker.dm
+++ b/code/modules/religion/burdened/psyker.dm
@@ -63,8 +63,7 @@
if(!psykerize())
to_chat(src, span_warning("The transformation subsides..."))
return
- var/obj/item/bodypart/head/psyker_head = get_bodypart(BODY_ZONE_HEAD)
- psyker_head.receive_damage(brute = 50)
+ apply_damage(50, BRUTE, BODY_ZONE_HEAD)
to_chat(src, span_userdanger("Your head splits open! Your brain mutates!"))
new /obj/effect/gibspawner/generic(drop_location(), src)
emote("scream")
diff --git a/code/modules/religion/honorbound/honorbound_trauma.dm b/code/modules/religion/honorbound/honorbound_trauma.dm
index ed4ecde1592ba..6087a4b7951c8 100644
--- a/code/modules/religion/honorbound/honorbound_trauma.dm
+++ b/code/modules/religion/honorbound/honorbound_trauma.dm
@@ -135,7 +135,7 @@
var/datum/job/job = target_human.mind?.assigned_role
var/is_holy = target_human.mind?.holy_role
if(is_holy || (job?.departments_bitflags & DEPARTMENT_BITFLAG_SECURITY))
- to_chat(honorbound_human, span_warning("There is nothing righteous in attacking the just ."))
+ to_chat(honorbound_human, span_warning("The just and fair guards? If you truly think they are not innocent , declare them guilty.")) //DOPPLER EDIT CHANGE - ORIGINAL: to_chat(honorbound_human, span_warning("There is nothing righteous in attacking the just ."))
return FALSE
if(job?.departments_bitflags & DEPARTMENT_BITFLAG_MEDICAL && !is_guilty)
to_chat(honorbound_human, span_warning("If you truly think this healer is not innocent , declare them guilty."))
@@ -274,10 +274,11 @@
return FALSE
// cannot declare security as evil
+ /* //DOPPLER EDIT CHANGE START - Commented out. You can, but they're good on a normal basis.
if(living_cast_on.mind.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_SECURITY)
to_chat(owner, span_warning("Members of security are uncorruptable! You cannot declare one evil!"))
return FALSE
-
+ */ //DOPPLER EDIT CHANGE END
return TRUE
/datum/action/cooldown/spell/pointed/declare_evil/before_cast(mob/living/cast_on)
diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm
index cd0fabba84974..67526918167a7 100644
--- a/code/modules/religion/rites.dm
+++ b/code/modules/religion/rites.dm
@@ -20,9 +20,8 @@
LAZYADD(GLOB.religious_sect.active_rites, src)
/datum/religion_rites/Destroy()
- if(!GLOB?.religious_sect)
- return
- LAZYREMOVE(GLOB.religious_sect.active_rites, src)
+ if(GLOB?.religious_sect)
+ LAZYREMOVE(GLOB.religious_sect.active_rites, src)
return ..()
/datum/religion_rites/proc/can_afford(mob/living/user)
diff --git a/code/modules/religion/sparring/sparring_datum.dm b/code/modules/religion/sparring/sparring_datum.dm
index 8e01403e5a64c..fc128a401cc31 100644
--- a/code/modules/religion/sparring/sparring_datum.dm
+++ b/code/modules/religion/sparring/sparring_datum.dm
@@ -227,9 +227,9 @@
cleanup_sparring_match()
if(chaplain) //flubing means we don't know who is still standing
- to_chat(chaplain, span_boldannounce("The match was flub'd! No winners, no losers. You may restart the match with another contract."))
+ to_chat(chaplain, span_bolddanger("The match was flub'd! No winners, no losers. You may restart the match with another contract."))
if(opponent)
- to_chat(opponent, span_boldannounce("The match was flub'd! No winners, no losers."))
+ to_chat(opponent, span_bolddanger("The match was flub'd! No winners, no losers."))
qdel(src)
///helper to remove all the effects after a match ends
@@ -243,8 +243,8 @@
/datum/sparring_match/proc/end_match(mob/living/carbon/human/winner, mob/living/carbon/human/loser, violation_victory = FALSE)
cleanup_sparring_match()
- to_chat(chaplain, span_boldannounce("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!"))
- to_chat(opponent, span_boldannounce("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!"))
+ to_chat(chaplain, span_bolddanger("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!"))
+ to_chat(opponent, span_bolddanger("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!"))
win(winner, loser, violation_victory)
lose(loser, winner)
if(stakes_condition != STAKES_YOUR_SOUL)
diff --git a/code/modules/research/designs/autolathe/security_designs.dm b/code/modules/research/designs/autolathe/security_designs.dm
index b3bc0d8101d0a..7fbf06e122f09 100644
--- a/code/modules/research/designs/autolathe/security_designs.dm
+++ b/code/modules/research/designs/autolathe/security_designs.dm
@@ -179,7 +179,7 @@
id = "a357"
build_type = AUTOLATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2)
- build_path = /obj/item/ammo_casing/a357
+ build_path = /obj/item/ammo_casing/c357
category = list(
RND_CATEGORY_HACKED,
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO,
diff --git a/code/modules/research/designs/autolathe/service_designs.dm b/code/modules/research/designs/autolathe/service_designs.dm
index 21fda49fc1bdc..38e36d269149d 100644
--- a/code/modules/research/designs/autolathe/service_designs.dm
+++ b/code/modules/research/designs/autolathe/service_designs.dm
@@ -562,6 +562,18 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
+/datum/design/aquarium_kit
+ name = "Aquarium Kit"
+ id = "aquarium_kit"
+ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
+ materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
+ build_path = /obj/item/aquarium_kit
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE,
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
+
/datum/design/ticket_machine
name = "Ticket Machine Frame"
id = "ticket_machine"
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index 15a5fed08eb08..74e00231035cf 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -1347,3 +1347,13 @@
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO
+
+/datum/design/board/mailsorter
+ name = "Mail Sorter"
+ desc = "The circuit board for a mail sorting unit."
+ id = "mailsorter"
+ build_path = /obj/item/circuitboard/machine/mailsorter
+ category = list(
+ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING
diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm
index 21deb54280cd3..2f43fe5813323 100644
--- a/code/modules/research/designs/mecha_designs.dm
+++ b/code/modules/research/designs/mecha_designs.dm
@@ -750,7 +750,7 @@
desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves."
id = "mech_sleeper"
build_type = MECHFAB
- build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper
+ build_path = /obj/item/mecha_parts/mecha_equipment/sleeper/medical
materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*5)
construction_time = 10 SECONDS
category = list(
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 14a36843e3297..c06eb40204e96 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -2798,3 +2798,14 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
+/datum/design/module/mister_janitor
+ name = "Cleaning Mister Module"
+ id = "mod_mister_janitor"
+ materials = list(
+ /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/titanium =HALF_SHEET_MATERIAL_AMOUNT * 1,
+ )
+ build_path = /obj/item/mod/module/mister/cleaner
+ category = list(
+ RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE
+ )
diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm
index 90b8acee031a9..56764318f1b85 100644
--- a/code/modules/research/designs/misc_designs.dm
+++ b/code/modules/research/designs/misc_designs.dm
@@ -1046,6 +1046,18 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
+/datum/design/bluespace_fish_tank
+ name = "Bluespace Fish Tank Kit"
+ desc = "The required components to upgrade the capacity of a fish tank."
+ id = "bluespace_fish_tank_kit"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
+ build_path = /obj/item/aquarium_upgrade/bluespace_tank
+ category = list(
+ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE,
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
+
// Coffeemaker Stuff
/datum/design/coffeepot
@@ -1121,3 +1133,21 @@
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
+
+/datum/design/perceptomatrix
+ name = "Perceptomatrix Helm"
+ id = "perceptomatrix"
+ desc = "This helm harnesses hallucinative energies to shield its owner from perceptual anomalies. It requires a Hallucination Anomaly Core in order to function."
+ build_type = PROTOLATHE | AWAY_LATHE
+ build_path = /obj/item/clothing/head/helmet/perceptomatrix
+ materials = list(
+ /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1,
+ /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.5,
+ /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3,
+ /datum/material/uranium = SHEET_MATERIAL_AMOUNT,
+ )
+ category = list(
+ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index deb2256ff10f0..38edc5b5593a7 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -167,10 +167,12 @@
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
-/datum/design/board/bioelec_gen
+/datum/design/bioelec_gen
name = "Aquarium Bioelectricity Kit"
desc = "The required components to convert an aquarium into a bioelectricity generator."
id = "bioelec_gen"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT)
build_path = /obj/item/aquarium_upgrade/bioelec_gen
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING,
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index ebda0f1e3b464..872821e9827b0 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -3,7 +3,7 @@
/////////////////////////////////////////
/datum/design/c38/sec
- id = "sec_38"
+ id = "c38_sec"
build_type = PROTOLATHE | AWAY_LATHE
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
@@ -16,7 +16,11 @@
desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body. The implant's signal is incompatible with teleporters."
id = "c38_trac"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT)
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10,
+ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 2.5,
+ /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
+ )
build_path = /obj/item/ammo_box/c38/trac
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
@@ -28,7 +32,10 @@
desc = "Designed to quickly reload revolvers. Hot Shot bullets contain an incendiary payload."
id = "c38_hotshot"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5)
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10,
+ /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5,
+ )
build_path = /obj/item/ammo_box/c38/hotshot
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
@@ -40,7 +47,10 @@
desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload."
id = "c38_iceblox"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5)
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10,
+ /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5,
+ )
build_path = /obj/item/ammo_box/c38/iceblox
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
@@ -52,13 +62,125 @@
desc = "Designed to quickly reload revolvers. Rubber bullets are bouncy and less-than-lethal."
id = "c38_rubber"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
+ materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10)
build_path = /obj/item/ammo_box/c38/match/bouncy
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+/datum/design/c38_true
+ name = "Speedloader (.38 True Strike) (Lethal)"
+ desc = "Designed to quickly reload revolvers. Bullets bounce towards new targets with surprising accuracy."
+ id = "c38_true_strike"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10,
+ /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+ build_path = /obj/item/ammo_box/magazine/m38/true
+ category = list(
+ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
+/datum/design/c38_mag
+ name = "Magazine (.38) (Lethal)"
+ desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Less powerful by design, guns chambered in .38 caliber rounds are still quite popular for use by police forces, \
+ private security firms and organizations unable to access energy-based nonlethal weaponry. The lower (relative) penetrative power is useful for preventing potential hull damage \
+ aboard space stations and shuttles."
+ id = "c38_mag"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30,
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3,
+ )
+ build_path = /obj/item/ammo_box/magazine/m38
+ category = list(
+ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
+/datum/design/c38_trac_mag
+ name = "Magazine (.38 TRAC) (Less Lethal)"
+ desc = "Designed to tactically reload a NT BR-38 Battle Rifle. TRAC bullets embed a tracking implant within the target's body. The implant's signal is incompatible with teleporters."
+ id = "c38_trac_mag"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30,
+ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 2.5,
+ /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3,
+ )
+ build_path = /obj/item/ammo_box/magazine/m38/trac
+ category = list(
+ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
+/datum/design/c38_hotshot_mag
+ name = "Magazine (.38 Hot Shot) (Very Lethal)"
+ desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Hot Shot bullets contain an incendiary payload."
+ id = "c38_hotshot_mag"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30,
+ /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5,
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3,
+ )
+ build_path = /obj/item/ammo_box/magazine/m38/hotshot
+ category = list(
+ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
+/datum/design/c38_iceblox_mag
+ name = "Magazine (.38 Iceblox) (Lethal/Very Lethal (Lizardpeople))"
+ desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Iceblox bullets contain a cryogenic payload."
+ id = "c38_iceblox_mag"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30,
+ /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5,
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3,
+ )
+ build_path = /obj/item/ammo_box/magazine/m38/iceblox
+ category = list(
+ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
+/datum/design/c38_rubber_mag
+ name = "Magazine (.38 Rubber) (Less Lethal)"
+ desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Rubber bullets are bouncy and less-than-lethal."
+ id = "c38_rubber_mag"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30,
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3,
+ )
+ build_path = /obj/item/ammo_box/magazine/m38/match/bouncy
+ category = list(
+ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
+/datum/design/c38_true_mag
+ name = "Magazine (.38 Truee Strike) (Lethal)"
+ desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Bullets bounce towards new targets with surprising accuracy."
+ id = "c38_true_strike_mag"
+ build_type = PROTOLATHE | AWAY_LATHE
+ materials = list(
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30,
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3,
+ /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+ build_path = /obj/item/ammo_box/magazine/m38/true
+ category = list(
+ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
/datum/design/rubbershot/sec
id = "sec_rshot"
desc = "Rubbershot shotgun shells. Fires a cloud of pellets. Rubber bullets are bouncy and less-than-lethal."
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 998995436ad52..75ad0146fd4b9 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -363,7 +363,7 @@
visible_message(span_danger("[src] dangerously overheats, launching a flaming fuel orb!"))
investigate_log("Experimentor has launched a fireball at [M]!", INVESTIGATE_EXPERIMENTOR)
var/obj/projectile/magic/fireball/FB = new /obj/projectile/magic/fireball(start)
- FB.preparePixelProjectile(MT, start)
+ FB.aim_projectile(MT, start)
FB.fire()
else if(prob(EFFECT_PROB_LOW * (100 - malfunction_probability_coeff) * 0.01))
visible_message(span_danger("[src] malfunctions, melting [exp_on] and releasing a burst of flame!"))
@@ -828,7 +828,6 @@
var/datum/dimension_theme/shifter = SSmaterials.dimensional_themes[new_theme_path]
for(var/turf/shiftee in range(1, user))
shifter.apply_theme(shiftee, show_effect = TRUE)
- qdel(shifter)
// prevent *total* spam conversion
min_cooldown += 2 SECONDS
max_cooldown += 2 SECONDS
diff --git a/code/modules/research/techweb/_techweb_node.dm b/code/modules/research/techweb/_techweb_node.dm
index b6d3bd74d6979..79b8b27986c9f 100644
--- a/code/modules/research/techweb/_techweb_node.dm
+++ b/code/modules/research/techweb/_techweb_node.dm
@@ -34,7 +34,7 @@
var/category = "Misc"
/// The list of experiments required to research the node
var/list/required_experiments = list()
- /// If completed, these experiments give a specific point amount discount to the node.area
+ /// If completed, these experiments give a specific point amount discount to the node.
var/list/discount_experiments = list()
/// When this node is completed, allows these experiments to be performed.
var/list/experiments_to_unlock = list()
diff --git a/code/modules/research/techweb/nodes/alien_nodes.dm b/code/modules/research/techweb/nodes/alien_nodes.dm
index 331b91bae61ff..78fd3791e5cd5 100644
--- a/code/modules/research/techweb/nodes/alien_nodes.dm
+++ b/code/modules/research/techweb/nodes/alien_nodes.dm
@@ -1,3 +1,11 @@
+// Simple define to avoid copy-pasting the same code 3 times
+#define ABDUCTOR_SUBTYPE_UNLOCKS(X) \
+ ##X/New() { \
+ . = ..(); \
+ required_items_to_unlock += subtypesof(/obj/item/abductor); \
+ required_items_to_unlock += subtypesof(/obj/item/circuitboard/machine/abductor); \
+ }
+
/datum/techweb_node/alientech //AYYYYYYYYLMAOO tech
id = TECHWEB_NODE_ALIENTECH
display_name = "Alien Technology"
@@ -5,9 +13,7 @@
prereq_ids = list(TECHWEB_NODE_BLUESPACE_TRAVEL)
required_items_to_unlock = list(
/obj/item/stack/sheet/mineral/abductor,
- /obj/item/abductor,
/obj/item/cautery/alien,
- /obj/item/circuitboard/machine/abductor,
/obj/item/circular_saw/alien,
/obj/item/crowbar/abductor,
/obj/item/gun/energy/alien,
@@ -29,6 +35,8 @@
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
hidden = TRUE
+ABDUCTOR_SUBTYPE_UNLOCKS(/datum/techweb_node/alientech)
+
/datum/techweb_node/alientech/on_station_research()
. = ..()
SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_ALIENTECH] = TRUE
@@ -47,8 +55,6 @@
"alien_wrench",
)
required_items_to_unlock = list(
- /obj/item/abductor,
- /obj/item/circuitboard/machine/abductor,
/obj/item/crowbar/abductor,
/obj/item/gun/energy/shrink_ray,
/obj/item/melee/baton/abductor,
@@ -62,6 +68,8 @@
hidden = TRUE
announce_channels = list(RADIO_CHANNEL_ENGINEERING)
+ABDUCTOR_SUBTYPE_UNLOCKS(/datum/techweb_node/alien_engi)
+
/datum/techweb_node/alien_surgery
id = TECHWEB_NODE_ALIEN_SURGERY
display_name = "Alien Surgery"
@@ -80,9 +88,7 @@
"surgery_zombie",
)
required_items_to_unlock = list(
- /obj/item/abductor,
/obj/item/cautery/alien,
- /obj/item/circuitboard/machine/abductor,
/obj/item/circular_saw/alien,
/obj/item/crowbar/abductor,
/obj/item/gun/energy/alien,
@@ -102,3 +108,7 @@
discount_experiments = list(/datum/experiment/scanning/points/slime/hard = TECHWEB_TIER_5_POINTS)
hidden = TRUE
announce_channels = list(RADIO_CHANNEL_MEDICAL)
+
+ABDUCTOR_SUBTYPE_UNLOCKS(/datum/techweb_node/alien_surgery)
+
+#undef ABDUCTOR_SUBTYPE_UNLOCKS
diff --git a/code/modules/research/techweb/nodes/atmos_nodes.dm b/code/modules/research/techweb/nodes/atmos_nodes.dm
index b0e2f1598d1e5..86992d5919611 100644
--- a/code/modules/research/techweb/nodes/atmos_nodes.dm
+++ b/code/modules/research/techweb/nodes/atmos_nodes.dm
@@ -65,7 +65,7 @@
"plasmacutter",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
- required_experiments = list(/datum/experiment/ordnance/gaseous/plasma)
+ discount_experiments = list(/datum/experiment/ordnance/gaseous/plasma = TECHWEB_TIER_2_POINTS)
announce_channels = list(RADIO_CHANNEL_ENGINEERING)
/datum/techweb_node/fusion
diff --git a/code/modules/research/techweb/nodes/cyborg_nodes.dm b/code/modules/research/techweb/nodes/cyborg_nodes.dm
index 13725f62a4335..173c47fcc8324 100644
--- a/code/modules/research/techweb/nodes/cyborg_nodes.dm
+++ b/code/modules/research/techweb/nodes/cyborg_nodes.dm
@@ -156,7 +156,6 @@
"implantcase",
"implanter",
"locator",
- "c38_trac",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY, RADIO_CHANNEL_MEDICAL)
diff --git a/code/modules/research/techweb/nodes/engi_nodes.dm b/code/modules/research/techweb/nodes/engi_nodes.dm
index 4ef55e21bc97a..75c9459771c26 100644
--- a/code/modules/research/techweb/nodes/engi_nodes.dm
+++ b/code/modules/research/techweb/nodes/engi_nodes.dm
@@ -155,6 +155,7 @@
"manulathe",
"manusorter",
"manurouter",
+ "mailsorter",
)
/datum/techweb_node/energy_manipulation
diff --git a/code/modules/research/techweb/nodes/mech_nodes.dm b/code/modules/research/techweb/nodes/mech_nodes.dm
index 82d6484bf0225..bf520b2fc3d72 100644
--- a/code/modules/research/techweb/nodes/mech_nodes.dm
+++ b/code/modules/research/techweb/nodes/mech_nodes.dm
@@ -96,6 +96,7 @@
"clarke_right_arm",
"clarke_main",
"clarke_peri",
+ "mecha_kineticgun",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_SUPPLY)
diff --git a/code/modules/research/techweb/nodes/mining_nodes.dm b/code/modules/research/techweb/nodes/mining_nodes.dm
index 1bfa3a9284ad5..9c0ab9d879d1b 100644
--- a/code/modules/research/techweb/nodes/mining_nodes.dm
+++ b/code/modules/research/techweb/nodes/mining_nodes.dm
@@ -56,7 +56,6 @@
description = "Research of Proto-Kinetic Accelerators (PKAs), pneumatic guns renowned for their exceptional performance in low-pressure environments."
prereq_ids = list(TECHWEB_NODE_MINING, TECHWEB_NODE_GAS_COMPRESSION)
design_ids = list(
- "mecha_kineticgun",
"damagemod",
"rangemod",
"cooldownmod",
diff --git a/code/modules/research/techweb/nodes/modsuit_nodes.dm b/code/modules/research/techweb/nodes/modsuit_nodes.dm
index cc31a1fc1ef77..0ce6eb4b229ae 100644
--- a/code/modules/research/techweb/nodes/modsuit_nodes.dm
+++ b/code/modules/research/techweb/nodes/modsuit_nodes.dm
@@ -34,6 +34,7 @@
"mod_longfall",
"mod_thermal_regulator",
"mod_sign_radio",
+ "mod_mister_janitor",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
announce_channels = list(RADIO_CHANNEL_SCIENCE)
diff --git a/code/modules/research/techweb/nodes/research_nodes.dm b/code/modules/research/techweb/nodes/research_nodes.dm
index f05199ab65e68..3b58551ec9cb3 100644
--- a/code/modules/research/techweb/nodes/research_nodes.dm
+++ b/code/modules/research/techweb/nodes/research_nodes.dm
@@ -49,7 +49,7 @@
"gigabeacon",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
- required_experiments = list(/datum/experiment/scanning/points/bluespace_crystal)
+ discount_experiments = list(/datum/experiment/scanning/points/bluespace_crystal)
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL, RADIO_CHANNEL_SERVICE, RADIO_CHANNEL_SUPPLY)
/datum/techweb_node/bluespace_travel
@@ -94,7 +94,8 @@
"cybernetic_heart_anomalock",
"wormholeprojector",
"gravitygun",
- "polymorph_belt"
+ "polymorph_belt",
+ "perceptomatrix",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS)
discount_experiments = list(/datum/experiment/scanning/points/anomalies = TECHWEB_TIER_5_POINTS)
diff --git a/code/modules/research/techweb/nodes/security_nodes.dm b/code/modules/research/techweb/nodes/security_nodes.dm
index 97d2036207c56..02679b4280ee4 100644
--- a/code/modules/research/techweb/nodes/security_nodes.dm
+++ b/code/modules/research/techweb/nodes/security_nodes.dm
@@ -7,7 +7,9 @@
"toy_armblade",
"toygun",
"c38_rubber",
- "sec_38",
+ "c38_rubber_mag",
+ "c38_sec",
+ "c38_mag",
"capbox",
"foam_dart",
"sec_beanbag_slug",
@@ -80,7 +82,13 @@
prereq_ids = list(TECHWEB_NODE_EXPLOSIVES)
design_ids = list(
"c38_hotshot",
+ "c38_hotshot_mag",
"c38_iceblox",
+ "c38_iceblox_mag",
+ "c38_trac",
+ "c38_trac_mag",
+ "c38_true_strike",
+ "c38_true_strike_mag",
"techshotshell",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS)
diff --git a/code/modules/research/techweb/nodes/service_nodes.dm b/code/modules/research/techweb/nodes/service_nodes.dm
index a2f6b03007109..6786c2f9e1ec1 100644
--- a/code/modules/research/techweb/nodes/service_nodes.dm
+++ b/code/modules/research/techweb/nodes/service_nodes.dm
@@ -159,6 +159,7 @@
"fishing_portal_generator",
"fishing_rod",
"fish_case",
+ "aquarium_kit",
)
/datum/techweb_node/fishing_equip_adv
@@ -174,6 +175,7 @@
"auto_reel",
"fish_analyzer",
"bluespace_fish_case",
+ "bluespace_fish_tank_kit",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
required_experiments = list(/datum/experiment/scanning/fish)
diff --git a/code/modules/research/xenobiology/crossbreeding/_potions.dm b/code/modules/research/xenobiology/crossbreeding/_potions.dm
index c33868e079711..2f82396168e7a 100644
--- a/code/modules/research/xenobiology/crossbreeding/_potions.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_potions.dm
@@ -9,7 +9,7 @@ Slimecrossing Potions
name = "extract cloning potion"
desc = "A more powerful version of the extract enhancer potion, capable of cloning regular slime extracts."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potpurple"
+ icon_state = "potgold"
/obj/item/slimepotion/extract_cloner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
. = ..()
@@ -102,7 +102,7 @@ Slimecrossing Potions
name = "slime pressurization potion"
desc = "A potent chemical sealant that will render any article of clothing airtight. Has two uses."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potblue"
+ icon_state = "potblack"
var/uses = 2
/obj/item/slimepotion/spaceproof/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
@@ -125,7 +125,7 @@ Slimecrossing Potions
to_chat(user, span_notice("You slather the blue gunk over the [clothing], making it airtight."))
clothing.name = "pressure-resistant [clothing.name]"
clothing.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- clothing.add_atom_colour(COLOR_NAVY, FIXED_COLOUR_PRIORITY)
+ clothing.add_atom_colour(color_transition_filter(COLOR_NAVY, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY)
clothing.min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
clothing.cold_protection = clothing.body_parts_covered
clothing.clothing_flags |= STOPSPRESSUREDAMAGE
@@ -139,14 +139,14 @@ Slimecrossing Potions
name = "extract maximizer"
desc = "An extremely potent chemical mix that will maximize a slime extract's uses."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potpurple"
+ icon_state = "potcerulean"
//Lavaproofing potion - Charged Red
/obj/item/slimepotion/lavaproof
name = "slime lavaproofing potion"
desc = "A strange, reddish goo said to repel lava as if it were water, without reducing flammability. Has two uses."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potred"
+ icon_state = "potyellow"
resistance_flags = LAVA_PROOF | FIRE_PROOF
var/uses = 2
@@ -165,7 +165,7 @@ Slimecrossing Potions
to_chat(user, span_notice("You slather the red gunk over the [clothing], making it lavaproof."))
clothing.name = "lavaproof [clothing.name]"
clothing.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- clothing.add_atom_colour(COLOR_MAROON, FIXED_COLOUR_PRIORITY)
+ clothing.add_atom_colour(color_transition_filter(COLOR_MAROON, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY)
clothing.resistance_flags |= LAVA_PROOF
if (isclothing(clothing))
var/obj/item/clothing/clothing_real = clothing
@@ -181,7 +181,7 @@ Slimecrossing Potions
name = "slime revival potion"
desc = "Infused with plasma and compressed gel, this brings dead slimes back to life."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potsilver"
+ icon_state = "potgrey"
/obj/item/slimepotion/slime_reviver/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
. = ..()
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index c3eb811fa4270..f114d3ad55da4 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -211,9 +211,6 @@ Burning extracts:
effect_desc = "The user gets a dull arm blade in the hand it is used in."
/obj/item/slimecross/burning/green/do_effect(mob/user)
- var/which_hand = "l_hand"
- if(!(user.active_hand_index % 2))
- which_hand = "r_hand"
var/mob/living/L = user
if(!istype(user))
return
@@ -226,7 +223,7 @@ Burning extracts:
else
user.visible_message(span_danger("[src] sublimates the flesh around [user]'s arm, transforming the bone into a gruesome blade!"))
user.emote("scream")
- L.apply_damage(30,BURN,which_hand)
+ L.apply_damage(30, BURN, L.get_active_hand())
..()
/obj/item/slimecross/burning/pink
diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm
index 0a22cd0380f5e..c1c599da345c2 100644
--- a/code/modules/research/xenobiology/crossbreeding/chilling.dm
+++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm
@@ -252,9 +252,6 @@ Chilling extracts:
effect_desc = "Creates a bone gun in the hand it is used in, which uses blood as ammo."
/obj/item/slimecross/chilling/green/do_effect(mob/user)
- var/which_hand = "l_hand"
- if(!(user.active_hand_index % 2))
- which_hand = "r_hand"
var/mob/living/L = user
if(!istype(user))
return
@@ -267,7 +264,7 @@ Chilling extracts:
else
user.visible_message(span_danger("[src] chills and snaps off the front of the bone on [user]'s arm, leaving behind a strange, gun-like structure!"))
user.emote("scream")
- L.apply_damage(30,BURN,which_hand)
+ L.apply_damage(30, BURN, L.get_active_hand())
..()
/obj/item/slimecross/chilling/pink
diff --git a/code/modules/research/xenobiology/crossbreeding/prismatic.dm b/code/modules/research/xenobiology/crossbreeding/prismatic.dm
index 947323b0e47f4..647711192afed 100644
--- a/code/modules/research/xenobiology/crossbreeding/prismatic.dm
+++ b/code/modules/research/xenobiology/crossbreeding/prismatic.dm
@@ -14,7 +14,7 @@ Prismatic extracts:
if(!isturf(interacting_with) || isspaceturf(interacting_with))
return NONE
user.do_attack_animation(interacting_with)
- interacting_with.add_atom_colour(paintcolor, WASHABLE_COLOUR_PRIORITY)
+ interacting_with.add_atom_colour(color_transition_filter(paintcolor, SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY)
playsound(interacting_with, 'sound/effects/slosh.ogg', 20, TRUE)
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
index a2c5698fbb192..a0d9a1e89eff5 100644
--- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm
+++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
@@ -30,7 +30,7 @@ Regenerative extracts:
span_notice("You squeeze [src], and it bursts in your hand, splashing you with milky goo which quickly regenerates your injuries!"))
core_effect_before(H, user)
user.do_attack_animation(interacting_with)
- H.revive(HEAL_ALL)
+ H.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS)
core_effect(H, user)
playsound(H, 'sound/effects/splat.ogg', 40, TRUE)
qdel(src)
@@ -128,13 +128,13 @@ Regenerative extracts:
if(fireproofed)
target.visible_message(span_notice("Some of [target]'s clothing gets coated in the goo, and turns blue!"))
-/obj/item/slimecross/regenerative/darkblue/proc/fireproof(obj/item/clothing/C)
- C.name = "fireproofed [C.name]"
- C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- C.add_atom_colour(COLOR_NAVY, FIXED_COLOUR_PRIORITY)
- C.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
- C.heat_protection = C.body_parts_covered
- C.resistance_flags |= FIRE_PROOF
+/obj/item/slimecross/regenerative/darkblue/proc/fireproof(obj/item/clothing/clothing_piece)
+ clothing_piece.name = "fireproofed [clothing_piece.name]"
+ clothing_piece.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
+ clothing_piece.add_atom_colour(color_transition_filter(COLOR_NAVY, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY)
+ clothing_piece.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ clothing_piece.heat_protection = clothing_piece.body_parts_covered
+ clothing_piece.resistance_flags |= FIRE_PROOF
/obj/item/slimecross/regenerative/silver
colour = SLIME_TYPE_SILVER
@@ -188,7 +188,7 @@ Regenerative extracts:
/obj/item/slimecross/regenerative/pyrite/core_effect(mob/living/target, mob/user)
target.visible_message(span_warning("The milky goo coating [target] leaves [target.p_them()] a different color!"))
- target.add_atom_colour(rgb(rand(0,255),rand(0,255),rand(0,255)),WASHABLE_COLOUR_PRIORITY)
+ target.add_atom_colour(color_transition_filter(rgb(rand(0,255), rand(0,255), rand(0,255)), SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY)
/obj/item/slimecross/regenerative/red
colour = SLIME_TYPE_RED
@@ -270,7 +270,7 @@ Regenerative extracts:
if(target == user)
return
var/mob/living/U = user
- U.revive(HEAL_ALL)
+ U.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS)
to_chat(U, span_notice("Some of the milky goo sprays onto you, as well!"))
/obj/item/slimecross/regenerative/adamantine
diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm
index fc6d236f96a25..66cbd4b93de5b 100644
--- a/code/modules/research/xenobiology/xenobio_camera.dm
+++ b/code/modules/research/xenobiology/xenobio_camera.dm
@@ -1,22 +1,20 @@
//Xenobio control console
-/mob/eye/ai_eye/remote/xenobio
- visible_icon = TRUE
- icon = 'icons/mob/eyemob.dmi'
- icon_state = "generic_camera"
+/mob/eye/camera/remote/xenobio
+ visible_to_user = TRUE
var/allowed_area = null
-/mob/eye/ai_eye/remote/xenobio/Initialize(mapload)
+/mob/eye/camera/remote/xenobio/Initialize(mapload)
var/area/our_area = get_area(loc)
allowed_area = our_area.name
. = ..()
-/mob/eye/ai_eye/remote/xenobio/setLoc(turf/destination, force_update = FALSE)
+/mob/eye/camera/remote/xenobio/setLoc(turf/destination, force_update = FALSE)
var/area/new_area = get_area(destination)
if(new_area && new_area.name == allowed_area || new_area && (new_area.area_flags & XENOBIOLOGY_COMPATIBLE))
return ..()
-/mob/eye/ai_eye/remote/xenobio/can_z_move(direction, turf/start, turf/destination, z_move_flags = NONE, mob/living/rider)
+/mob/eye/camera/remote/xenobio/can_z_move(direction, turf/start, turf/destination, z_move_flags = NONE, mob/living/rider)
. = ..()
if(!.)
return
@@ -84,11 +82,9 @@
stored_slimes -= gone
/obj/machinery/computer/camera_advanced/xenobio/CreateEye()
- eyeobj = new /mob/eye/ai_eye/remote/xenobio(get_turf(src))
- eyeobj.origin = src
- eyeobj.visible_icon = TRUE
- eyeobj.icon = 'icons/mob/eyemob.dmi'
- eyeobj.icon_state = "generic_camera"
+ eyeobj = new /mob/eye/camera/remote/xenobio(get_turf(src), src)
+
+ return TRUE
/obj/machinery/computer/camera_advanced/xenobio/GrantActions(mob/living/user)
. = ..()
@@ -151,7 +147,7 @@ Boilerplate check for a valid area to perform a camera action in.
Checks if the AI eye is on a valid turf and then checks if the target turf is xenobiology compatible
Due to keyboard shortcuts, the second one is not necessarily the remote eye's location.
*/
-/obj/machinery/computer/camera_advanced/xenobio/proc/validate_area(mob/living/user, mob/eye/ai_eye/remote/xenobio/remote_eye, turf/open/target_turf)
+/obj/machinery/computer/camera_advanced/xenobio/proc/validate_area(mob/living/user, mob/eye/camera/remote/xenobio/remote_eye, turf/open/target_turf)
if(!GLOB.cameranet.checkTurfVis(remote_eye.loc))
to_chat(user, span_warning("Target is not near a camera. Cannot proceed."))
return FALSE
@@ -228,7 +224,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!target || !isliving(owner))
return
var/mob/living/owner_mob = owner
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control
+ var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target
if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc))
@@ -245,7 +241,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!target || !isliving(owner))
return
var/mob/living/owner_mob = owner
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control
+ var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target
if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc))
@@ -264,7 +260,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!target || !isliving(owner))
return
var/mob/living/living_owner = owner
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = living_owner.remote_control
+ var/mob/eye/camera/remote/xenobio/remote_eye = living_owner.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target
if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc))
@@ -282,7 +278,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!target || !isliving(owner))
return
var/mob/living/owner_mob = owner
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control
+ var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target
var/obj/machinery/monkey_recycler/recycler = xeno_console.connected_recycler
@@ -305,7 +301,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!target || !isliving(owner))
return
var/mob/living/owner_mob = owner
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control
+ var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target
if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc))
@@ -324,7 +320,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
return
var/mob/living/owner_mob = owner
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control
+ var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target
if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc))
@@ -375,8 +371,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!isslime(target_slime))
return
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control
- var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin
+ var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control
+ var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve()
if(!xeno_console.validate_area(user, remote_eye, target_slime.loc))
return
@@ -391,8 +387,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
/obj/machinery/computer/camera_advanced/xenobio/proc/XenoSlimeClickShift(mob/living/user, mob/living/basic/slime/target_slime)
SIGNAL_HANDLER
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control
- var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin
+ var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control
+ var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve()
if(!xeno_console.validate_area(user, remote_eye, target_slime.loc))
return
@@ -404,8 +400,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
SIGNAL_HANDLER
var/mob/living/user_mob = user
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = user_mob.remote_control
- var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin
+ var/mob/eye/camera/remote/xenobio/remote_eye = user_mob.remote_control
+ var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve()
if(!xeno_console.validate_area(user, remote_eye, target_turf))
return
@@ -430,8 +426,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
return
var/cleanup = FALSE
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control
- var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin
+ var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control
+ var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve()
if(!xeno_console.validate_area(user, remote_eye, target_turf))
return
@@ -449,8 +445,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!ismonkey(target_mob))
return
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control
- var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin
+ var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control
+ var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve()
if(!xeno_console.connected_recycler)
to_chat(user, span_warning("There is no connected monkey recycler. Use a multitool to link one."))
@@ -466,8 +462,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo
if(!isslime(target_slime))
return
- var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control
- var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin
+ var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control
+ var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve()
if(!xeno_console.validate_area(user, remote_eye, target_slime.loc))
return
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 594163d153bcc..f63ee0f088076 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -896,7 +896,7 @@
name = "slime speed potion"
desc = "A potent chemical mix that will remove the slowdown from any item."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potyellow"
+ icon_state = "potred"
/obj/item/slimepotion/speed/interact_with_atom(obj/interacting_with, mob/living/user, list/modifiers)
. = ..()
@@ -921,7 +921,7 @@
to_chat(user, span_notice("You slather the red gunk over the [interacting_with], making it faster."))
interacting_with.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- interacting_with.add_atom_colour(COLOR_RED, FIXED_COLOUR_PRIORITY)
+ interacting_with.add_atom_colour(color_transition_filter(COLOR_RED, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY)
interacting_with.drag_slowdown = 0
ADD_TRAIT(interacting_with, TRAIT_SPEED_POTIONED, SLIME_POTION_TRAIT)
qdel(src)
@@ -952,7 +952,7 @@
to_chat(user, span_notice("You slather the blue gunk over the [clothing], fireproofing it."))
clothing.name = "fireproofed [clothing.name]"
clothing.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- clothing.add_atom_colour(COLOR_NAVY, FIXED_COLOUR_PRIORITY)
+ clothing.add_atom_colour(color_transition_filter(COLOR_NAVY, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY)
clothing.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
clothing.heat_protection = clothing.body_parts_covered
clothing.resistance_flags |= FIRE_PROOF
@@ -965,7 +965,7 @@
name = "gender change potion"
desc = "An interesting chemical mix that changes the biological gender of what its applied to. Cannot be used on things that lack gender entirely."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potlightpink"
+ icon_state = "potrainbow"
/obj/item/slimepotion/genderchange/attack(mob/living/L, mob/user)
if(!istype(L) || L.stat == DEAD)
@@ -989,7 +989,7 @@
name = "renaming potion"
desc = "A potion that allows a self-aware being to change what name it subconciously presents to the world."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potgreen"
+ icon_state = "potbrown"
var/being_used = FALSE
@@ -1023,7 +1023,7 @@
name = "bluespace radio potion"
desc = "A strange chemical that grants those who ingest it the ability to broadcast and receive subscape radio waves."
icon = 'icons/obj/medical/chemical.dmi'
- icon_state = "potgrey"
+ icon_state = "potbluespace"
/obj/item/slimepotion/slime/slimeradio/attack(mob/living/radio_head, mob/user)
if(!isanimal_or_basicmob(radio_head))
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
deleted file mode 100644
index 735b0f641a91c..0000000000000
--- a/code/modules/shuttle/emergency.dm
+++ /dev/null
@@ -1,891 +0,0 @@
-#define TIME_LEFT (SSshuttle.emergency.timeLeft())
-#define ENGINES_START_TIME 100
-#define ENGINES_STARTED (SSshuttle.emergency.mode == SHUTTLE_IGNITING)
-#define IS_DOCKED (SSshuttle.emergency.mode == SHUTTLE_DOCKED || (ENGINES_STARTED))
-#define SHUTTLE_CONSOLE_ACTION_DELAY (5 SECONDS)
-
-#define NOT_BEGUN 0
-#define STAGE_1 1
-#define STAGE_2 2
-#define STAGE_3 3
-#define STAGE_4 4
-#define HIJACKED 5
-
-/obj/machinery/computer/emergency_shuttle
- name = "emergency shuttle console"
- desc = "For shuttle control."
- icon_screen = "shuttle"
- icon_keyboard = "tech_key"
- resistance_flags = INDESTRUCTIBLE
- var/auth_need = 3
- var/list/authorized = list()
- var/list/acted_recently = list()
- var/hijack_last_stage_increase = 0 SECONDS
- var/hijack_stage_time = 5 SECONDS
- var/hijack_stage_cooldown = 5 SECONDS
- var/hijack_flight_time_increase = 30 SECONDS
- var/hijack_completion_flight_time_set = 10 SECONDS //How long in deciseconds to set shuttle's timer after hijack is done.
- var/hijack_hacking = FALSE
- var/hijack_announce = TRUE
-
-/obj/machinery/computer/emergency_shuttle/examine(mob/user)
- . = ..()
- if(hijack_announce)
- . += span_danger("Security systems present on console. Any unauthorized tampering will result in an emergency announcement.")
- if(user?.mind?.get_hijack_speed())
- . += span_danger("Alt click on this to attempt to hijack the shuttle. This will take multiple tries (current: stage [SSshuttle.emergency.hijack_status]/[HIJACKED]).")
- . += span_notice("It will take you [(hijack_stage_time * user.mind.get_hijack_speed()) / 10] seconds to reprogram a stage of the shuttle's navigational firmware, and the console will undergo automated timed lockout for [hijack_stage_cooldown/10] seconds after each stage.")
- if(hijack_announce)
- . += span_warning("It is probably best to fortify your position as to be uninterrupted during the attempt, given the automatic announcements..")
-
-/obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user,params)
- if(isidcard(I))
- say("Please equip your ID card into your ID slot to authenticate.")
- . = ..()
-
-/obj/machinery/computer/emergency_shuttle/ui_state(mob/user)
- return GLOB.human_adjacent_state
-
-/obj/machinery/computer/emergency_shuttle/ui_interact(mob/user, datum/tgui/ui)
- . = ..()
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "EmergencyShuttleConsole", name)
- ui.open()
-
-/obj/machinery/computer/emergency_shuttle/ui_data(user)
- var/list/data = list()
-
- data["timer_str"] = SSshuttle.emergency.getTimerStr()
- data["engines_started"] = ENGINES_STARTED
- data["authorizations_remaining"] = max((auth_need - authorized.len), 0)
- var/list/A = list()
- for(var/i in authorized)
- var/obj/item/card/id/ID = i
- var/name = ID.registered_name
- var/job = ID.assignment
-
- if(obj_flags & EMAGGED)
- name = Gibberish(name)
- job = Gibberish(job)
- A += list(list("name" = name, "job" = job))
- data["authorizations"] = A
-
- data["enabled"] = (IS_DOCKED && !ENGINES_STARTED) && !(user in acted_recently)
- data["emagged"] = obj_flags & EMAGGED ? 1 : 0
- return data
-
-/obj/machinery/computer/emergency_shuttle/ui_act(action, params, datum/tgui/ui)
- . = ..()
- if(.)
- return
- if(ENGINES_STARTED) // past the point of no return
- return
- if(!IS_DOCKED) // shuttle computer only has uses when onstation
- return
- if(SSshuttle.emergency.mode == SHUTTLE_DISABLED) // admins have disabled the shuttle.
- return
- if(!isliving(usr))
- return
-
- var/area/my_area = get_area(src)
- if(!istype(my_area, /area/shuttle/escape))
- say("Error - Network connectivity: Console has lost connection to the shuttle.")
- return
-
- var/mob/living/user = usr
- . = FALSE
-
- var/obj/item/card/id/ID = user.get_idcard(TRUE)
-
- if(!ID)
- to_chat(user, span_warning("You don't have an ID."))
- return
-
- if(!(ACCESS_COMMAND in ID.access))
- to_chat(user, span_warning("The access level of your card is not high enough."))
- return
-
- if (user in acted_recently)
- return
-
- var/old_len = authorized.len
- addtimer(CALLBACK(src, PROC_REF(clear_recent_action), user), SHUTTLE_CONSOLE_ACTION_DELAY)
-
- switch(action)
- if("authorize")
- . = authorize(user)
-
- if("repeal")
- authorized -= ID
-
- if("abort")
- if(authorized.len)
- // Abort. The action for when heads are fighting over whether
- // to launch early.
- authorized.Cut()
- . = TRUE
-
- if((old_len != authorized.len) && !ENGINES_STARTED)
- var/alert = (authorized.len > old_len)
- var/repeal = (authorized.len < old_len)
- var/remaining = max(0, auth_need - authorized.len)
- if(authorized.len && remaining)
- minor_announce("[remaining] authorizations needed until shuttle is launched early", null, alert)
- if(repeal)
- minor_announce("Early launch authorization revoked, [remaining] authorizations needed")
-
- acted_recently += user
- SStgui.update_user_uis(user, src)
-
-/obj/machinery/computer/emergency_shuttle/proc/authorize(mob/living/user, source)
- var/obj/item/card/id/ID = user.get_idcard(TRUE)
-
- if(ID in authorized)
- return FALSE
- for(var/i in authorized)
- var/obj/item/card/id/other = i
- if(other.registered_name == ID.registered_name)
- return FALSE // No using IDs with the same name
-
- authorized += ID
-
- message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch")
- log_shuttle("[key_name(user)] has authorized early shuttle launch in [COORD(src)]")
- // Now check if we're on our way
- . = TRUE
- process(SSMACHINES_DT)
-
-/obj/machinery/computer/emergency_shuttle/proc/clear_recent_action(mob/user)
- acted_recently -= user
- if (!QDELETED(user))
- SStgui.update_user_uis(user, src)
-
-/obj/machinery/computer/emergency_shuttle/process()
- // Launch check is in process in case auth_need changes for some reason
- // probably external.
- . = FALSE
- if(!SSshuttle.emergency)
- return
-
- if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
- authorized.Cut()
- obj_flags &= ~(EMAGGED)
-
- if(ENGINES_STARTED || (!IS_DOCKED))
- return .
-
- // Check to see if we've reached criteria for early launch
- if((authorized.len >= auth_need) || (obj_flags & EMAGGED))
- // shuttle timers use 1/10th seconds internally
- SSshuttle.emergency.setTimer(ENGINES_START_TIME)
- var/system_error = obj_flags & EMAGGED ? "SYSTEM ERROR:" : null
- minor_announce("The emergency shuttle will launch in \
- [TIME_LEFT] seconds", system_error, alert=TRUE)
- . = TRUE
-
-/obj/machinery/computer/emergency_shuttle/proc/increase_hijack_stage()
- var/obj/docking_port/mobile/emergency/shuttle = SSshuttle.emergency
- // Begin loading this early, prevents a delay when the shuttle goes to land
- INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, lazy_load_template), LAZY_TEMPLATE_KEY_NUKIEBASE)
-
- shuttle.hijack_status++
- if(hijack_announce)
- announce_hijack_stage()
- hijack_last_stage_increase = world.time
- say("Navigational protocol error! Rebooting systems.")
- if(shuttle.mode == SHUTTLE_ESCAPE)
- if(shuttle.hijack_status == HIJACKED)
- shuttle.setTimer(hijack_completion_flight_time_set)
- else
- shuttle.setTimer(shuttle.timeLeft(1) + hijack_flight_time_increase) //give the guy more time to hijack if it's already in flight.
- return shuttle.hijack_status
-
-/obj/machinery/computer/emergency_shuttle/click_alt(mob/living/user)
- if(!isliving(user))
- return NONE
- attempt_hijack_stage(user)
- return CLICK_ACTION_SUCCESS
-
-/obj/machinery/computer/emergency_shuttle/proc/attempt_hijack_stage(mob/living/user)
- if(!user.CanReach(src))
- return
- if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
- to_chat(user, span_warning("You need your hands free before you can manipulate [src]."))
- return
- var/area/my_area = get_area(src)
- if(!istype(my_area, /area/shuttle/escape))
- say("Error - Network connectivity: Console has lost connection to the shuttle.")
- return
- if(!user?.mind?.get_hijack_speed())
- to_chat(user, span_warning("You manage to open a user-mode shell on [src], and hundreds of lines of debugging output fly through your vision. It is probably best to leave this alone."))
- return
- if(!EMERGENCY_AT_LEAST_DOCKED) // prevent advancing hijack stages on BYOS shuttles until the shuttle has "docked"
- to_chat(user, span_warning("The flight plans for the shuttle haven't been loaded yet, you can't hack this right now."))
- return
- if(hijack_hacking == TRUE)
- return
- if(SSshuttle.emergency.hijack_status >= HIJACKED)
- to_chat(user, span_warning("The emergency shuttle is already loaded with a corrupt navigational payload. What more do you want from it?"))
- return
- if(hijack_last_stage_increase >= world.time - hijack_stage_cooldown)
- say("Error - Catastrophic software error detected. Input is currently on timeout.")
- return
- hijack_hacking = TRUE
- to_chat(user, span_boldwarning("You [SSshuttle.emergency.hijack_status == NOT_BEGUN? "begin" : "continue"] to override [src]'s navigational protocols."))
- say("Software override initiated.")
- var/turf/console_hijack_turf = get_turf(src)
- message_admins("[src] is being overriden for hijack by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(console_hijack_turf)]")
- user.log_message("is hijacking [src].", LOG_GAME)
- . = FALSE
- if(do_after(user, hijack_stage_time * (1 / user.mind.get_hijack_speed()), target = src))
- increase_hijack_stage()
- console_hijack_turf = get_turf(src)
- message_admins("[ADMIN_LOOKUPFLW(user)] has hijacked [src] in [ADMIN_VERBOSEJMP(console_hijack_turf)]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACKED].")
- user.log_message("has hijacked [src]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACKED].", LOG_GAME)
- . = TRUE
- to_chat(user, span_notice("You reprogram some of [src]'s programming, putting it on timeout for [hijack_stage_cooldown/10] seconds."))
- visible_message(
- span_warning("[user.name] appears to be tampering with [src]."),
- blind_message = span_hear("You hear someone tapping computer keys."),
- vision_distance = COMBAT_MESSAGE_RANGE,
- ignored_mobs = user
- )
- hijack_hacking = FALSE
-
-/obj/machinery/computer/emergency_shuttle/proc/announce_hijack_stage()
- var/msg
- switch(SSshuttle.emergency.hijack_status)
- if(NOT_BEGUN)
- return
- if(STAGE_1)
- msg = "AUTHENTICATING - FAIL. AUTHENTICATING - FAIL. AUTHENTICATING - FAI###### Welcome, technician JOHN DOE."
- if(STAGE_2)
- msg = "Warning: Navigational route fails \"IS_AUTHORIZED\". Please try againNN[scramble_message_replace_chars("againagainagainagainagain", 70)]."
- if(STAGE_3)
- msg = "CRC mismatch at ~h~ in calculated route buffer. Full reset initiated of FTL_NAVIGATION_SERVICES. Memory decrypted for automatic repair."
- if(STAGE_4)
- msg = "~ACS_directive module_load(cyberdyne.exploit.nanotrasen.shuttlenav)... NT key mismatch. Confirm load? Y...###Reboot complete. $SET transponder_state = 0; System link initiated with connected engines..."
- if(HIJACKED)
- msg = "SYSTEM OVERRIDE - Resetting course to \[[scramble_message_replace_chars("###########", 100)]\] \
- ([scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]) \
- {AUTH - ROOT (uid: 0)}.\
- [SSshuttle.emergency.mode == SHUTTLE_ESCAPE ? "Diverting from existing route - Bluespace exit in \
- [hijack_completion_flight_time_set >= INFINITY ? "[scramble_message_replace_chars("\[ERROR\]")]" : hijack_completion_flight_time_set/10] seconds." : ""]"
- minor_announce(scramble_message_replace_chars(msg, replaceprob = 10), "Emergency Shuttle", TRUE)
-
-/obj/machinery/computer/emergency_shuttle/emag_act(mob/user, obj/item/card/emag/emag_card)
- // How did you even get on the shuttle before it go to the station?
- if(!IS_DOCKED)
- return FALSE
-
- if((obj_flags & EMAGGED) || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS
- balloon_alert(user, "shuttle already about to launch!")
- return FALSE
-
- var/time = TIME_LEFT
- if (user)
- message_admins("[ADMIN_LOOKUPFLW(user)] has emagged the emergency shuttle [time] seconds before launch.")
- log_shuttle("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.")
- else
- message_admins("The emergency shuttle was emagged [time] seconds before launch, with no emagger.")
- log_shuttle("The emergency shuttle was emagged in [COORD(src)] [time] seconds before launch, with no emagger.")
-
- obj_flags |= EMAGGED
- SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL
- for(var/i in 1 to 10)
- // the shuttle system doesn't know who these people are, but they
- // must be important, surely
- var/obj/item/card/id/ID = new(src)
- var/datum/job/J = pick(SSjob.joinable_occupations)
- ID.registered_name = generate_random_name_species_based(species_type = /datum/species/human)
- ID.assignment = J.title
-
- authorized += ID
-
- process(SSMACHINES_DT)
- return TRUE
-
-/obj/machinery/computer/emergency_shuttle/Destroy()
- // Our fake IDs that the emag generated are just there for colour
- // They're not supposed to be accessible
-
- for(var/obj/item/card/id/ID in src)
- qdel(ID)
- if(authorized?.len)
- authorized.Cut()
- authorized = null
-
- . = ..()
-
-/obj/docking_port/mobile/emergency
- name = "emergency shuttle"
- shuttle_id = "emergency"
- dir = EAST
- port_direction = WEST
- var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself
- var/hijack_status = NOT_BEGUN
-
-/obj/docking_port/mobile/emergency/Initialize(mapload)
- . = ..()
-
- setup_shuttle_events()
-
-/obj/docking_port/mobile/emergency/canDock(obj/docking_port/stationary/S)
- return SHUTTLE_CAN_DOCK //If the emergency shuttle can't move, the whole game breaks, so it will force itself to land even if it has to crush a few departments in the process
-
-/obj/docking_port/mobile/emergency/register()
- . = ..()
- SSshuttle.emergency = src
-
-/obj/docking_port/mobile/emergency/Destroy(force)
- if(force)
- // This'll make the shuttle subsystem use the backup shuttle.
- if(src == SSshuttle.emergency)
- // If we're the selected emergency shuttle
- SSshuttle.emergencyDeregister()
-
- . = ..()
-
-/// DOPPLER EDIT ADDITION: add silent mode support
-/obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, area/signal_origin, reason, red_alert, set_coefficient=null, silent=FALSE)
- if(!isnum(set_coefficient))
- set_coefficient = SSsecurity_level.current_security_level.shuttle_call_time_mod
- alert_coeff = set_coefficient
- var/call_time = SSshuttle.emergency_call_time * alert_coeff * engine_coeff
- switch(mode)
- // The shuttle can not normally be called while "recalling", so
- // if this proc is called, it's via admin fiat
- if(SHUTTLE_RECALL, SHUTTLE_IDLE, SHUTTLE_CALL)
- mode = SHUTTLE_CALL
- setTimer(call_time)
- else
- return
-
- SSshuttle.emergencyCallAmount++
-
- if(prob(70))
- SSshuttle.emergency_last_call_loc = signal_origin
- else
- SSshuttle.emergency_last_call_loc = null
-
- if(!silent) /// DOPPLER ADDITION BEGIN
- priority_announce(
- text = "The emergency shuttle has been called. [red_alert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [(timeLeft(60 SECONDS))] minutes.[reason][SSshuttle.emergency_last_call_loc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ][SSshuttle.admin_emergency_no_recall ? "\n\nWarning: Shuttle recall subroutines disabled; Recall not possible." : ""]",
- title = "Emergency Shuttle Dispatched",
- sound = ANNOUNCER_SHUTTLECALLED,
- sender_override = "Emergency Shuttle Uplink Alert",
- color_override = "orange",
- )
- /// DOPPLER EDIT END
-
-/obj/docking_port/mobile/emergency/cancel(area/signalOrigin)
- if(mode != SHUTTLE_CALL)
- return
- if(SSshuttle.emergency_no_recall)
- return
-
- invertTimer()
- mode = SHUTTLE_RECALL
-
- if(prob(70))
- SSshuttle.emergency_last_call_loc = signalOrigin
- else
- SSshuttle.emergency_last_call_loc = null
- priority_announce(
- text = "The emergency shuttle has been recalled.[SSshuttle.emergency_last_call_loc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]",
- title = "Emergency Shuttle Recalled",
- sound = ANNOUNCER_SHUTTLERECALLED,
- sender_override = "Emergency Shuttle Uplink Alert",
- color_override = "orange",
- )
-
- SSticker.emergency_reason = null
-
-/**
- * Proc that handles checking if the emergency shuttle was successfully hijacked via being the only people present on the shuttle for the elimination hijack or highlander objective
- *
- * Checks for all mobs on the shuttle, checks their status, and checks if they're
- * borgs or simple animals. Depending on the args, certain mobs may be ignored,
- * and the presence of other antags may or may not invalidate a hijack.
- * Args:
- * filter_by_human, default TRUE, tells the proc that only humans should block a hijack. Borgs and animals are ignored and will not block if this is TRUE.
- * solo_hijack, default FALSE, tells the proc to fail with multiple hijackers, such as for Highlander mode.
- */
-/obj/docking_port/mobile/emergency/proc/elimination_hijack(filter_by_human = TRUE, solo_hijack = FALSE)
- var/has_people = FALSE
- var/hijacker_count = 0
- for(var/mob/living/player in GLOB.player_list)
- if(player.mind)
- if(player.stat != DEAD)
- if(issilicon(player) && filter_by_human) //Borgs are technically dead anyways
- continue
- if(isanimal_or_basicmob(player) && filter_by_human) //animals don't count
- continue
- if(isbrain(player)) //also technically dead
- continue
- if(shuttle_areas[get_area(player)])
- has_people = TRUE
- var/location = get_area(player.mind.current)
- //Non-antag present. Can't hijack.
- if(!(player.mind.has_antag_datum(/datum/antagonist)) && !istype(location, /area/shuttle/escape/brig))
- return FALSE
- //Antag present, doesn't stop but let's see if we actually want to hijack
- var/prevent = FALSE
- for(var/datum/antagonist/A in player.mind.antag_datums)
- if(A.can_elimination_hijack == ELIMINATION_ENABLED)
- hijacker_count += 1
- prevent = FALSE
- break //If we have both prevent and hijacker antags assume we want to hijack.
- else if(A.can_elimination_hijack == ELIMINATION_PREVENT)
- prevent = TRUE
- if(prevent)
- return FALSE
-
- //has people AND either there's only one hijacker or there's any but solo_hijack is disabled
- return has_people && ((hijacker_count == 1) || (hijacker_count && !solo_hijack))
-
-/obj/docking_port/mobile/emergency/proc/is_hijacked()
- return hijack_status == HIJACKED
-
-/obj/docking_port/mobile/emergency/proc/ShuttleDBStuff()
- set waitfor = FALSE
- if(!SSdbcore.Connect())
- return
- var/datum/db_query/query_round_shuttle_name = SSdbcore.NewQuery({"
- UPDATE [format_table_name("round")] SET shuttle_name = :name WHERE id = :round_id
- "}, list("name" = name, "round_id" = GLOB.round_id))
- query_round_shuttle_name.Execute()
- qdel(query_round_shuttle_name)
-
-/obj/docking_port/mobile/emergency/check()
- if(!timer)
- return
- var/time_left = timeLeft(1)
-
- // The emergency shuttle doesn't work like others so this
- // ripple check is slightly different
- if(!ripples.len && (time_left <= SHUTTLE_RIPPLE_TIME) && ((mode == SHUTTLE_CALL) || (mode == SHUTTLE_ESCAPE)))
- var/destination
- if(mode == SHUTTLE_CALL)
- destination = SSshuttle.getDock("emergency_home")
- else if(mode == SHUTTLE_ESCAPE)
- destination = SSshuttle.getDock("emergency_away")
- create_ripples(destination)
-
- switch(mode)
- if(SHUTTLE_RECALL)
- if(time_left <= 0)
- mode = SHUTTLE_IDLE
- timer = 0
- if(SHUTTLE_CALL)
- if(time_left <= 0)
- //move emergency shuttle to station
- if(initiate_docking(SSshuttle.getDock("emergency_home")) != DOCKING_SUCCESS)
- setTimer(20)
- return
- mode = SHUTTLE_DOCKED
- setTimer(SSshuttle.emergency_dock_time)
- send2adminchat("Server", "The Emergency Shuttle has docked with the station.")
- priority_announce(
- text = "[SSshuttle.emergency] has docked with the station. You have [DisplayTimeText(SSshuttle.emergency_dock_time)] to board the emergency shuttle.",
- title = "Emergency Shuttle Arrival",
- sound = ANNOUNCER_SHUTTLEDOCK,
- sender_override = "Emergency Shuttle Uplink Alert",
- color_override = "orange",
- )
- ShuttleDBStuff()
- addtimer(CALLBACK(src, PROC_REF(announce_shuttle_events)), 20 SECONDS)
-
-
- if(SHUTTLE_DOCKED)
- if(time_left <= ENGINES_START_TIME)
- mode = SHUTTLE_IGNITING
- SSshuttle.checkHostileEnvironment()
- if(mode == SHUTTLE_STRANDED)
- return
- for(var/A in SSshuttle.mobile_docking_ports)
- var/obj/docking_port/mobile/M = A
- if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to.
- M.check_transit_zone()
-
- if(SHUTTLE_IGNITING)
- var/success = TRUE
- SSshuttle.checkHostileEnvironment()
- if(mode == SHUTTLE_STRANDED)
- return
-
- success &= (check_transit_zone() == TRANSIT_READY)
- for(var/A in SSshuttle.mobile_docking_ports)
- var/obj/docking_port/mobile/M = A
- if(M.launch_status == UNLAUNCHED)
- success &= (M.check_transit_zone() == TRANSIT_READY)
- if(!success)
- setTimer(ENGINES_START_TIME)
-
- if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch
- sound_played = 1 //Only rev them up once.
- var/list/areas = list()
- for(var/area/shuttle/escape/E in GLOB.areas)
- areas += E
- hyperspace_sound(HYPERSPACE_WARMUP, areas)
-
- if(time_left <= 0 && !SSshuttle.emergency_no_escape)
- //move each escape pod (or applicable spaceship) to its corresponding transit dock
- for(var/A in SSshuttle.mobile_docking_ports)
- var/obj/docking_port/mobile/M = A
- M.on_emergency_launch()
-
- //now move the actual emergency shuttle to its transit dock
- var/list/areas = list()
- for(var/area/shuttle/escape/E in GLOB.areas)
- areas += E
- hyperspace_sound(HYPERSPACE_LAUNCH, areas)
- enterTransit()
-
- //Tell the events we're starting, so they can time their spawns or do some other stuff
- for(var/datum/shuttle_event/event as anything in event_list)
- event.start_up_event(SSshuttle.emergency_escape_time * engine_coeff)
-
- mode = SHUTTLE_ESCAPE
- launch_status = ENDGAME_LAUNCHED
- setTimer(SSshuttle.emergency_escape_time * engine_coeff)
- priority_announce(
- text = "The emergency shuttle has left the station. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].",
- title = "Emergency Shuttle Departure",
- sender_override = "Emergency Shuttle Uplink Alert",
- color_override = "orange",
- )
- INVOKE_ASYNC(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, poll_hearts))
- INVOKE_ASYNC(SSvote, TYPE_PROC_REF(/datum/controller/subsystem/vote, initiate_vote), /datum/vote/map_vote, vote_initiator_name = "Map Rotation", forced = TRUE)
-
- if(!is_reserved_level(z))
- CRASH("Emergency shuttle did not move to transit z-level!")
-
- if(SHUTTLE_STRANDED, SHUTTLE_DISABLED)
- SSshuttle.checkHostileEnvironment()
-
-
- if(SHUTTLE_ESCAPE)
- if(sound_played && time_left <= HYPERSPACE_END_TIME)
- var/list/areas = list()
- for(var/area/shuttle/escape/E in GLOB.areas)
- areas += E
- hyperspace_sound(HYPERSPACE_END, areas)
- if(time_left <= PARALLAX_LOOP_TIME)
- var/area_parallax = FALSE
- for(var/place in shuttle_areas)
- var/area/shuttle/shuttle_area = place
- if(shuttle_area.parallax_movedir)
- area_parallax = TRUE
- break
- if(area_parallax)
- parallax_slowdown()
- for(var/A in SSshuttle.mobile_docking_ports)
- var/obj/docking_port/mobile/M = A
- if(M.launch_status == ENDGAME_LAUNCHED)
- if(istype(M, /obj/docking_port/mobile/pod))
- M.parallax_slowdown()
-
- process_events()
-
- if(time_left <= 0)
- //move each escape pod to its corresponding escape dock
- for(var/obj/docking_port/mobile/port as anything in SSshuttle.mobile_docking_ports)
- port.on_emergency_dock()
-
- // now move the actual emergency shuttle to centcom
- // unless the shuttle is "hijacked"
- var/destination_dock = "emergency_away"
- if(is_hijacked() || elimination_hijack())
- // just double check
- SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_NUKIEBASE)
- destination_dock = "emergency_syndicate"
- minor_announce("Corruption detected in \
- shuttle navigation protocols. Please contact your \
- supervisor.", "SYSTEM ERROR:", sound_override = 'sound/announcer/announcement/announce_syndi.ogg')
-
- dock_id(destination_dock)
- mode = SHUTTLE_ENDGAME
- timer = 0
-
-/obj/docking_port/mobile/emergency/transit_failure()
- ..()
- message_admins("Moving emergency shuttle directly to centcom dock to prevent deadlock.")
-
- mode = SHUTTLE_ESCAPE
- launch_status = ENDGAME_LAUNCHED
- setTimer(SSshuttle.emergency_escape_time)
- priority_announce(
- text = "The emergency shuttle is preparing for direct jump. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].",
- title = "Emergency Shuttle Transit Failure",
- sender_override = "Emergency Shuttle Uplink Alert",
- color_override = "orange",
- )
-
-///Generate a list of events to run during the departure
-/obj/docking_port/mobile/emergency/proc/setup_shuttle_events()
- var/list/names = list()
- for(var/datum/shuttle_event/event as anything in subtypesof(/datum/shuttle_event))
- if(prob(initial(event.event_probability)))
- add_shuttle_event(event)
- names += initial(event.name)
- if(LAZYLEN(names))
- log_game("[capitalize(name)] has selected the following shuttle events: [english_list(names)].")
-
-/obj/docking_port/mobile/monastery
- name = "monastery pod"
- shuttle_id = "mining_common" //set so mining can call it down
- launch_status = UNLAUNCHED //required for it to launch as a pod.
-
-/obj/docking_port/mobile/monastery/on_emergency_dock()
- if(launch_status == ENDGAME_LAUNCHED)
- initiate_docking(SSshuttle.getDock("pod_away")) //docks our shuttle as any pod would
- mode = SHUTTLE_ENDGAME
-
-/obj/docking_port/mobile/pod
- name = "escape pod"
- shuttle_id = "pod"
- launch_status = UNLAUNCHED
-
-/obj/docking_port/mobile/pod/request(obj/docking_port/stationary/S)
- var/obj/machinery/computer/shuttle/connected_computer = get_control_console()
- if(!istype(connected_computer, /obj/machinery/computer/shuttle/pod))
- return FALSE
- if(!(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) && !(connected_computer.obj_flags & EMAGGED))
- to_chat(usr, span_warning("Escape pods will only launch during \"Code Red\" security alert."))
- return FALSE
- if(launch_status == UNLAUNCHED)
- launch_status = EARLY_LAUNCHED
- return ..()
-
-/obj/docking_port/mobile/pod/cancel()
- return
-
-/obj/machinery/computer/shuttle/pod
- name = "pod control computer"
- locked = TRUE
- possible_destinations = "pod_asteroid"
- icon = 'icons/obj/machines/wallmounts.dmi'
- icon_state = "pod_off"
- circuit = /obj/item/circuitboard/computer/emergency_pod
- light_color = LIGHT_COLOR_BLUE
- density = FALSE
- icon_keyboard = null
- icon_screen = "pod_on"
-
-/obj/machinery/computer/shuttle/pod/Initialize(mapload)
- . = ..()
- RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, PROC_REF(check_lock))
-
-/obj/machinery/computer/shuttle/pod/emag_act(mob/user, obj/item/card/emag/emag_card)
- if(obj_flags & EMAGGED)
- return FALSE
- obj_flags |= EMAGGED
- locked = FALSE
- balloon_alert(user, "alert level checking disabled")
- icon_screen = "emagged_general"
- update_appearance()
- return TRUE
-
-/obj/machinery/computer/shuttle/pod/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock)
- . = ..()
- if(port)
- //Checks if the computer has already added the shuttle destination with the initial id
- //This has to be done because connect_to_shuttle is called again after its ID is updated
- //due to conflicting id names
- var/base_shuttle_destination = ";[initial(port.shuttle_id)]_lavaland"
- var/shuttle_destination = ";[port.shuttle_id]_lavaland"
-
- var/position = findtext(possible_destinations, base_shuttle_destination)
- if(position)
- if(base_shuttle_destination == shuttle_destination)
- return
- possible_destinations = splicetext(possible_destinations, position, position + length(base_shuttle_destination), shuttle_destination)
- return
-
- possible_destinations += shuttle_destination
-
-/**
- * Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level
- *
- * Arguments:
- * * source The datum source of the signal
- * * new_level The new security level that is in effect
- */
-/obj/machinery/computer/shuttle/pod/proc/check_lock(datum/source, new_level)
- SIGNAL_HANDLER
-
- if(obj_flags & EMAGGED)
- return
- locked = (new_level < SEC_LEVEL_RED)
-
-/obj/docking_port/stationary/random
- name = "escape pod"
- shuttle_id = "pod"
- hidden = TRUE
- override_can_dock_checks = TRUE
- /// The area the pod tries to land at
- var/target_area = /area/lavaland/surface/outdoors
- /// Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced"
- var/edge_distance = 16
-
-/obj/docking_port/stationary/random/Initialize(mapload)
- . = ..()
- if(!mapload)
- return
-
- var/list/turfs = get_area_turfs(target_area)
- var/original_len = turfs.len
- while(turfs.len)
- var/turf/picked_turf = pick(turfs)
- if(picked_turf.x stationary_dock.dwidth)
+ return SHUTTLE_DWIDTH_TOO_LARGE
+
+ if(width-dwidth > stationary_dock.width-stationary_dock.dwidth)
+ return SHUTTLE_WIDTH_TOO_LARGE
+
+ if(dheight > stationary_dock.dheight)
+ return SHUTTLE_DHEIGHT_TOO_LARGE
+
+ if(height-dheight > stationary_dock.height-stationary_dock.dheight)
+ return SHUTTLE_HEIGHT_TOO_LARGE
+
+ //check the dock isn't occupied
+ var/currently_docked = stationary_dock.get_docked()
+ if(currently_docked)
+ // by someone other than us
+ if(currently_docked != src)
+ return SHUTTLE_SOMEONE_ELSE_DOCKED
+ else
+ // This isn't an error, per se, but we can't let the shuttle code
+ // attempt to move us where we currently are, it will get weird.
+ return SHUTTLE_ALREADY_DOCKED
+
+ return SHUTTLE_CAN_DOCK
+
+/obj/docking_port/mobile/proc/check_dock(obj/docking_port/stationary/S, silent = FALSE)
+ var/status = canDock(S)
+ if(status == SHUTTLE_CAN_DOCK)
+ return TRUE
+ else
+ if(status != SHUTTLE_ALREADY_DOCKED && !silent) // SHUTTLE_ALREADY_DOCKED is no cause for error
+ message_admins("Shuttle [src] cannot dock at [S], error: [status]")
+ // We're already docked there, don't need to do anything.
+ // Triggering shuttle movement code in place is weird
+ return FALSE
+
+/obj/docking_port/mobile/proc/transit_failure()
+ message_admins("Shuttle [src] repeatedly failed to create transit zone.")
+
+/**
+ * Calls the shuttle to the destination port, respecting its ignition and call timers
+ *
+ * Arguments:
+ * * destination_port - Stationary docking port to move the shuttle to
+ */
+/obj/docking_port/mobile/proc/request(obj/docking_port/stationary/destination_port)
+ if(!check_dock(destination_port))
+ testing("check_dock failed on request for [src]")
+ return
+
+ if(mode == SHUTTLE_IGNITING && destination == destination_port)
+ return
+
+ switch(mode)
+ if(SHUTTLE_CALL)
+ if(destination_port == destination)
+ if(timeLeft(1) < callTime * engine_coeff)
+ setTimer(callTime * engine_coeff)
+ else
+ destination = destination_port
+ setTimer(callTime * engine_coeff)
+ if(SHUTTLE_RECALL)
+ if(destination_port == destination)
+ setTimer(callTime * engine_coeff - timeLeft(1))
+ else
+ destination = destination_port
+ setTimer(callTime * engine_coeff)
+ mode = SHUTTLE_CALL
+ if(SHUTTLE_IDLE, SHUTTLE_IGNITING)
+ destination = destination_port
+ mode = SHUTTLE_IGNITING
+ setTimer(ignitionTime)
+
+//recall the shuttle to where it was previously
+/obj/docking_port/mobile/proc/cancel()
+ if(mode != SHUTTLE_CALL)
+ return
+
+ remove_ripples()
+
+ invertTimer()
+ mode = SHUTTLE_RECALL
+
+/obj/docking_port/mobile/proc/enterTransit()
+ if((SSshuttle.lockdown && is_station_level(z)) || !canMove()) //emp went off, no escape
+ mode = SHUTTLE_IDLE
+ return
+ previous = null
+ if(!destination)
+ // sent to transit with no destination -> unlimited timer
+ timer = INFINITY
+ var/obj/docking_port/stationary/S0 = get_docked()
+ var/obj/docking_port/stationary/S1 = assigned_transit
+ if(S1)
+ if(initiate_docking(S1) != DOCKING_SUCCESS)
+ WARNING("shuttle \"[shuttle_id]\" could not enter transit space. Docked at [S0 ? S0.shuttle_id : "null"]. Transit dock [S1 ? S1.shuttle_id : "null"].")
+ else if(S0)
+ if(S0.delete_after)
+ qdel(S0, TRUE)
+ else
+ previous = S0
+ else
+ WARNING("shuttle \"[shuttle_id]\" could not enter transit space. S0=[S0 ? S0.shuttle_id : "null"] S1=[S1 ? S1.shuttle_id : "null"]")
+
+
+/obj/docking_port/mobile/proc/jumpToNullSpace()
+ // Destroys the docking port and the shuttle contents.
+ // Not in a fancy way, it just ceases.
+ var/obj/docking_port/stationary/current_dock = get_docked()
+
+ var/underlying_area_type = SHUTTLE_DEFAULT_UNDERLYING_AREA
+ // If the shuttle is docked to a stationary port, restore its normal
+ // "empty" area and turf
+ if(current_dock?.area_type)
+ underlying_area_type = current_dock.area_type
+
+ var/list/old_turfs = return_ordered_turfs(x, y, z, dir)
+
+ var/area/underlying_area = GLOB.areas_by_type[underlying_area_type]
+ if(!underlying_area)
+ underlying_area = new underlying_area_type(null)
+
+ for(var/i in 1 to old_turfs.len)
+ var/turf/oldT = old_turfs[i]
+ if(!oldT || !istype(oldT.loc, area_type))
+ continue
+ oldT.change_area(oldT.loc, underlying_area)
+ oldT.empty(FALSE)
+
+ // Here we locate the bottommost shuttle boundary and remove all turfs above it
+ var/shuttle_tile_depth = oldT.depth_to_find_baseturf(/turf/baseturf_skipover/shuttle)
+ if (!isnull(shuttle_tile_depth))
+ oldT.ScrapeAway(shuttle_tile_depth)
+
+ qdel(src, force=TRUE)
+
+/**
+ * Ghosts and marks as escaped (for greentext purposes) all mobs, then deletes the shuttle.
+ * Used by the Shuttle Manipulator
+ */
+/obj/docking_port/mobile/proc/intoTheSunset()
+ // Loop over mobs
+ for(var/turf/turfs as anything in return_turfs())
+ for(var/mob/living/sunset_mobs in turfs.get_all_contents())
+ // If they have a mind and they're not in the brig, they escaped
+ if(sunset_mobs.mind && !istype(get_area(sunset_mobs), /area/shuttle/escape/brig))
+ sunset_mobs.mind.force_escaped = TRUE
+ // Ghostize them and put them in nullspace stasis (for stat & possession checks)
+ ADD_TRAIT(sunset_mobs, TRAIT_NO_TRANSFORM, REF(src))
+ sunset_mobs.ghostize(FALSE)
+ sunset_mobs.moveToNullspace()
+
+ // Now that mobs are stowed, delete the shuttle
+ jumpToNullSpace()
+
+/obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time)
+ var/list/turfs = ripple_area(S1)
+ for(var/t in turfs)
+ ripples += new /obj/effect/abstract/ripple(t, animate_time)
+
+/obj/docking_port/mobile/proc/remove_ripples()
+ QDEL_LIST(ripples)
+
+/obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/S1)
+ var/list/L0 = return_ordered_turfs(x, y, z, dir)
+ var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir)
+
+ var/list/ripple_turfs = list()
+ var/stop = min(L0.len, L1.len)
+ for(var/i in 1 to stop)
+ var/turf/T0 = L0[i]
+ var/turf/T1 = L1[i]
+ if(!istype(T0.loc, area_type) || istype(T0.loc, /area/shuttle/transit))
+ continue // not part of the shuttle
+ ripple_turfs += T1
+
+ return ripple_turfs
+
+/obj/docking_port/mobile/proc/check_poddoors()
+ for(var/obj/machinery/door/poddoor/shuttledock/pod as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/door/poddoor/shuttledock))
+ pod.check()
+
+/obj/docking_port/mobile/proc/dock_id(id)
+ var/port = SSshuttle.getDock(id)
+ if(port)
+ . = initiate_docking(port)
+ else
+ . = null
+
+//used by shuttle subsystem to check timers
+/obj/docking_port/mobile/proc/check()
+ check_effects()
+ //process_events() if you were to add events to non-escape shuttles, uncomment this
+
+ if(mode == SHUTTLE_IGNITING)
+ check_transit_zone()
+
+ if(timeLeft(1) > 0)
+ return
+ // If we can't dock or we don't have a transit slot, wait for 20 ds,
+ // then try again
+ switch(mode)
+ if(SHUTTLE_CALL, SHUTTLE_PREARRIVAL)
+ if(prearrivalTime && mode != SHUTTLE_PREARRIVAL)
+ mode = SHUTTLE_PREARRIVAL
+ setTimer(prearrivalTime)
+ return
+ var/error = initiate_docking(destination, preferred_direction)
+ if(error && error & (DOCKING_NULL_DESTINATION | DOCKING_NULL_SOURCE))
+ var/msg = "A mobile dock in transit exited initiate_docking() with an error. This is most likely a mapping problem: Error: [error], ([src]) ([previous][ADMIN_JMP(previous)] -> [destination][ADMIN_JMP(destination)])"
+ WARNING(msg)
+ message_admins(msg)
+ mode = SHUTTLE_IDLE
+ return
+ else if(error)
+ setTimer(20)
+ return
+ if(rechargeTime)
+ mode = SHUTTLE_RECHARGING
+ setTimer(rechargeTime)
+ return
+ if(SHUTTLE_RECALL)
+ if(initiate_docking(previous) != DOCKING_SUCCESS)
+ setTimer(20)
+ return
+ if(SHUTTLE_IGNITING)
+ if(check_transit_zone() != TRANSIT_READY)
+ setTimer(20)
+ return
+ else
+ mode = SHUTTLE_CALL
+ setTimer(callTime * engine_coeff)
+ enterTransit()
+ return
+
+ mode = SHUTTLE_IDLE
+ timer = 0
+ destination = null
+
+/obj/docking_port/mobile/proc/check_effects()
+ if(!ripples.len)
+ if((mode == SHUTTLE_CALL) || (mode == SHUTTLE_RECALL))
+ var/tl = timeLeft(1)
+ if(tl <= SHUTTLE_RIPPLE_TIME)
+ create_ripples(destination, tl)
+
+ var/obj/docking_port/stationary/S0 = get_docked()
+ if(istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME)
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ if(shuttle_area.parallax_movedir)
+ parallax_slowdown()
+
+/obj/docking_port/mobile/proc/parallax_slowdown()
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ shuttle_area.parallax_movedir = FALSE
+ if(assigned_transit?.assigned_area)
+ assigned_transit.assigned_area.parallax_movedir = FALSE
+ var/list/L0 = return_ordered_turfs(x, y, z, dir)
+ for (var/thing in L0)
+ var/turf/T = thing
+ if(!T || !istype(T.loc, area_type))
+ continue
+ for (var/atom/movable/movable as anything in T)
+ if (movable.client_mobs_in_contents)
+ movable.update_parallax_contents()
+
+/obj/docking_port/mobile/proc/check_transit_zone()
+ if(assigned_transit)
+ return TRANSIT_READY
+ else
+ SSshuttle.request_transit_dock(src)
+
+/obj/docking_port/mobile/proc/setTimer(wait)
+ timer = world.time + wait
+ last_timer_length = wait
+
+/obj/docking_port/mobile/proc/modTimer(multiple)
+ var/time_remaining = timer - world.time
+ if(time_remaining < 0 || !last_timer_length)
+ return
+ time_remaining *= multiple
+ last_timer_length *= multiple
+ setTimer(time_remaining)
+
+/obj/docking_port/mobile/proc/alert_coeff_change(new_coeff)
+ if(isnull(new_coeff))
+ return
+
+ var/time_multiplier = new_coeff / alert_coeff
+ var/time_remaining = timer - world.time
+ if(time_remaining < 0 || !last_timer_length)
+ return
+
+ time_remaining *= time_multiplier
+ last_timer_length *= time_multiplier
+ alert_coeff = new_coeff
+ setTimer(time_remaining)
+
+/obj/docking_port/mobile/proc/invertTimer()
+ if(!last_timer_length)
+ return
+ var/time_remaining = timer - world.time
+ if(time_remaining > 0)
+ var/time_passed = last_timer_length - time_remaining
+ setTimer(time_passed)
+
+//returns timeLeft
+/obj/docking_port/mobile/proc/timeLeft(divisor)
+ if(divisor <= 0)
+ divisor = 10
+
+ var/ds_remaining
+ if(!timer)
+ ds_remaining = callTime * engine_coeff
+ else
+ ds_remaining = max(0, timer - world.time)
+
+ . = round(ds_remaining / divisor, 1)
+
+// returns 3-letter mode string, used by status screens and mob status panel
+/obj/docking_port/mobile/proc/getModeStr()
+ switch(mode)
+ if(SHUTTLE_IGNITING)
+ return "IGN"
+ if(SHUTTLE_RECALL)
+ return "RCL"
+ if(SHUTTLE_CALL)
+ return "ETA"
+ if(SHUTTLE_DOCKED)
+ return "ETD"
+ if(SHUTTLE_ESCAPE)
+ return "ESC"
+ if(SHUTTLE_STRANDED)
+ return "ERR"
+ if(SHUTTLE_RECHARGING)
+ return "RCH"
+ if(SHUTTLE_PREARRIVAL)
+ return "LDN"
+ if(SHUTTLE_DISABLED)
+ return "DIS"
+ return ""
+
+// returns 5-letter timer string, used by status screens and mob status panel
+/obj/docking_port/mobile/proc/getTimerStr()
+ if(mode == SHUTTLE_STRANDED || mode == SHUTTLE_DISABLED)
+ return "--:--"
+
+ var/timeleft = timeLeft()
+ if(timeleft > 1 HOURS)
+ return "--:--"
+ else if(timeleft > 0)
+ return "[add_leading(num2text((timeleft / 60) % 60), 2, "0")]:[add_leading(num2text(timeleft % 60), 2, "0")]"
+ else
+ return "00:00"
+
+/**
+ * Gets shuttle location status in a form of string for tgui interfaces
+ */
+/obj/docking_port/mobile/proc/get_status_text_tgui()
+ var/obj/docking_port/stationary/dockedAt = get_docked()
+ var/docked_at = dockedAt?.name || "Unknown"
+ if(!istype(dockedAt, /obj/docking_port/stationary/transit))
+ return docked_at
+ if(timeLeft() > 1 HOURS)
+ return "Hyperspace"
+ else
+ var/obj/docking_port/stationary/dst = (mode == SHUTTLE_RECALL) ? previous : destination
+ return "In transit to [dst?.name || "unknown location"]"
+
+/obj/docking_port/mobile/proc/getStatusText()
+ var/obj/docking_port/stationary/dockedAt = get_docked()
+ var/docked_at = dockedAt?.name || "unknown"
+ if(istype(dockedAt, /obj/docking_port/stationary/transit))
+ if (timeLeft() > 1 HOURS)
+ return "hyperspace"
+ else
+ var/obj/docking_port/stationary/dst
+ if(mode == SHUTTLE_RECALL)
+ dst = previous
+ else
+ dst = destination
+ . = "transit towards [dst?.name || "unknown location"] ([getTimerStr()])"
+ else if(mode == SHUTTLE_RECHARGING)
+ return "[docked_at], recharging [getTimerStr()]"
+ else
+ return docked_at
+
+/obj/docking_port/mobile/proc/getDbgStatusText()
+ var/obj/docking_port/stationary/dockedAt = get_docked()
+ . = (dockedAt?.name) ? dockedAt.name : "unknown"
+ if(istype(dockedAt, /obj/docking_port/stationary/transit))
+ var/obj/docking_port/stationary/dst
+ if(mode == SHUTTLE_RECALL)
+ dst = previous
+ else
+ dst = destination
+ if(dst)
+ . = "(transit to) [dst.name || dst.shuttle_id]"
+ else
+ . = "(transit to) nowhere"
+ else if(dockedAt)
+ . = dockedAt.name || dockedAt.shuttle_id
+ else
+ . = "unknown"
+
+
+// attempts to locate /obj/machinery/computer/shuttle with matching ID inside the shuttle
+/obj/docking_port/mobile/proc/get_control_console()
+ for(var/area/shuttle/shuttle_area as anything in shuttle_areas)
+ var/obj/machinery/computer/shuttle/shuttle_computer = locate(/obj/machinery/computer/shuttle) in shuttle_area
+ if(!shuttle_computer)
+ continue
+ if(shuttle_computer.shuttleId == shuttle_id)
+ return shuttle_computer
+ return null
+
+/obj/docking_port/mobile/proc/hyperspace_sound(phase, list/areas)
+ var/selected_sound
+ switch(phase)
+ if(HYPERSPACE_WARMUP)
+ selected_sound = "hyperspace_begin"
+ if(HYPERSPACE_LAUNCH)
+ selected_sound = "hyperspace_progress"
+ if(HYPERSPACE_END)
+ selected_sound = "hyperspace_end"
+ else
+ CRASH("Invalid hyperspace sound phase: [phase]")
+ // This previously was played from each door at max volume, and was one of the worst things I had ever seen.
+ // Now it's instead played from the nearest engine if close, or the first engine in the list if far since it doesn't really matter.
+ // Or a door if for some reason the shuttle has no engine, fuck oh hi daniel fuck it
+ var/range = (engine_coeff * max(width, height))
+ var/long_range = range * 2.5
+ var/atom/distant_source
+
+ if(engine_list.len)
+ distant_source = engine_list[1]
+ else
+ for(var/our_area in areas)
+ distant_source = locate(/obj/machinery/door) in our_area
+ if(distant_source)
+ break
+
+ if(!distant_source)
+ return
+ for(var/mob/zlevel_mobs as anything in SSmobs.clients_by_zlevel[z])
+ var/dist_far = get_dist(zlevel_mobs, distant_source)
+ if(dist_far <= long_range && dist_far > range)
+ zlevel_mobs.playsound_local(distant_source, "sound/runtime/hyperspace/[selected_sound]_distance.ogg", 100)
+ else if(dist_far <= range)
+ var/source
+ if(!engine_list.len)
+ source = distant_source
+ else
+ var/closest_dist = 10000
+ for(var/obj/machinery/power/shuttle_engine/engines as anything in engine_list)
+ var/dist_near = get_dist(zlevel_mobs, engines)
+ if(dist_near < closest_dist)
+ source = engines
+ closest_dist = dist_near
+ zlevel_mobs.playsound_local(source, "sound/runtime/hyperspace/[selected_sound].ogg", 100)
+
+// Losing all initial engines should get you 2
+// Adding another set of engines at 0.5 time
+/obj/docking_port/mobile/proc/alter_engines(mod)
+ if(!mod)
+ return
+ var/old_coeff = engine_coeff
+ engine_coeff = get_engine_coeff(mod)
+ current_engine_power = max(0, current_engine_power + mod)
+ if(in_flight())
+ var/delta_coeff = engine_coeff / old_coeff
+ modTimer(delta_coeff)
+
+// Double initial engines to get to 0.5 minimum
+// Lose all initial engines to get to 2
+//For 0 engine shuttles like BYOS 5 engines to get to doublespeed
+/obj/docking_port/mobile/proc/get_engine_coeff(engine_mod)
+ var/new_value = max(0, current_engine_power + engine_mod)
+ if(new_value == initial_engine_power)
+ return 1
+ if(new_value > initial_engine_power)
+ var/delta = new_value - initial_engine_power
+ var/change_per_engine = (1 - ENGINE_COEFF_MIN) / ENGINE_DEFAULT_MAXSPEED_ENGINES // 5 by default
+ if(initial_engine_power > 0)
+ change_per_engine = (1 - ENGINE_COEFF_MIN) / initial_engine_power // or however many it had
+ return clamp(1 - delta * change_per_engine,ENGINE_COEFF_MIN, ENGINE_COEFF_MAX)
+ if(new_value < initial_engine_power)
+ var/delta = initial_engine_power - new_value
+ var/change_per_engine = 1 //doesn't really matter should not be happening for 0 engine shuttles
+ if(initial_engine_power > 0)
+ change_per_engine = (ENGINE_COEFF_MAX - 1) / initial_engine_power //just linear drop to max delay
+ return clamp(1 + delta * change_per_engine, ENGINE_COEFF_MIN, ENGINE_COEFF_MAX)
+
+
+/obj/docking_port/mobile/proc/in_flight()
+ switch(mode)
+ if(SHUTTLE_CALL,SHUTTLE_RECALL,SHUTTLE_PREARRIVAL)
+ return TRUE
+ if(SHUTTLE_IDLE,SHUTTLE_IGNITING)
+ return FALSE
+ return FALSE // hmm
+
+/obj/docking_port/mobile/emergency/in_flight()
+ switch(mode)
+ if(SHUTTLE_ESCAPE)
+ return TRUE
+ if(SHUTTLE_STRANDED,SHUTTLE_ENDGAME)
+ return FALSE
+ return ..()
+
+//Called when emergency shuttle leaves the station
+/obj/docking_port/mobile/proc/on_emergency_launch()
+ if(launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to.
+ launch_status = ENDGAME_LAUNCHED
+ enterTransit()
+
+///Let people know shits about to go down
+/obj/docking_port/mobile/proc/announce_shuttle_events()
+ for(var/datum/shuttle_event/event as anything in event_list)
+ notify_ghosts("The [name] has selected: [event.name]")
+
+/obj/docking_port/mobile/emergency/on_emergency_launch()
+ return
+
+//Called when emergency shuttle docks at centcom
+/obj/docking_port/mobile/proc/on_emergency_dock()
+ // Mapping a new docking point for each ship mappers could potentially want docking with centcom would take up lots of space,
+ // just let them keep flying off "into the sunset" for their greentext.
+ if(launch_status == ENDGAME_LAUNCHED)
+ launch_status = ENDGAME_TRANSIT
+
+/obj/docking_port/mobile/pod/on_emergency_dock()
+ if(launch_status == ENDGAME_LAUNCHED)
+ initiate_docking(SSshuttle.getDock("[shuttle_id]_away")) //Escape pods dock at centcom
+ mode = SHUTTLE_ENDGAME
+
+/obj/docking_port/mobile/emergency/on_emergency_dock()
+ return
+
+///Process all the shuttle events for every shuttle tick we get
+/obj/docking_port/mobile/proc/process_events()
+ var/list/removees
+ for(var/datum/shuttle_event/event as anything in event_list)
+ if(event.event_process() == SHUTTLE_EVENT_CLEAR) //if we return SHUTTLE_EVENT_CLEAR, we clean them up
+ LAZYADD(removees, event)
+ for(var/item in removees)
+ event_list.Remove(item)
+
+/// Give a typepath of a shuttle event to add to the shuttle. If added during endgame transit, will insta start the event
+/obj/docking_port/mobile/proc/add_shuttle_event(typepath)
+ var/datum/shuttle_event/event = new typepath (src)
+ event_list.Add(event)
+ if(launch_status == ENDGAME_LAUNCHED)
+ event.start_up_event(0)
+ return event
diff --git a/code/modules/shuttle/docking.dm b/code/modules/shuttle/mobile_port/shuttle_move.dm
similarity index 98%
rename from code/modules/shuttle/docking.dm
rename to code/modules/shuttle/mobile_port/shuttle_move.dm
index 32a1ca4950afa..b7e125826dce2 100644
--- a/code/modules/shuttle/docking.dm
+++ b/code/modules/shuttle/mobile_port/shuttle_move.dm
@@ -1,4 +1,5 @@
-/// This is the main proc. It instantly moves our mobile port to stationary port `new_dock`.
+/// This is the main proc. Despite what the name suggests,
+/// it instantly moves our mobile port to stationary port `new_dock`.
/obj/docking_port/mobile/proc/initiate_docking(obj/docking_port/stationary/new_dock, movement_direction, force=FALSE)
// Crashing this ship with NO SURVIVORS
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/mobile_port/shuttle_move_callbacks.dm
similarity index 99%
rename from code/modules/shuttle/on_move.dm
rename to code/modules/shuttle/mobile_port/shuttle_move_callbacks.dm
index d4f7c3ddfcd09..1aac6e4c1aec8 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/mobile_port/shuttle_move_callbacks.dm
@@ -230,11 +230,6 @@ All ShuttleMove procs go here
. = ..()
recharging_turf = get_step(loc, dir)
-/obj/machinery/atmospherics/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
- . = ..()
- if(pipe_vision_img)
- pipe_vision_img.loc = loc
-
/obj/machinery/computer/auxiliary_base/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
. = ..()
if(is_mining_level(z)) //Avoids double logging and landing on other Z-levels due to badminnery
@@ -242,6 +237,9 @@ All ShuttleMove procs go here
/obj/machinery/atmospherics/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
. = ..()
+ if(pipe_vision_img)
+ pipe_vision_img.loc = loc
+
var/missing_nodes = FALSE
for(var/i in 1 to device_type)
if(nodes[i])
diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/mobile_port/shuttle_rotate_callbacks.dm
similarity index 94%
rename from code/modules/shuttle/shuttle_rotate.dm
rename to code/modules/shuttle/mobile_port/shuttle_rotate_callbacks.dm
index 15af6db6a4f6d..7afd43a0d3540 100644
--- a/code/modules/shuttle/shuttle_rotate.dm
+++ b/code/modules/shuttle/mobile_port/shuttle_rotate_callbacks.dm
@@ -82,7 +82,11 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
/obj/machinery/atmospherics/shuttleRotate(rotation, params)
var/list/real_node_connect = get_node_connects()
for(var/i in 1 to device_type)
- real_node_connect[i] = angle2dir(rotation+dir2angle(real_node_connect[i]))
+ var/node_dir = real_node_connect[i]
+ if(isnull(node_dir))
+ continue
+
+ real_node_connect[i] = turn(node_dir, -rotation)
. = ..()
set_init_directions()
@@ -90,7 +94,11 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
var/list/nodes_copy = nodes.Copy()
for(var/i in 1 to device_type)
- var/new_pos = supposed_node_connect.Find(real_node_connect[i])
+ var/node_dir = real_node_connect[i]
+ if(isnull(node_dir))
+ continue
+
+ var/new_pos = supposed_node_connect.Find(node_dir)
nodes[new_pos] = nodes_copy[i]
//prevents shuttles attempting to rotate this since it messes up sprites
diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/mobile_port/variants/arrivals.dm
similarity index 100%
rename from code/modules/shuttle/arrivals.dm
rename to code/modules/shuttle/mobile_port/variants/arrivals.dm
diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/mobile_port/variants/assault_pod.dm
similarity index 100%
rename from code/modules/shuttle/assault_pod.dm
rename to code/modules/shuttle/mobile_port/variants/assault_pod.dm
diff --git a/code/modules/shuttle/battlecruiser_starfury.dm b/code/modules/shuttle/mobile_port/variants/battlecruiser_starfury.dm
similarity index 100%
rename from code/modules/shuttle/battlecruiser_starfury.dm
rename to code/modules/shuttle/mobile_port/variants/battlecruiser_starfury.dm
diff --git a/code/modules/shuttle/elevator.dm b/code/modules/shuttle/mobile_port/variants/elevator.dm
similarity index 100%
rename from code/modules/shuttle/elevator.dm
rename to code/modules/shuttle/mobile_port/variants/elevator.dm
diff --git a/code/modules/shuttle/mobile_port/variants/emergency/emergency.dm b/code/modules/shuttle/mobile_port/variants/emergency/emergency.dm
new file mode 100644
index 0000000000000..58fe035fe8586
--- /dev/null
+++ b/code/modules/shuttle/mobile_port/variants/emergency/emergency.dm
@@ -0,0 +1,313 @@
+/obj/docking_port/mobile/emergency
+ name = "emergency shuttle"
+ shuttle_id = "emergency"
+ dir = EAST
+ port_direction = WEST
+ var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself
+ var/hijack_status = HIJACK_NOT_BEGUN
+
+/obj/docking_port/mobile/emergency/Initialize(mapload)
+ . = ..()
+
+ setup_shuttle_events()
+
+/obj/docking_port/mobile/emergency/canDock(obj/docking_port/stationary/S)
+ return SHUTTLE_CAN_DOCK //If the emergency shuttle can't move, the whole game breaks, so it will force itself to land even if it has to crush a few departments in the process
+
+/obj/docking_port/mobile/emergency/register()
+ . = ..()
+ SSshuttle.emergency = src
+
+/obj/docking_port/mobile/emergency/Destroy(force)
+ if(force)
+ // This'll make the shuttle subsystem use the backup shuttle.
+ if(src == SSshuttle.emergency)
+ // If we're the selected emergency shuttle
+ SSshuttle.emergencyDeregister()
+
+ . = ..()
+
+/obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, area/signal_origin, reason, red_alert, set_coefficient=null, silent = FALSE) // DOPPLER EDIT - ORIGINAL - /obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, area/signal_origin, reason, red_alert, set_coefficient=null)
+ if(!isnum(set_coefficient))
+ set_coefficient = SSsecurity_level.current_security_level.shuttle_call_time_mod
+ alert_coeff = set_coefficient
+ var/call_time = SSshuttle.emergency_call_time * alert_coeff * engine_coeff
+ switch(mode)
+ // The shuttle can not normally be called while "recalling", so
+ // if this proc is called, it's via admin fiat
+ if(SHUTTLE_RECALL, SHUTTLE_IDLE, SHUTTLE_CALL)
+ mode = SHUTTLE_CALL
+ setTimer(call_time)
+ else
+ return
+
+ SSshuttle.emergencyCallAmount++
+
+ if(prob(70))
+ SSshuttle.emergency_last_call_loc = signal_origin
+ else
+ SSshuttle.emergency_last_call_loc = null
+
+ if(silent) // DOPPLER EDIT ADDITION - SEE modular_doppler/autotransfer/shuttle.dm
+ return // DOPPLER EDIT ADDITION
+ priority_announce(
+ text = "The emergency shuttle has been called. [red_alert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [(timeLeft(60 SECONDS))] minutes.[reason][SSshuttle.emergency_last_call_loc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ][SSshuttle.admin_emergency_no_recall ? "\n\nWarning: Shuttle recall subroutines disabled; Recall not possible." : ""]",
+ title = "Emergency Shuttle Dispatched",
+ sound = ANNOUNCER_SHUTTLECALLED,
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "orange",
+ )
+
+/obj/docking_port/mobile/emergency/cancel(area/signalOrigin)
+ if(mode != SHUTTLE_CALL)
+ return
+ if(SSshuttle.emergency_no_recall)
+ return
+
+ invertTimer()
+ mode = SHUTTLE_RECALL
+
+ if(prob(70))
+ SSshuttle.emergency_last_call_loc = signalOrigin
+ else
+ SSshuttle.emergency_last_call_loc = null
+ priority_announce(
+ text = "The emergency shuttle has been recalled.[SSshuttle.emergency_last_call_loc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]",
+ title = "Emergency Shuttle Recalled",
+ sound = ANNOUNCER_SHUTTLERECALLED,
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "orange",
+ )
+
+ SSticker.emergency_reason = null
+
+/**
+ * Proc that handles checking if the emergency shuttle was successfully hijacked via being the only people present on the shuttle for the elimination hijack or highlander objective
+ *
+ * Checks for all mobs on the shuttle, checks their status, and checks if they're
+ * borgs or simple animals. Depending on the args, certain mobs may be ignored,
+ * and the presence of other antags may or may not invalidate a hijack.
+ * Args:
+ * filter_by_human, default TRUE, tells the proc that only humans should block a hijack. Borgs and animals are ignored and will not block if this is TRUE.
+ * solo_hijack, default FALSE, tells the proc to fail with multiple hijackers, such as for Highlander mode.
+ */
+/obj/docking_port/mobile/emergency/proc/elimination_hijack(filter_by_human = TRUE, solo_hijack = FALSE)
+ var/has_people = FALSE
+ var/hijacker_count = 0
+ for(var/mob/living/player in GLOB.player_list)
+ if(player.mind)
+ if(player.stat != DEAD)
+ if(issilicon(player) && filter_by_human) //Borgs are technically dead anyways
+ continue
+ if(isanimal_or_basicmob(player) && filter_by_human) //animals don't count
+ continue
+ if(isbrain(player)) //also technically dead
+ continue
+ if(shuttle_areas[get_area(player)])
+ has_people = TRUE
+ var/location = get_area(player.mind.current)
+ //Non-antag present. Can't hijack.
+ if(!(player.mind.has_antag_datum(/datum/antagonist)) && !istype(location, /area/shuttle/escape/brig))
+ return FALSE
+ //Antag present, doesn't stop but let's see if we actually want to hijack
+ var/prevent = FALSE
+ for(var/datum/antagonist/A in player.mind.antag_datums)
+ if(A.can_elimination_hijack == ELIMINATION_ENABLED)
+ hijacker_count += 1
+ prevent = FALSE
+ break //If we have both prevent and hijacker antags assume we want to hijack.
+ else if(A.can_elimination_hijack == ELIMINATION_PREVENT)
+ prevent = TRUE
+ if(prevent)
+ return FALSE
+
+ //has people AND either there's only one hijacker or there's any but solo_hijack is disabled
+ return has_people && ((hijacker_count == 1) || (hijacker_count && !solo_hijack))
+
+/obj/docking_port/mobile/emergency/proc/is_hijacked()
+ return hijack_status == HIJACK_COMPLETED
+
+/obj/docking_port/mobile/emergency/proc/ShuttleDBStuff()
+ set waitfor = FALSE
+ if(!SSdbcore.Connect())
+ return
+ var/datum/db_query/query_round_shuttle_name = SSdbcore.NewQuery({"
+ UPDATE [format_table_name("round")] SET shuttle_name = :name WHERE id = :round_id
+ "}, list("name" = name, "round_id" = GLOB.round_id))
+ query_round_shuttle_name.Execute()
+ qdel(query_round_shuttle_name)
+
+/obj/docking_port/mobile/emergency/check()
+ if(!timer)
+ return
+ var/time_left = timeLeft(1)
+
+ // The emergency shuttle doesn't work like others so this
+ // ripple check is slightly different
+ if(!ripples.len && (time_left <= SHUTTLE_RIPPLE_TIME) && ((mode == SHUTTLE_CALL) || (mode == SHUTTLE_ESCAPE)))
+ var/destination
+ if(mode == SHUTTLE_CALL)
+ destination = SSshuttle.getDock("emergency_home")
+ else if(mode == SHUTTLE_ESCAPE)
+ destination = SSshuttle.getDock("emergency_away")
+ create_ripples(destination)
+
+ switch(mode)
+ if(SHUTTLE_RECALL)
+ if(time_left <= 0)
+ mode = SHUTTLE_IDLE
+ timer = 0
+ if(SHUTTLE_CALL)
+ if(time_left <= 0)
+ //move emergency shuttle to station
+ if(initiate_docking(SSshuttle.getDock("emergency_home")) != DOCKING_SUCCESS)
+ setTimer(20)
+ return
+ mode = SHUTTLE_DOCKED
+ setTimer(SSshuttle.emergency_dock_time)
+ send2adminchat("Server", "The Emergency Shuttle has docked with the station.")
+ priority_announce(
+ text = "[SSshuttle.emergency] has docked with the station. You have [DisplayTimeText(SSshuttle.emergency_dock_time)] to board the emergency shuttle.",
+ title = "Emergency Shuttle Arrival",
+ sound = ANNOUNCER_SHUTTLEDOCK,
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "orange",
+ )
+ ShuttleDBStuff()
+ addtimer(CALLBACK(src, PROC_REF(announce_shuttle_events)), 20 SECONDS)
+
+
+ if(SHUTTLE_DOCKED)
+ if(time_left <= ENGINE_START_TIME)
+ mode = SHUTTLE_IGNITING
+ SSshuttle.checkHostileEnvironment()
+ if(mode == SHUTTLE_STRANDED)
+ return
+ for(var/A in SSshuttle.mobile_docking_ports)
+ var/obj/docking_port/mobile/M = A
+ if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to.
+ M.check_transit_zone()
+
+ if(SHUTTLE_IGNITING)
+ var/success = TRUE
+ SSshuttle.checkHostileEnvironment()
+ if(mode == SHUTTLE_STRANDED)
+ return
+
+ success &= (check_transit_zone() == TRANSIT_READY)
+ for(var/A in SSshuttle.mobile_docking_ports)
+ var/obj/docking_port/mobile/M = A
+ if(M.launch_status == UNLAUNCHED)
+ success &= (M.check_transit_zone() == TRANSIT_READY)
+ if(!success)
+ setTimer(ENGINE_START_TIME)
+
+ if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch
+ sound_played = 1 //Only rev them up once.
+ var/list/areas = list()
+ for(var/area/shuttle/escape/E in GLOB.areas)
+ areas += E
+ hyperspace_sound(HYPERSPACE_WARMUP, areas)
+
+ if(time_left <= 0 && !SSshuttle.emergency_no_escape)
+ //move each escape pod (or applicable spaceship) to its corresponding transit dock
+ for(var/A in SSshuttle.mobile_docking_ports)
+ var/obj/docking_port/mobile/M = A
+ M.on_emergency_launch()
+
+ //now move the actual emergency shuttle to its transit dock
+ var/list/areas = list()
+ for(var/area/shuttle/escape/E in GLOB.areas)
+ areas += E
+ hyperspace_sound(HYPERSPACE_LAUNCH, areas)
+ enterTransit()
+
+ //Tell the events we're starting, so they can time their spawns or do some other stuff
+ for(var/datum/shuttle_event/event as anything in event_list)
+ event.start_up_event(SSshuttle.emergency_escape_time * engine_coeff)
+
+ mode = SHUTTLE_ESCAPE
+ launch_status = ENDGAME_LAUNCHED
+ setTimer(SSshuttle.emergency_escape_time * engine_coeff)
+ priority_announce(
+ text = "The emergency shuttle has left the station. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].",
+ title = "Emergency Shuttle Departure",
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "orange",
+ )
+ INVOKE_ASYNC(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, poll_hearts))
+ INVOKE_ASYNC(SSvote, TYPE_PROC_REF(/datum/controller/subsystem/vote, initiate_vote), /datum/vote/map_vote, vote_initiator_name = "Map Rotation", forced = TRUE)
+
+ if(!is_reserved_level(z))
+ CRASH("Emergency shuttle did not move to transit z-level!")
+
+ if(SHUTTLE_STRANDED, SHUTTLE_DISABLED)
+ SSshuttle.checkHostileEnvironment()
+
+
+ if(SHUTTLE_ESCAPE)
+ if(sound_played && time_left <= HYPERSPACE_END_TIME)
+ var/list/areas = list()
+ for(var/area/shuttle/escape/E in GLOB.areas)
+ areas += E
+ hyperspace_sound(HYPERSPACE_END, areas)
+ if(time_left <= PARALLAX_LOOP_TIME)
+ var/area_parallax = FALSE
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ if(shuttle_area.parallax_movedir)
+ area_parallax = TRUE
+ break
+ if(area_parallax)
+ parallax_slowdown()
+ for(var/A in SSshuttle.mobile_docking_ports)
+ var/obj/docking_port/mobile/M = A
+ if(M.launch_status == ENDGAME_LAUNCHED)
+ if(istype(M, /obj/docking_port/mobile/pod))
+ M.parallax_slowdown()
+
+ process_events()
+
+ if(time_left <= 0)
+ //move each escape pod to its corresponding escape dock
+ for(var/obj/docking_port/mobile/port as anything in SSshuttle.mobile_docking_ports)
+ port.on_emergency_dock()
+
+ // now move the actual emergency shuttle to centcom
+ // unless the shuttle is "hijacked"
+ var/destination_dock = "emergency_away"
+ if(is_hijacked() || elimination_hijack())
+ // just double check
+ SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_NUKIEBASE)
+ destination_dock = "emergency_syndicate"
+ minor_announce("Corruption detected in \
+ shuttle navigation protocols. Please contact your \
+ supervisor.", "SYSTEM ERROR:", sound_override = 'sound/announcer/announcement/announce_syndi.ogg')
+
+ dock_id(destination_dock)
+ mode = SHUTTLE_ENDGAME
+ timer = 0
+
+/obj/docking_port/mobile/emergency/transit_failure()
+ ..()
+ message_admins("Moving emergency shuttle directly to centcom dock to prevent deadlock.")
+
+ mode = SHUTTLE_ESCAPE
+ launch_status = ENDGAME_LAUNCHED
+ setTimer(SSshuttle.emergency_escape_time)
+ priority_announce(
+ text = "The emergency shuttle is preparing for direct jump. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].",
+ title = "Emergency Shuttle Transit Failure",
+ sender_override = "Emergency Shuttle Uplink Alert",
+ color_override = "orange",
+ )
+
+///Generate a list of events to run during the departure
+/obj/docking_port/mobile/emergency/proc/setup_shuttle_events()
+ var/list/names = list()
+ for(var/datum/shuttle_event/event as anything in subtypesof(/datum/shuttle_event))
+ if(prob(initial(event.event_probability)))
+ add_shuttle_event(event)
+ names += initial(event.name)
+ if(LAZYLEN(names))
+ log_game("[capitalize(name)] has selected the following shuttle events: [english_list(names)].")
diff --git a/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm b/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm
new file mode 100644
index 0000000000000..b46bfff274307
--- /dev/null
+++ b/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm
@@ -0,0 +1,316 @@
+#define ENGINES_STARTED (SSshuttle.emergency.mode == SHUTTLE_IGNITING)
+#define IS_DOCKED (SSshuttle.emergency.mode == SHUTTLE_DOCKED || (ENGINES_STARTED))
+#define SHUTTLE_CONSOLE_ACTION_DELAY (5 SECONDS)
+#define TIME_LEFT (SSshuttle.emergency.timeLeft())
+
+/obj/machinery/computer/emergency_shuttle
+ name = "emergency shuttle console"
+ desc = "For shuttle control."
+ icon_screen = "shuttle"
+ icon_keyboard = "tech_key"
+ resistance_flags = INDESTRUCTIBLE
+ var/auth_need = 3
+ var/list/authorized = list()
+ var/list/acted_recently = list()
+ var/hijack_last_stage_increase = 0 SECONDS
+ var/hijack_stage_time = 5 SECONDS
+ var/hijack_stage_cooldown = 5 SECONDS
+ var/hijack_flight_time_increase = 30 SECONDS
+ var/hijack_completion_flight_time_set = 10 SECONDS //How long in deciseconds to set shuttle's timer after hijack is done.
+ var/hijack_hacking = FALSE
+ var/hijack_announce = TRUE
+
+/obj/machinery/computer/emergency_shuttle/Destroy()
+ // Our fake IDs that the emag generated are just there for colour
+ // They're not supposed to be accessible
+
+ for(var/obj/item/card/id/ID in src)
+ qdel(ID)
+ if(authorized?.len)
+ authorized.Cut()
+ authorized = null
+
+ . = ..()
+
+/obj/machinery/computer/emergency_shuttle/examine(mob/user)
+ . = ..()
+ if(hijack_announce)
+ . += span_danger("Security systems present on console. Any unauthorized tampering will result in an emergency announcement.")
+ if(user?.mind?.get_hijack_speed())
+ . += span_danger("Alt click on this to attempt to hijack the shuttle. This will take multiple tries (current: stage [SSshuttle.emergency.hijack_status]/[HIJACK_COMPLETED]).")
+ . += span_notice("It will take you [(hijack_stage_time * user.mind.get_hijack_speed()) / 10] seconds to reprogram a stage of the shuttle's navigational firmware, and the console will undergo automated timed lockout for [hijack_stage_cooldown/10] seconds after each stage.")
+ if(hijack_announce)
+ . += span_warning("It is probably best to fortify your position as to be uninterrupted during the attempt, given the automatic announcements..")
+
+/obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user,params)
+ if(isidcard(I))
+ say("Please equip your ID card into your ID slot to authenticate.")
+ . = ..()
+
+/obj/machinery/computer/emergency_shuttle/ui_state(mob/user)
+ return GLOB.human_adjacent_state
+
+/obj/machinery/computer/emergency_shuttle/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "EmergencyShuttleConsole", name)
+ ui.open()
+
+/obj/machinery/computer/emergency_shuttle/ui_data(user)
+ var/list/data = list()
+
+ data["timer_str"] = SSshuttle.emergency.getTimerStr()
+ data["engines_started"] = ENGINES_STARTED
+ data["authorizations_remaining"] = max((auth_need - authorized.len), 0)
+ var/list/A = list()
+ for(var/i in authorized)
+ var/obj/item/card/id/ID = i
+ var/name = ID.registered_name
+ var/job = ID.assignment
+
+ if(obj_flags & EMAGGED)
+ name = Gibberish(name)
+ job = Gibberish(job)
+ A += list(list("name" = name, "job" = job))
+ data["authorizations"] = A
+
+ data["enabled"] = (IS_DOCKED && !ENGINES_STARTED) && !(user in acted_recently)
+ data["emagged"] = obj_flags & EMAGGED ? 1 : 0
+ return data
+
+/obj/machinery/computer/emergency_shuttle/ui_act(action, params, datum/tgui/ui)
+ . = ..()
+ if(.)
+ return
+ if(ENGINES_STARTED) // past the point of no return
+ return
+ if(!IS_DOCKED) // shuttle computer only has uses when onstation
+ return
+ if(SSshuttle.emergency.mode == SHUTTLE_DISABLED) // admins have disabled the shuttle.
+ return
+ if(!isliving(usr))
+ return
+
+ var/area/my_area = get_area(src)
+ if(!istype(my_area, /area/shuttle/escape))
+ say("Error - Network connectivity: Console has lost connection to the shuttle.")
+ return
+
+ var/mob/living/user = usr
+ . = FALSE
+
+ var/obj/item/card/id/ID = user.get_idcard(TRUE)
+
+ if(!ID)
+ to_chat(user, span_warning("You don't have an ID."))
+ return
+
+ if(!(ACCESS_COMMAND in ID.access))
+ to_chat(user, span_warning("The access level of your card is not high enough."))
+ return
+
+ if (user in acted_recently)
+ return
+
+ var/old_len = authorized.len
+ addtimer(CALLBACK(src, PROC_REF(clear_recent_action), user), SHUTTLE_CONSOLE_ACTION_DELAY)
+
+ switch(action)
+ if("authorize")
+ . = authorize(user)
+
+ if("repeal")
+ authorized -= ID
+
+ if("abort")
+ if(authorized.len)
+ // Abort. The action for when heads are fighting over whether
+ // to launch early.
+ authorized.Cut()
+ . = TRUE
+
+ if((old_len != authorized.len) && !ENGINES_STARTED)
+ var/alert = (authorized.len > old_len)
+ var/repeal = (authorized.len < old_len)
+ var/remaining = max(0, auth_need - authorized.len)
+ if(authorized.len && remaining)
+ minor_announce("[remaining] authorizations needed until shuttle is launched early", null, alert)
+ if(repeal)
+ minor_announce("Early launch authorization revoked, [remaining] authorizations needed")
+
+ acted_recently += user
+ SStgui.update_user_uis(user, src)
+
+/obj/machinery/computer/emergency_shuttle/proc/authorize(mob/living/user, source)
+ var/obj/item/card/id/ID = user.get_idcard(TRUE)
+
+ if(ID in authorized)
+ return FALSE
+ for(var/i in authorized)
+ var/obj/item/card/id/other = i
+ if(other.registered_name == ID.registered_name)
+ return FALSE // No using IDs with the same name
+
+ authorized += ID
+
+ message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch")
+ log_shuttle("[key_name(user)] has authorized early shuttle launch in [COORD(src)]")
+ // Now check if we're on our way
+ . = TRUE
+ process(SSMACHINES_DT)
+
+/obj/machinery/computer/emergency_shuttle/proc/clear_recent_action(mob/user)
+ acted_recently -= user
+ if (!QDELETED(user))
+ SStgui.update_user_uis(user, src)
+
+/obj/machinery/computer/emergency_shuttle/process()
+ // Launch check is in process in case auth_need changes for some reason
+ // probably external.
+ . = FALSE
+ if(!SSshuttle.emergency)
+ return
+
+ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
+ authorized.Cut()
+ obj_flags &= ~(EMAGGED)
+
+ if(ENGINES_STARTED || (!IS_DOCKED))
+ return .
+
+ // Check to see if we've reached criteria for early launch
+ if((authorized.len >= auth_need) || (obj_flags & EMAGGED))
+ // shuttle timers use 1/10th seconds internally
+ SSshuttle.emergency.setTimer(ENGINE_START_TIME)
+ var/system_error = obj_flags & EMAGGED ? "SYSTEM ERROR:" : null
+ minor_announce("The emergency shuttle will launch in \
+ [TIME_LEFT] seconds", system_error, alert=TRUE)
+ . = TRUE
+
+/obj/machinery/computer/emergency_shuttle/proc/increase_hijack_stage()
+ var/obj/docking_port/mobile/emergency/shuttle = SSshuttle.emergency
+ // Begin loading this early, prevents a delay when the shuttle goes to land
+ INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, lazy_load_template), LAZY_TEMPLATE_KEY_NUKIEBASE)
+
+ shuttle.hijack_status++
+ if(hijack_announce)
+ announce_hijack_stage()
+ hijack_last_stage_increase = world.time
+ say("Navigational protocol error! Rebooting systems.")
+ if(shuttle.mode == SHUTTLE_ESCAPE)
+ if(shuttle.hijack_status == HIJACK_COMPLETED)
+ shuttle.setTimer(hijack_completion_flight_time_set)
+ else
+ shuttle.setTimer(shuttle.timeLeft(1) + hijack_flight_time_increase) //give the guy more time to hijack if it's already in flight.
+ return shuttle.hijack_status
+
+/obj/machinery/computer/emergency_shuttle/click_alt(mob/living/user)
+ if(!isliving(user))
+ return NONE
+ attempt_hijack_stage(user)
+ return CLICK_ACTION_SUCCESS
+
+/obj/machinery/computer/emergency_shuttle/proc/attempt_hijack_stage(mob/living/user)
+ if(!user.CanReach(src))
+ return
+ if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
+ to_chat(user, span_warning("You need your hands free before you can manipulate [src]."))
+ return
+ var/area/my_area = get_area(src)
+ if(!istype(my_area, /area/shuttle/escape))
+ say("Error - Network connectivity: Console has lost connection to the shuttle.")
+ return
+ if(!user?.mind?.get_hijack_speed())
+ to_chat(user, span_warning("You manage to open a user-mode shell on [src], and hundreds of lines of debugging output fly through your vision. It is probably best to leave this alone."))
+ return
+ if(!EMERGENCY_AT_LEAST_DOCKED) // prevent advancing hijack stages on BYOS shuttles until the shuttle has "docked"
+ to_chat(user, span_warning("The flight plans for the shuttle haven't been loaded yet, you can't hack this right now."))
+ return
+ if(hijack_hacking == TRUE)
+ return
+ if(SSshuttle.emergency.hijack_status >= HIJACK_COMPLETED)
+ to_chat(user, span_warning("The emergency shuttle is already loaded with a corrupt navigational payload. What more do you want from it?"))
+ return
+ if(hijack_last_stage_increase >= world.time - hijack_stage_cooldown)
+ say("Error - Catastrophic software error detected. Input is currently on timeout.")
+ return
+ hijack_hacking = TRUE
+ to_chat(user, span_boldwarning("You [SSshuttle.emergency.hijack_status == HIJACK_NOT_BEGUN? "begin" : "continue"] to override [src]'s navigational protocols."))
+ say("Software override initiated.")
+ var/turf/console_hijack_turf = get_turf(src)
+ message_admins("[src] is being overriden for hijack by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(console_hijack_turf)]")
+ user.log_message("is hijacking [src].", LOG_GAME)
+ . = FALSE
+ if(do_after(user, hijack_stage_time * (1 / user.mind.get_hijack_speed()), target = src))
+ increase_hijack_stage()
+ console_hijack_turf = get_turf(src)
+ message_admins("[ADMIN_LOOKUPFLW(user)] has hijacked [src] in [ADMIN_VERBOSEJMP(console_hijack_turf)]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACK_COMPLETED].")
+ user.log_message("has hijacked [src]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACK_COMPLETED].", LOG_GAME)
+ . = TRUE
+ to_chat(user, span_notice("You reprogram some of [src]'s programming, putting it on timeout for [hijack_stage_cooldown/10] seconds."))
+ visible_message(
+ span_warning("[user.name] appears to be tampering with [src]."),
+ blind_message = span_hear("You hear someone tapping computer keys."),
+ vision_distance = COMBAT_MESSAGE_RANGE,
+ ignored_mobs = user
+ )
+ hijack_hacking = FALSE
+
+/obj/machinery/computer/emergency_shuttle/proc/announce_hijack_stage()
+ var/msg
+ switch(SSshuttle.emergency.hijack_status)
+ if(HIJACK_NOT_BEGUN)
+ return
+ if(HIJACK_STAGE_1)
+ msg = "AUTHENTICATING - FAIL. AUTHENTICATING - FAIL. AUTHENTICATING - FAI###### Welcome, technician JOHN DOE."
+ if(HIJACK_STAGE_2)
+ msg = "Warning: Navigational route fails \"IS_AUTHORIZED\". Please try againNN[scramble_message_replace_chars("againagainagainagainagain", 70)]."
+ if(HIJACK_STAGE_3)
+ msg = "CRC mismatch at ~h~ in calculated route buffer. Full reset initiated of FTL_NAVIGATION_SERVICES. Memory decrypted for automatic repair."
+ if(HIJACK_STAGE_4)
+ msg = "~ACS_directive module_load(cyberdyne.exploit.nanotrasen.shuttlenav)... NT key mismatch. Confirm load? Y...###Reboot complete. $SET transponder_state = 0; System link initiated with connected engines..."
+ if(HIJACK_COMPLETED)
+ msg = "SYSTEM OVERRIDE - Resetting course to \[[scramble_message_replace_chars("###########", 100)]\] \
+ ([scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]) \
+ {AUTH - ROOT (uid: 0)}.\
+ [SSshuttle.emergency.mode == SHUTTLE_ESCAPE ? "Diverting from existing route - Bluespace exit in \
+ [hijack_completion_flight_time_set >= INFINITY ? "[scramble_message_replace_chars("\[ERROR\]")]" : hijack_completion_flight_time_set/10] seconds." : ""]"
+ minor_announce(scramble_message_replace_chars(msg, replaceprob = 10), "Emergency Shuttle", TRUE)
+
+/obj/machinery/computer/emergency_shuttle/emag_act(mob/user, obj/item/card/emag/emag_card)
+ // How did you even get on the shuttle before it go to the station?
+ if(!IS_DOCKED)
+ return FALSE
+
+ if((obj_flags & EMAGGED) || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS
+ balloon_alert(user, "shuttle already about to launch!")
+ return FALSE
+
+ var/time = TIME_LEFT
+ if (user)
+ message_admins("[ADMIN_LOOKUPFLW(user)] has emagged the emergency shuttle [time] seconds before launch.")
+ log_shuttle("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.")
+ else
+ message_admins("The emergency shuttle was emagged [time] seconds before launch, with no emagger.")
+ log_shuttle("The emergency shuttle was emagged in [COORD(src)] [time] seconds before launch, with no emagger.")
+
+ obj_flags |= EMAGGED
+ SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL
+ for(var/i in 1 to 10)
+ // the shuttle system doesn't know who these people are, but they
+ // must be important, surely
+ var/obj/item/card/id/ID = new(src)
+ var/datum/job/J = pick(SSjob.joinable_occupations)
+ ID.registered_name = generate_random_name_species_based(species_type = /datum/species/human)
+ ID.assignment = J.title
+
+ authorized += ID
+
+ process(SSMACHINES_DT)
+ return TRUE
+
+#undef TIME_LEFT
+#undef ENGINES_STARTED
+#undef IS_DOCKED
+#undef SHUTTLE_CONSOLE_ACTION_DELAY
diff --git a/code/modules/shuttle/mobile_port/variants/emergency/emergency_types.dm b/code/modules/shuttle/mobile_port/variants/emergency/emergency_types.dm
new file mode 100644
index 0000000000000..6030999698b00
--- /dev/null
+++ b/code/modules/shuttle/mobile_port/variants/emergency/emergency_types.dm
@@ -0,0 +1,39 @@
+/// Fallback shuttle
+/obj/docking_port/mobile/emergency/backup
+ name = "backup shuttle"
+ shuttle_id = "backup"
+ dir = EAST
+
+/obj/docking_port/mobile/emergency/backup/Initialize(mapload)
+ // We want to be a valid emergency shuttle
+ // but not be the main one, keep whatever's set
+ // valid.
+ // backup shuttle ignores `timid` because THERE SHOULD BE NO TOUCHING IT
+ var/current_emergency = SSshuttle.emergency
+ . = ..()
+ SSshuttle.emergency = current_emergency
+ SSshuttle.backup_shuttle = src
+
+/obj/docking_port/mobile/emergency/backup/Destroy(force)
+ if(SSshuttle.backup_shuttle == src)
+ SSshuttle.backup_shuttle = null
+ return ..()
+
+/// Monastery shuttle
+/obj/docking_port/mobile/monastery
+ name = "monastery pod"
+ shuttle_id = "mining_common" //set so mining can call it down
+ launch_status = UNLAUNCHED //required for it to launch as a pod.
+
+/obj/docking_port/mobile/monastery/on_emergency_dock()
+ if(launch_status == ENDGAME_LAUNCHED)
+ initiate_docking(SSshuttle.getDock("pod_away")) //docks our shuttle as any pod would
+ mode = SHUTTLE_ENDGAME
+
+/// Build Your Own Shuttle (BYOS) kit
+/obj/docking_port/mobile/emergency/shuttle_build
+
+/obj/docking_port/mobile/emergency/shuttle_build/postregister()
+ . = ..()
+ initiate_docking(SSshuttle.getDock("emergency_home"))
+
diff --git a/code/modules/shuttle/mobile_port/variants/emergency/pods.dm b/code/modules/shuttle/mobile_port/variants/emergency/pods.dm
new file mode 100644
index 0000000000000..1d8e1bae6bc03
--- /dev/null
+++ b/code/modules/shuttle/mobile_port/variants/emergency/pods.dm
@@ -0,0 +1,211 @@
+// THIS FILE CONTAINS: Pod mobile/stationary docking port, pod control console, pod storage and pod items
+
+/obj/docking_port/mobile/pod
+ name = "escape pod"
+ shuttle_id = "pod"
+ launch_status = UNLAUNCHED
+
+/obj/docking_port/mobile/pod/request(obj/docking_port/stationary/S)
+ var/obj/machinery/computer/shuttle/connected_computer = get_control_console()
+ if(!istype(connected_computer, /obj/machinery/computer/shuttle/pod))
+ return FALSE
+ if(!(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) && !(connected_computer.obj_flags & EMAGGED))
+ to_chat(usr, span_warning("Escape pods will only launch during \"Code Red\" security alert."))
+ return FALSE
+ if(launch_status == UNLAUNCHED)
+ launch_status = EARLY_LAUNCHED
+ return ..()
+
+/obj/docking_port/mobile/pod/cancel()
+ return
+
+/obj/machinery/computer/shuttle/pod
+ name = "pod control computer"
+ locked = TRUE
+ possible_destinations = "pod_asteroid"
+ icon = 'icons/obj/machines/wallmounts.dmi'
+ icon_state = "pod_off"
+ circuit = /obj/item/circuitboard/computer/emergency_pod
+ light_color = LIGHT_COLOR_BLUE
+ density = FALSE
+ icon_keyboard = null
+ icon_screen = "pod_on"
+
+/obj/machinery/computer/shuttle/pod/Initialize(mapload)
+ . = ..()
+ RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, PROC_REF(check_lock))
+
+/obj/machinery/computer/shuttle/pod/emag_act(mob/user, obj/item/card/emag/emag_card)
+ if(obj_flags & EMAGGED)
+ return FALSE
+ obj_flags |= EMAGGED
+ locked = FALSE
+ balloon_alert(user, "alert level checking disabled")
+ icon_screen = "emagged_general"
+ update_appearance()
+ return TRUE
+
+/obj/machinery/computer/shuttle/pod/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock)
+ . = ..()
+ if(port)
+ //Checks if the computer has already added the shuttle destination with the initial id
+ //This has to be done because connect_to_shuttle is called again after its ID is updated
+ //due to conflicting id names
+ var/base_shuttle_destination = ";[initial(port.shuttle_id)]_lavaland"
+ var/shuttle_destination = ";[port.shuttle_id]_lavaland"
+
+ var/position = findtext(possible_destinations, base_shuttle_destination)
+ if(position)
+ if(base_shuttle_destination == shuttle_destination)
+ return
+ possible_destinations = splicetext(possible_destinations, position, position + length(base_shuttle_destination), shuttle_destination)
+ return
+
+ possible_destinations += shuttle_destination
+
+/**
+ * Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level
+ *
+ * Arguments:
+ * * source The datum source of the signal
+ * * new_level The new security level that is in effect
+ */
+/obj/machinery/computer/shuttle/pod/proc/check_lock(datum/source, new_level)
+ SIGNAL_HANDLER
+
+ if(obj_flags & EMAGGED)
+ return
+ locked = (new_level < SEC_LEVEL_RED)
+
+/obj/docking_port/stationary/random
+ name = "escape pod"
+ shuttle_id = "pod"
+ hidden = TRUE
+ override_can_dock_checks = TRUE
+ /// The area the pod tries to land at
+ var/target_area = /area/lavaland/surface/outdoors
+ /// Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced"
+ var/edge_distance = 16
+
+/obj/docking_port/stationary/random/Initialize(mapload)
+ . = ..()
+ if(!mapload)
+ return
+
+ var/list/turfs = get_area_turfs(target_area)
+ var/original_len = turfs.len
+ while(turfs.len)
+ var/turf/picked_turf = pick(turfs)
+ if(picked_turf.x stationary_dock.dwidth)
- return SHUTTLE_DWIDTH_TOO_LARGE
-
- if(width-dwidth > stationary_dock.width-stationary_dock.dwidth)
- return SHUTTLE_WIDTH_TOO_LARGE
-
- if(dheight > stationary_dock.dheight)
- return SHUTTLE_DHEIGHT_TOO_LARGE
-
- if(height-dheight > stationary_dock.height-stationary_dock.dheight)
- return SHUTTLE_HEIGHT_TOO_LARGE
-
- //check the dock isn't occupied
- var/currently_docked = stationary_dock.get_docked()
- if(currently_docked)
- // by someone other than us
- if(currently_docked != src)
- return SHUTTLE_SOMEONE_ELSE_DOCKED
- else
- // This isn't an error, per se, but we can't let the shuttle code
- // attempt to move us where we currently are, it will get weird.
- return SHUTTLE_ALREADY_DOCKED
-
- return SHUTTLE_CAN_DOCK
-
-/obj/docking_port/mobile/proc/check_dock(obj/docking_port/stationary/S, silent = FALSE)
- var/status = canDock(S)
- if(status == SHUTTLE_CAN_DOCK)
- return TRUE
- else
- if(status != SHUTTLE_ALREADY_DOCKED && !silent) // SHUTTLE_ALREADY_DOCKED is no cause for error
- message_admins("Shuttle [src] cannot dock at [S], error: [status]")
- // We're already docked there, don't need to do anything.
- // Triggering shuttle movement code in place is weird
- return FALSE
-
-/obj/docking_port/mobile/proc/transit_failure()
- message_admins("Shuttle [src] repeatedly failed to create transit zone.")
-
-/**
- * Calls the shuttle to the destination port, respecting its ignition and call timers
- *
- * Arguments:
- * * destination_port - Stationary docking port to move the shuttle to
- */
-/obj/docking_port/mobile/proc/request(obj/docking_port/stationary/destination_port)
- if(!check_dock(destination_port))
- testing("check_dock failed on request for [src]")
- return
-
- if(mode == SHUTTLE_IGNITING && destination == destination_port)
- return
-
- switch(mode)
- if(SHUTTLE_CALL)
- if(destination_port == destination)
- if(timeLeft(1) < callTime * engine_coeff)
- setTimer(callTime * engine_coeff)
- else
- destination = destination_port
- setTimer(callTime * engine_coeff)
- if(SHUTTLE_RECALL)
- if(destination_port == destination)
- setTimer(callTime * engine_coeff - timeLeft(1))
- else
- destination = destination_port
- setTimer(callTime * engine_coeff)
- mode = SHUTTLE_CALL
- if(SHUTTLE_IDLE, SHUTTLE_IGNITING)
- destination = destination_port
- mode = SHUTTLE_IGNITING
- setTimer(ignitionTime)
-
-//recall the shuttle to where it was previously
-/obj/docking_port/mobile/proc/cancel()
- if(mode != SHUTTLE_CALL)
- return
-
- remove_ripples()
-
- invertTimer()
- mode = SHUTTLE_RECALL
-
-/obj/docking_port/mobile/proc/enterTransit()
- if((SSshuttle.lockdown && is_station_level(z)) || !canMove()) //emp went off, no escape
- mode = SHUTTLE_IDLE
- return
- previous = null
- if(!destination)
- // sent to transit with no destination -> unlimited timer
- timer = INFINITY
- var/obj/docking_port/stationary/S0 = get_docked()
- var/obj/docking_port/stationary/S1 = assigned_transit
- if(S1)
- if(initiate_docking(S1) != DOCKING_SUCCESS)
- WARNING("shuttle \"[shuttle_id]\" could not enter transit space. Docked at [S0 ? S0.shuttle_id : "null"]. Transit dock [S1 ? S1.shuttle_id : "null"].")
- else if(S0)
- if(S0.delete_after)
- qdel(S0, TRUE)
- else
- previous = S0
- else
- WARNING("shuttle \"[shuttle_id]\" could not enter transit space. S0=[S0 ? S0.shuttle_id : "null"] S1=[S1 ? S1.shuttle_id : "null"]")
-
-
-/obj/docking_port/mobile/proc/jumpToNullSpace()
- // Destroys the docking port and the shuttle contents.
- // Not in a fancy way, it just ceases.
- var/obj/docking_port/stationary/current_dock = get_docked()
-
- var/underlying_area_type = SHUTTLE_DEFAULT_UNDERLYING_AREA
- // If the shuttle is docked to a stationary port, restore its normal
- // "empty" area and turf
- if(current_dock?.area_type)
- underlying_area_type = current_dock.area_type
-
- var/list/old_turfs = return_ordered_turfs(x, y, z, dir)
-
- var/area/underlying_area = GLOB.areas_by_type[underlying_area_type]
- if(!underlying_area)
- underlying_area = new underlying_area_type(null)
-
- for(var/i in 1 to old_turfs.len)
- var/turf/oldT = old_turfs[i]
- if(!oldT || !istype(oldT.loc, area_type))
- continue
- oldT.change_area(oldT.loc, underlying_area)
- oldT.empty(FALSE)
-
- // Here we locate the bottommost shuttle boundary and remove all turfs above it
- var/shuttle_tile_depth = oldT.depth_to_find_baseturf(/turf/baseturf_skipover/shuttle)
- if (!isnull(shuttle_tile_depth))
- oldT.ScrapeAway(shuttle_tile_depth)
-
- qdel(src, force=TRUE)
-
-/**
- * Ghosts and marks as escaped (for greentext purposes) all mobs, then deletes the shuttle.
- * Used by the Shuttle Manipulator
- */
-/obj/docking_port/mobile/proc/intoTheSunset()
- // Loop over mobs
- for(var/turf/turfs as anything in return_turfs())
- for(var/mob/living/sunset_mobs in turfs.get_all_contents())
- // If they have a mind and they're not in the brig, they escaped
- if(sunset_mobs.mind && !istype(get_area(sunset_mobs), /area/shuttle/escape/brig))
- sunset_mobs.mind.force_escaped = TRUE
- // Ghostize them and put them in nullspace stasis (for stat & possession checks)
- ADD_TRAIT(sunset_mobs, TRAIT_NO_TRANSFORM, REF(src))
- sunset_mobs.ghostize(FALSE)
- sunset_mobs.moveToNullspace()
-
- // Now that mobs are stowed, delete the shuttle
- jumpToNullSpace()
-
-/obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time)
- var/list/turfs = ripple_area(S1)
- for(var/t in turfs)
- ripples += new /obj/effect/abstract/ripple(t, animate_time)
-
-/obj/docking_port/mobile/proc/remove_ripples()
- QDEL_LIST(ripples)
-
-/obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/S1)
- var/list/L0 = return_ordered_turfs(x, y, z, dir)
- var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir)
-
- var/list/ripple_turfs = list()
- var/stop = min(L0.len, L1.len)
- for(var/i in 1 to stop)
- var/turf/T0 = L0[i]
- var/turf/T1 = L1[i]
- if(!istype(T0.loc, area_type) || istype(T0.loc, /area/shuttle/transit))
- continue // not part of the shuttle
- ripple_turfs += T1
-
- return ripple_turfs
-
-/obj/docking_port/mobile/proc/check_poddoors()
- for(var/obj/machinery/door/poddoor/shuttledock/pod as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/door/poddoor/shuttledock))
- pod.check()
-
-/obj/docking_port/mobile/proc/dock_id(id)
- var/port = SSshuttle.getDock(id)
- if(port)
- . = initiate_docking(port)
- else
- . = null
-
-//used by shuttle subsystem to check timers
-/obj/docking_port/mobile/proc/check()
- check_effects()
- //process_events() if you were to add events to non-escape shuttles, uncomment this
-
- if(mode == SHUTTLE_IGNITING)
- check_transit_zone()
-
- if(timeLeft(1) > 0)
- return
- // If we can't dock or we don't have a transit slot, wait for 20 ds,
- // then try again
- switch(mode)
- if(SHUTTLE_CALL, SHUTTLE_PREARRIVAL)
- if(prearrivalTime && mode != SHUTTLE_PREARRIVAL)
- mode = SHUTTLE_PREARRIVAL
- setTimer(prearrivalTime)
- return
- var/error = initiate_docking(destination, preferred_direction)
- if(error && error & (DOCKING_NULL_DESTINATION | DOCKING_NULL_SOURCE))
- var/msg = "A mobile dock in transit exited initiate_docking() with an error. This is most likely a mapping problem: Error: [error], ([src]) ([previous][ADMIN_JMP(previous)] -> [destination][ADMIN_JMP(destination)])"
- WARNING(msg)
- message_admins(msg)
- mode = SHUTTLE_IDLE
- return
- else if(error)
- setTimer(20)
- return
- if(rechargeTime)
- mode = SHUTTLE_RECHARGING
- setTimer(rechargeTime)
- return
- if(SHUTTLE_RECALL)
- if(initiate_docking(previous) != DOCKING_SUCCESS)
- setTimer(20)
- return
- if(SHUTTLE_IGNITING)
- if(check_transit_zone() != TRANSIT_READY)
- setTimer(20)
- return
- else
- mode = SHUTTLE_CALL
- setTimer(callTime * engine_coeff)
- enterTransit()
- return
-
- mode = SHUTTLE_IDLE
- timer = 0
- destination = null
-
-/obj/docking_port/mobile/proc/check_effects()
- if(!ripples.len)
- if((mode == SHUTTLE_CALL) || (mode == SHUTTLE_RECALL))
- var/tl = timeLeft(1)
- if(tl <= SHUTTLE_RIPPLE_TIME)
- create_ripples(destination, tl)
-
- var/obj/docking_port/stationary/S0 = get_docked()
- if(istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME)
- for(var/place in shuttle_areas)
- var/area/shuttle/shuttle_area = place
- if(shuttle_area.parallax_movedir)
- parallax_slowdown()
-
-/obj/docking_port/mobile/proc/parallax_slowdown()
- for(var/place in shuttle_areas)
- var/area/shuttle/shuttle_area = place
- shuttle_area.parallax_movedir = FALSE
- if(assigned_transit?.assigned_area)
- assigned_transit.assigned_area.parallax_movedir = FALSE
- var/list/L0 = return_ordered_turfs(x, y, z, dir)
- for (var/thing in L0)
- var/turf/T = thing
- if(!T || !istype(T.loc, area_type))
- continue
- for (var/atom/movable/movable as anything in T)
- if (movable.client_mobs_in_contents)
- movable.update_parallax_contents()
-
-/obj/docking_port/mobile/proc/check_transit_zone()
- if(assigned_transit)
- return TRANSIT_READY
- else
- SSshuttle.request_transit_dock(src)
-
-/obj/docking_port/mobile/proc/setTimer(wait)
- timer = world.time + wait
- last_timer_length = wait
-
-/obj/docking_port/mobile/proc/modTimer(multiple)
- var/time_remaining = timer - world.time
- if(time_remaining < 0 || !last_timer_length)
- return
- time_remaining *= multiple
- last_timer_length *= multiple
- setTimer(time_remaining)
-
-/obj/docking_port/mobile/proc/alert_coeff_change(new_coeff)
- if(isnull(new_coeff))
- return
-
- var/time_multiplier = new_coeff / alert_coeff
- var/time_remaining = timer - world.time
- if(time_remaining < 0 || !last_timer_length)
- return
-
- time_remaining *= time_multiplier
- last_timer_length *= time_multiplier
- alert_coeff = new_coeff
- setTimer(time_remaining)
-
-/obj/docking_port/mobile/proc/invertTimer()
- if(!last_timer_length)
- return
- var/time_remaining = timer - world.time
- if(time_remaining > 0)
- var/time_passed = last_timer_length - time_remaining
- setTimer(time_passed)
-
-//returns timeLeft
-/obj/docking_port/mobile/proc/timeLeft(divisor)
- if(divisor <= 0)
- divisor = 10
-
- var/ds_remaining
- if(!timer)
- ds_remaining = callTime * engine_coeff
- else
- ds_remaining = max(0, timer - world.time)
-
- . = round(ds_remaining / divisor, 1)
-
-// returns 3-letter mode string, used by status screens and mob status panel
-/obj/docking_port/mobile/proc/getModeStr()
- switch(mode)
- if(SHUTTLE_IGNITING)
- return "IGN"
- if(SHUTTLE_RECALL)
- return "RCL"
- if(SHUTTLE_CALL)
- return "ETA"
- if(SHUTTLE_DOCKED)
- return "ETD"
- if(SHUTTLE_ESCAPE)
- return "ESC"
- if(SHUTTLE_STRANDED)
- return "ERR"
- if(SHUTTLE_RECHARGING)
- return "RCH"
- if(SHUTTLE_PREARRIVAL)
- return "LDN"
- if(SHUTTLE_DISABLED)
- return "DIS"
- return ""
-
-// returns 5-letter timer string, used by status screens and mob status panel
-/obj/docking_port/mobile/proc/getTimerStr()
- if(mode == SHUTTLE_STRANDED || mode == SHUTTLE_DISABLED)
- return "--:--"
-
- var/timeleft = timeLeft()
- if(timeleft > 1 HOURS)
- return "--:--"
- else if(timeleft > 0)
- return "[add_leading(num2text((timeleft / 60) % 60), 2, "0")]:[add_leading(num2text(timeleft % 60), 2, "0")]"
- else
- return "00:00"
-
-/**
- * Gets shuttle location status in a form of string for tgui interfaces
- */
-/obj/docking_port/mobile/proc/get_status_text_tgui()
- var/obj/docking_port/stationary/dockedAt = get_docked()
- var/docked_at = dockedAt?.name || "Unknown"
- if(!istype(dockedAt, /obj/docking_port/stationary/transit))
- return docked_at
- if(timeLeft() > 1 HOURS)
- return "Hyperspace"
- else
- var/obj/docking_port/stationary/dst = (mode == SHUTTLE_RECALL) ? previous : destination
- return "In transit to [dst?.name || "unknown location"]"
-
-/obj/docking_port/mobile/proc/getStatusText()
- var/obj/docking_port/stationary/dockedAt = get_docked()
- var/docked_at = dockedAt?.name || "unknown"
- if(istype(dockedAt, /obj/docking_port/stationary/transit))
- if (timeLeft() > 1 HOURS)
- return "hyperspace"
- else
- var/obj/docking_port/stationary/dst
- if(mode == SHUTTLE_RECALL)
- dst = previous
- else
- dst = destination
- . = "transit towards [dst?.name || "unknown location"] ([getTimerStr()])"
- else if(mode == SHUTTLE_RECHARGING)
- return "[docked_at], recharging [getTimerStr()]"
- else
- return docked_at
-
-/obj/docking_port/mobile/proc/getDbgStatusText()
- var/obj/docking_port/stationary/dockedAt = get_docked()
- . = (dockedAt?.name) ? dockedAt.name : "unknown"
- if(istype(dockedAt, /obj/docking_port/stationary/transit))
- var/obj/docking_port/stationary/dst
- if(mode == SHUTTLE_RECALL)
- dst = previous
- else
- dst = destination
- if(dst)
- . = "(transit to) [dst.name || dst.shuttle_id]"
- else
- . = "(transit to) nowhere"
- else if(dockedAt)
- . = dockedAt.name || dockedAt.shuttle_id
- else
- . = "unknown"
-
-
-// attempts to locate /obj/machinery/computer/shuttle with matching ID inside the shuttle
-/obj/docking_port/mobile/proc/get_control_console()
- for(var/area/shuttle/shuttle_area as anything in shuttle_areas)
- var/obj/machinery/computer/shuttle/shuttle_computer = locate(/obj/machinery/computer/shuttle) in shuttle_area
- if(!shuttle_computer)
- continue
- if(shuttle_computer.shuttleId == shuttle_id)
- return shuttle_computer
- return null
-
-/obj/docking_port/mobile/proc/hyperspace_sound(phase, list/areas)
- var/selected_sound
- switch(phase)
- if(HYPERSPACE_WARMUP)
- selected_sound = "hyperspace_begin"
- if(HYPERSPACE_LAUNCH)
- selected_sound = "hyperspace_progress"
- if(HYPERSPACE_END)
- selected_sound = "hyperspace_end"
- else
- CRASH("Invalid hyperspace sound phase: [phase]")
- // This previously was played from each door at max volume, and was one of the worst things I had ever seen.
- // Now it's instead played from the nearest engine if close, or the first engine in the list if far since it doesn't really matter.
- // Or a door if for some reason the shuttle has no engine, fuck oh hi daniel fuck it
- var/range = (engine_coeff * max(width, height))
- var/long_range = range * 2.5
- var/atom/distant_source
-
- if(engine_list.len)
- distant_source = engine_list[1]
- else
- for(var/our_area in areas)
- distant_source = locate(/obj/machinery/door) in our_area
- if(distant_source)
- break
-
- if(!distant_source)
- return
- for(var/mob/zlevel_mobs as anything in SSmobs.clients_by_zlevel[z])
- var/dist_far = get_dist(zlevel_mobs, distant_source)
- if(dist_far <= long_range && dist_far > range)
- zlevel_mobs.playsound_local(distant_source, "sound/runtime/hyperspace/[selected_sound]_distance.ogg", 100)
- else if(dist_far <= range)
- var/source
- if(!engine_list.len)
- source = distant_source
- else
- var/closest_dist = 10000
- for(var/obj/machinery/power/shuttle_engine/engines as anything in engine_list)
- var/dist_near = get_dist(zlevel_mobs, engines)
- if(dist_near < closest_dist)
- source = engines
- closest_dist = dist_near
- zlevel_mobs.playsound_local(source, "sound/runtime/hyperspace/[selected_sound].ogg", 100)
-
-// Losing all initial engines should get you 2
-// Adding another set of engines at 0.5 time
-/obj/docking_port/mobile/proc/alter_engines(mod)
- if(!mod)
- return
- var/old_coeff = engine_coeff
- engine_coeff = get_engine_coeff(mod)
- current_engine_power = max(0, current_engine_power + mod)
- if(in_flight())
- var/delta_coeff = engine_coeff / old_coeff
- modTimer(delta_coeff)
-
-// Double initial engines to get to 0.5 minimum
-// Lose all initial engines to get to 2
-//For 0 engine shuttles like BYOS 5 engines to get to doublespeed
-/obj/docking_port/mobile/proc/get_engine_coeff(engine_mod)
- var/new_value = max(0, current_engine_power + engine_mod)
- if(new_value == initial_engine_power)
- return 1
- if(new_value > initial_engine_power)
- var/delta = new_value - initial_engine_power
- var/change_per_engine = (1 - ENGINE_COEFF_MIN) / ENGINE_DEFAULT_MAXSPEED_ENGINES // 5 by default
- if(initial_engine_power > 0)
- change_per_engine = (1 - ENGINE_COEFF_MIN) / initial_engine_power // or however many it had
- return clamp(1 - delta * change_per_engine,ENGINE_COEFF_MIN, ENGINE_COEFF_MAX)
- if(new_value < initial_engine_power)
- var/delta = initial_engine_power - new_value
- var/change_per_engine = 1 //doesn't really matter should not be happening for 0 engine shuttles
- if(initial_engine_power > 0)
- change_per_engine = (ENGINE_COEFF_MAX - 1) / initial_engine_power //just linear drop to max delay
- return clamp(1 + delta * change_per_engine, ENGINE_COEFF_MIN, ENGINE_COEFF_MAX)
-
-
-/obj/docking_port/mobile/proc/in_flight()
- switch(mode)
- if(SHUTTLE_CALL,SHUTTLE_RECALL,SHUTTLE_PREARRIVAL)
- return TRUE
- if(SHUTTLE_IDLE,SHUTTLE_IGNITING)
- return FALSE
- return FALSE // hmm
-
-/obj/docking_port/mobile/emergency/in_flight()
- switch(mode)
- if(SHUTTLE_ESCAPE)
- return TRUE
- if(SHUTTLE_STRANDED,SHUTTLE_ENDGAME)
- return FALSE
- return ..()
-
-//Called when emergency shuttle leaves the station
-/obj/docking_port/mobile/proc/on_emergency_launch()
- if(launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to.
- launch_status = ENDGAME_LAUNCHED
- enterTransit()
-
-///Let people know shits about to go down
-/obj/docking_port/mobile/proc/announce_shuttle_events()
- for(var/datum/shuttle_event/event as anything in event_list)
- notify_ghosts("The [name] has selected: [event.name]")
-
-/obj/docking_port/mobile/emergency/on_emergency_launch()
- return
-
-//Called when emergency shuttle docks at centcom
-/obj/docking_port/mobile/proc/on_emergency_dock()
- // Mapping a new docking point for each ship mappers could potentially want docking with centcom would take up lots of space,
- // just let them keep flying off "into the sunset" for their greentext.
- if(launch_status == ENDGAME_LAUNCHED)
- launch_status = ENDGAME_TRANSIT
-
-/obj/docking_port/mobile/pod/on_emergency_dock()
- if(launch_status == ENDGAME_LAUNCHED)
- initiate_docking(SSshuttle.getDock("[shuttle_id]_away")) //Escape pods dock at centcom
- mode = SHUTTLE_ENDGAME
-
-/obj/docking_port/mobile/emergency/on_emergency_dock()
- return
-
-///Process all the shuttle events for every shuttle tick we get
-/obj/docking_port/mobile/proc/process_events()
- var/list/removees
- for(var/datum/shuttle_event/event as anything in event_list)
- if(event.event_process() == SHUTTLE_EVENT_CLEAR) //if we return SHUTTLE_EVENT_CLEAR, we clean them up
- LAZYADD(removees, event)
- for(var/item in removees)
- event_list.Remove(item)
-
-/// Give a typepath of a shuttle event to add to the shuttle. If added during endgame transit, will insta start the event
-/obj/docking_port/mobile/proc/add_shuttle_event(typepath)
- var/datum/shuttle_event/event = new typepath (src)
- event_list.Add(event)
- if(launch_status == ENDGAME_LAUNCHED)
- event.start_up_event(0)
- return event
-
-#ifdef TESTING
-#undef DOCKING_PORT_HIGHLIGHT
-#endif
diff --git a/code/modules/shuttle/monastery.dm b/code/modules/shuttle/shuttle_consoles/monastery.dm
similarity index 100%
rename from code/modules/shuttle/monastery.dm
rename to code/modules/shuttle/shuttle_consoles/monastery.dm
diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/shuttle_consoles/navigation_computer.dm
similarity index 93%
rename from code/modules/shuttle/navigation_computer.dm
rename to code/modules/shuttle/shuttle_consoles/navigation_computer.dm
index fbe528b870380..7c588e06dc005 100644
--- a/code/modules/shuttle/navigation_computer.dm
+++ b/code/modules/shuttle/shuttle_consoles/navigation_computer.dm
@@ -107,8 +107,8 @@
shuttle_port = null
return
- eyeobj = new /mob/eye/ai_eye/remote/shuttle_docker(null, src)
- var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj
+ eyeobj = new /mob/eye/camera/remote/shuttle_docker(null, src)
+ var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj
the_eye.setDir(shuttle_port.dir)
var/turf/origin = locate(shuttle_port.x + x_offset, shuttle_port.y + y_offset, shuttle_port.z)
for(var/area/shuttle_area as anything in shuttle_port.shuttle_areas)
@@ -125,10 +125,12 @@
I.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
the_eye.placement_images[I] = list(x_off, y_off)
+ return TRUE
+
/obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user)
..()
if(!QDELETED(user) && user.client)
- var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj
+ var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj
var/list/to_add = list()
to_add += the_eye.placement_images
to_add += the_eye.placed_images
@@ -141,7 +143,7 @@
/obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user)
..()
if(!QDELETED(user) && user.client)
- var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj
+ var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj
var/list/to_remove = list()
to_remove += the_eye.placement_images
to_remove += the_eye.placed_images
@@ -155,7 +157,7 @@
if(designating_target_loc || !current_user)
return
- var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj
+ var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj
var/landing_clear = checkLandingSpot()
if(designate_time && (landing_clear != SHUTTLE_DOCKER_BLOCKED))
to_chat(current_user, span_warning("Targeting transit location, please wait [DisplayTimeText(designate_time)]..."))
@@ -223,7 +225,7 @@
return TRUE
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/rotateLandingSpot()
- var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj
+ var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj
var/list/image_cache = the_eye.placement_images
the_eye.setDir(turn(the_eye.dir, -90))
for(var/i in 1 to image_cache.len)
@@ -239,7 +241,7 @@
checkLandingSpot()
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingSpot()
- var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj
+ var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj
var/turf/eyeturf = get_turf(the_eye)
if(!eyeturf)
return SHUTTLE_DOCKER_BLOCKED
@@ -316,22 +318,17 @@
add_jumpable_port(dock.shuttle_id)
return TRUE
-/mob/eye/ai_eye/remote/shuttle_docker
- visible_icon = FALSE
- use_static = FALSE
+/mob/eye/camera/remote/shuttle_docker
+ use_visibility = FALSE
var/list/image/placement_images = list()
var/list/image/placed_images = list()
-/mob/eye/ai_eye/remote/shuttle_docker/Initialize(mapload, obj/machinery/computer/camera_advanced/origin)
- src.origin = origin
- return ..()
-
-/mob/eye/ai_eye/remote/shuttle_docker/setLoc(turf/destination, force_update = FALSE)
+/mob/eye/camera/remote/shuttle_docker/setLoc(turf/destination, force_update = FALSE)
. = ..()
- var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin
+ var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin_ref?.resolve()
console.checkLandingSpot()
-/mob/eye/ai_eye/remote/shuttle_docker/update_remote_sight(mob/living/user)
+/mob/eye/camera/remote/shuttle_docker/update_remote_sight(mob/living/user)
user.set_sight(BLIND|SEE_TURFS)
// Pale blue, should look nice I think
user.lighting_color_cutoffs = list(30, 40, 50)
@@ -346,8 +343,8 @@
/datum/action/innate/shuttledocker_rotate/Activate()
if(QDELETED(owner) || !isliving(owner))
return
- var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control
- var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin
+ var/mob/eye/camera/remote/remote_eye = owner.remote_control
+ var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin_ref.resolve()
origin.rotateLandingSpot()
/datum/action/innate/shuttledocker_place
@@ -358,8 +355,8 @@
/datum/action/innate/shuttledocker_place/Activate()
if(QDELETED(owner) || !isliving(owner))
return
- var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control
- var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin
+ var/mob/eye/camera/remote/remote_eye = owner.remote_control
+ var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin_ref.resolve()
origin.placeLandingSpot(owner)
/datum/action/innate/camera_jump/shuttle_docker
@@ -369,8 +366,8 @@
/datum/action/innate/camera_jump/shuttle_docker/Activate()
if(QDELETED(owner) || !isliving(owner))
return
- var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control
- var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin
+ var/mob/eye/camera/remote/remote_eye = owner.remote_control
+ var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin_ref.resolve()
playsound(console, 'sound/machines/terminal/terminal_prompt_deny.ogg', 25, FALSE)
diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/shuttle_consoles/shuttle_console.dm
similarity index 100%
rename from code/modules/shuttle/computer.dm
rename to code/modules/shuttle/shuttle_consoles/shuttle_console.dm
diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/shuttle_consoles/syndicate.dm
similarity index 100%
rename from code/modules/shuttle/syndicate.dm
rename to code/modules/shuttle/shuttle_consoles/syndicate.dm
diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/shuttle_consoles/white_ship.dm
similarity index 100%
rename from code/modules/shuttle/white_ship.dm
rename to code/modules/shuttle/shuttle_consoles/white_ship.dm
diff --git a/code/modules/shuttle/stationary_port/port_types.dm b/code/modules/shuttle/stationary_port/port_types.dm
new file mode 100644
index 0000000000000..047856566c2db
--- /dev/null
+++ b/code/modules/shuttle/stationary_port/port_types.dm
@@ -0,0 +1,100 @@
+/// Subtype for escape pod ports so that we can give them trait behaviour
+/obj/docking_port/stationary/escape_pod
+ name = "escape pod loader"
+ height = 5
+ width = 3
+ dwidth = 1
+ roundstart_template = /datum/map_template/shuttle/escape_pod/default
+ /// Set to true if you have a snowflake escape pod dock which needs to always have the normal pod or some other one
+ var/enforce_specific_pod = FALSE
+
+/obj/docking_port/stationary/escape_pod/Initialize(mapload)
+ . = ..()
+ if (enforce_specific_pod)
+ return
+
+ if (HAS_TRAIT(SSstation, STATION_TRAIT_SMALLER_PODS))
+ roundstart_template = /datum/map_template/shuttle/escape_pod/cramped
+ return
+ if (HAS_TRAIT(SSstation, STATION_TRAIT_BIGGER_PODS))
+ roundstart_template = /datum/map_template/shuttle/escape_pod/luxury
+
+// should fit the syndicate infiltrator, and smaller ships like the battlecruiser corvettes and fighters
+/obj/docking_port/stationary/syndicate
+ name = "near the station"
+ dheight = 1
+ dwidth = 12
+ height = 17
+ width = 23
+ shuttle_id = "syndicate_nearby"
+
+/obj/docking_port/stationary/syndicate/northwest
+ name = "northwest of station"
+ shuttle_id = "syndicate_nw"
+
+/obj/docking_port/stationary/syndicate/northeast
+ name = "northeast of station"
+ shuttle_id = "syndicate_ne"
+
+/obj/docking_port/stationary/transit
+ name = "In Transit"
+ override_can_dock_checks = TRUE
+ /// The turf reservation returned by the transit area request
+ var/datum/turf_reservation/reserved_area
+ /// The area created during the transit area reservation
+ var/area/shuttle/transit/assigned_area
+ /// The mobile port that owns this transit port
+ var/obj/docking_port/mobile/owner
+
+/obj/docking_port/stationary/transit/Initialize(mapload)
+ . = ..()
+ SSshuttle.transit_docking_ports += src
+
+/obj/docking_port/stationary/transit/Destroy(force=FALSE)
+ if(force)
+ if(get_docked())
+ log_world("A transit dock was destroyed while something was docked to it.")
+ SSshuttle.transit_docking_ports -= src
+ if(owner)
+ if(owner.assigned_transit == src)
+ owner.assigned_transit = null
+ owner = null
+ if(!QDELETED(reserved_area))
+ qdel(reserved_area)
+ reserved_area = null
+ return ..()
+
+/obj/docking_port/stationary/picked
+ ///Holds a list of map name strings for the port to pick from
+ var/list/shuttlekeys
+
+/obj/docking_port/stationary/picked/Initialize(mapload)
+ . = ..()
+ if(!LAZYLEN(shuttlekeys))
+ WARNING("Random docking port [shuttle_id] loaded with no shuttle keys")
+ return
+ var/selectedid = pick(shuttlekeys)
+ roundstart_template = SSmapping.shuttle_templates[selectedid]
+
+/obj/docking_port/stationary/picked/whiteship
+ name = "Deep Space"
+ shuttle_id = "whiteship_away"
+ height = 45 //Width and height need to remain in sync with the size of whiteshipdock.dmm, otherwise we'll get overflow
+ width = 44
+ dheight = 18
+ dwidth = 18
+ dir = 2
+ shuttlekeys = list(
+ "whiteship_meta",
+ "whiteship_pubby",
+ "whiteship_box",
+ "whiteship_cere",
+ "whiteship_kilo",
+ "whiteship_donut",
+ "whiteship_delta",
+ "whiteship_tram",
+ "whiteship_personalshuttle",
+ "whiteship_obelisk",
+ "whiteship_birdshot",
+ )
+
diff --git a/code/modules/shuttle/stationary_port/stationary_port.dm b/code/modules/shuttle/stationary_port/stationary_port.dm
new file mode 100644
index 0000000000000..49437730cb071
--- /dev/null
+++ b/code/modules/shuttle/stationary_port/stationary_port.dm
@@ -0,0 +1,91 @@
+
+/obj/docking_port/stationary
+ name = "dock"
+
+ var/last_dock_time
+
+ /// Map template to load when the dock is loaded
+ var/datum/map_template/shuttle/roundstart_template
+ /// Used to check if the shuttle template is enabled in the config file
+ var/json_key
+ ///If true, the shuttle can always dock at this docking port, despite its area checks, or if something is already docked
+ var/override_can_dock_checks = FALSE
+
+/obj/docking_port/stationary/Initialize(mapload)
+ . = ..()
+ register()
+ if(!area_type)
+ var/area/place = get_area(src)
+ area_type = place?.type // We might be created in nullspace
+
+ if(mapload)
+ for(var/turf/T in return_turfs())
+ T.turf_flags |= NO_RUINS
+
+ if(SSshuttle.initialized)
+ INVOKE_ASYNC(SSshuttle, TYPE_PROC_REF(/datum/controller/subsystem/shuttle, setup_shuttles), list(src))
+
+#ifdef TESTING
+ highlight("#f00")
+#endif
+
+/obj/docking_port/stationary/Destroy(force)
+ if(force)
+ unregister()
+ return ..()
+
+/obj/docking_port/stationary/register(replace = FALSE)
+ . = ..()
+ if(!shuttle_id)
+ shuttle_id = "dock"
+ else
+ port_destinations = shuttle_id
+
+ if(!name)
+ name = "dock"
+
+ var/counter = SSshuttle.assoc_stationary[shuttle_id]
+ if(!replace || !counter)
+ if(counter)
+ counter++
+ SSshuttle.assoc_stationary[shuttle_id] = counter
+ shuttle_id = "[shuttle_id]_[counter]"
+ name = "[name] [counter]"
+ else
+ SSshuttle.assoc_stationary[shuttle_id] = 1
+
+ if(!port_destinations)
+ port_destinations = shuttle_id
+
+ SSshuttle.stationary_docking_ports += src
+
+/obj/docking_port/stationary/unregister()
+ . = ..()
+ SSshuttle.stationary_docking_ports -= src
+
+/obj/docking_port/stationary/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
+ . = ..()
+ if(area_type) // We already have one
+ return
+ var/area/newarea = get_area(src)
+ area_type = newarea?.type
+
+/obj/docking_port/stationary/proc/load_roundstart()
+ if(json_key)
+ var/sid = SSmapping.current_map.shuttles[json_key]
+ roundstart_template = SSmapping.shuttle_templates[sid]
+ if(!roundstart_template)
+ CRASH("json_key:[json_key] value \[[sid]\] resulted in a null shuttle template for [src]")
+ else if(roundstart_template) // passed a PATH
+ var/sid = "[initial(roundstart_template.port_id)]_[initial(roundstart_template.suffix)]"
+
+ roundstart_template = SSmapping.shuttle_templates[sid]
+ if(!roundstart_template)
+ CRASH("Invalid path ([sid]/[roundstart_template]) passed to docking port.")
+
+ if(roundstart_template)
+ SSshuttle.action_load(roundstart_template, src)
+
+//returns first-found touching shuttleport
+/obj/docking_port/stationary/get_docked()
+ . = locate(/obj/docking_port/mobile) in loc
diff --git a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
index 02f19f45323c2..743ea8b23d880 100644
--- a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
+++ b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
@@ -31,7 +31,7 @@
/datum/action/cooldown/spell/aoe/magic_missile/proc/fire_projectile(atom/victim, mob/caster)
var/obj/projectile/to_fire = new projectile_type()
- to_fire.preparePixelProjectile(victim, caster)
+ to_fire.aim_projectile(victim, caster)
SEND_SIGNAL(caster, COMSIG_MOB_SPELL_PROJECTILE, src, victim, to_fire)
to_fire.fire()
diff --git a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm
index 2795efc2b201b..aa6a58b1341be 100644
--- a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm
+++ b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm
@@ -5,7 +5,7 @@
*/
/datum/action/cooldown/spell/jaunt/bloodcrawl
name = "Blood Crawl"
- desc = "Allows you to phase in and out of existance via pools of blood."
+ desc = "Allows you to phase in and out of existence via pools of blood."
background_icon_state = "bg_demon"
overlay_icon_state = "bg_demon_border"
@@ -158,7 +158,7 @@
*/
/datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon
name = "Voracious Blood Crawl"
- desc = "Allows you to phase in and out of existance via pools of blood. If you are dragging someone in critical or dead, \
+ desc = "Allows you to phase in and out of existence via pools of blood. If you are dragging someone in critical or dead, \
they will be consumed by you, fully healing you."
/// The sound played when someone's consumed.
var/consume_sound = 'sound/effects/magic/demon_consume.ogg'
@@ -285,7 +285,7 @@
*/
/datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon/funny
name = "Friendly Blood Crawl"
- desc = "Allows you to phase in and out of existance via pools of blood. If you are dragging someone in critical or dead - I mean, \
+ desc = "Allows you to phase in and out of existence via pools of blood. If you are dragging someone in critical or dead - I mean, \
sleeping, when entering a blood pool, they will be invited to a party and fully heal you!"
consume_sound = 'sound/misc/scary_horn.ogg'
@@ -332,7 +332,7 @@
// Heals them back to state one
if(!friend.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE))
continue
- playsound(release_turf, consumed_mobs, 50, TRUE, -1)
+ friend.playsound_local(release_turf, 'sound/effects/magic/exit_blood.ogg', 50, TRUE, -1)
to_chat(friend, span_clown("You leave [source]'s warm embrace, and feel ready to take on the world."))
diff --git a/code/modules/spells/spell_types/pointed/_pointed.dm b/code/modules/spells/spell_types/pointed/_pointed.dm
index 9189106d87424..39d6fb9d6736f 100644
--- a/code/modules/spells/spell_types/pointed/_pointed.dm
+++ b/code/modules/spells/spell_types/pointed/_pointed.dm
@@ -101,7 +101,7 @@
*/
/datum/action/cooldown/spell/pointed/projectile
/// What projectile we create when we shoot our spell.
- var/obj/projectile/magic/projectile_type = /obj/projectile/magic/teleport
+ var/obj/projectile/projectile_type = /obj/projectile/magic/teleport
/// How many projectiles we can fire per cast. Not all at once, per click, kinda like charges
var/projectile_amount = 1
/// How many projectiles we have yet to fire, based on projectile_amount
@@ -168,7 +168,7 @@
/datum/action/cooldown/spell/pointed/projectile/proc/ready_projectile(obj/projectile/to_fire, atom/target, mob/user, iteration)
to_fire.firer = owner
to_fire.fired_from = src
- to_fire.preparePixelProjectile(target, owner)
+ to_fire.aim_projectile(target, owner)
RegisterSignal(to_fire, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(on_cast_hit))
if(istype(to_fire, /obj/projectile/magic))
diff --git a/code/modules/spells/spell_types/pointed/spell_cards.dm b/code/modules/spells/spell_types/pointed/spell_cards.dm
index 65f9561658b7b..bbaed5ad66d64 100644
--- a/code/modules/spells/spell_types/pointed/spell_cards.dm
+++ b/code/modules/spells/spell_types/pointed/spell_cards.dm
@@ -81,4 +81,4 @@
to_fire.pixel_x = rand(-projectile_location_spread_amount, projectile_location_spread_amount)
to_fire.pixel_y = rand(-projectile_location_spread_amount, projectile_location_spread_amount)
- to_fire.preparePixelProjectile(target, user, null, current_angle)
+ to_fire.aim_projectile(target, user, null, current_angle)
diff --git a/code/modules/spells/spell_types/projectile/_basic_projectile.dm b/code/modules/spells/spell_types/projectile/_basic_projectile.dm
index 343de438cd669..bcab5633eccb7 100644
--- a/code/modules/spells/spell_types/projectile/_basic_projectile.dm
+++ b/code/modules/spells/spell_types/projectile/_basic_projectile.dm
@@ -25,6 +25,6 @@
/datum/action/cooldown/spell/basic_projectile/proc/fire_projectile(atom/target, atom/caster)
var/obj/projectile/to_fire = new projectile_type()
- to_fire.preparePixelProjectile(target, caster)
+ to_fire.aim_projectile(target, caster)
SEND_SIGNAL(caster, COMSIG_MOB_SPELL_PROJECTILE, src, target, to_fire)
to_fire.fire()
diff --git a/code/modules/spells/spell_types/self/splattercasting_spell.dm b/code/modules/spells/spell_types/self/splattercasting_spell.dm
index 184a2afab7ca2..e76f8e3c1b9bf 100644
--- a/code/modules/spells/spell_types/self/splattercasting_spell.dm
+++ b/code/modules/spells/spell_types/self/splattercasting_spell.dm
@@ -28,7 +28,7 @@
brings unimaginable momentary torment as your heart stops, and your skin grows cold. You are now \
merely a vessel for the arcane flow. Soon, all that is left is not pain, but hunger."))
- cast_on.set_species(/datum/species/vampire)
+ cast_on.set_species(/datum/species/human/vampire)
cast_on.blood_volume = BLOOD_VOLUME_NORMAL ///for predictable blood total amounts when the spell is first cast.
cast_on.AddComponent(/datum/component/splattercasting)
diff --git a/code/modules/spells/spell_types/shapeshift/_shape_status.dm b/code/modules/spells/spell_types/shapeshift/_shape_status.dm
index f8f44817a5932..9e1284d27f60c 100644
--- a/code/modules/spells/spell_types/shapeshift/_shape_status.dm
+++ b/code/modules/spells/spell_types/shapeshift/_shape_status.dm
@@ -243,6 +243,7 @@
desc = "Your form is not your own... you're shapeshifted into another creature! \
A wizard could turn you back - or maybe you're stuck like this for good?"
icon_state = "shapeshifted"
+ clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/shapeshifted/Click(location, control, params)
. = ..()
diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm
index 683afe605c983..7467f85d79e93 100644
--- a/code/modules/station_goals/bsa.dm
+++ b/code/modules/station_goals/bsa.dm
@@ -212,7 +212,7 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE)
var/turf/point = get_front_turf()
var/turf/target = get_target_turf()
- var/atom/movable/blocker
+ var/atom/blocker
for(var/T in get_line(get_step(point, dir), target))
var/turf/tile = T
if(SEND_SIGNAL(tile, COMSIG_ATOM_BSA_BEAM) & COMSIG_ATOM_BLOCKS_BSA_BEAM)
diff --git a/code/modules/station_goals/meteor_shield.dm b/code/modules/station_goals/meteor_shield.dm
index 84a61395a4b9c..e4b76f600ca80 100644
--- a/code/modules/station_goals/meteor_shield.dm
+++ b/code/modules/station_goals/meteor_shield.dm
@@ -61,13 +61,14 @@
name = "\improper Meteor Shield Satellite"
desc = "A meteor point-defense satellite."
mode = "M-SHIELD"
- processing_flags = START_PROCESSING_MANUALLY
- subsystem_type = /datum/controller/subsystem/processing/fastprocess
/// the range a meteor shield sat can destroy meteors
var/kill_range = 14
//emag behavior dark matt-eor stuff
+ /// Proximity monitor associated with this atom, needed for it to work.
+ var/datum/proximity_monitor/proximity_monitor
+
/// amount of emagged active meteor shields
var/static/emagged_active_meteor_shields = 0
/// the highest amount of shields you've ever emagged
@@ -94,34 +95,43 @@
return FALSE
return TRUE
-/obj/machinery/satellite/meteor_shield/process()
- if(obj_flags & EMAGGED)
- //kills the processing because emagged meteor shields no longer stop meteors in any way
- return PROCESS_KILL
- if(!active)
+/obj/machinery/satellite/meteor_shield/Initialize(mapload)
+ . = ..()
+ proximity_monitor = new(src, /* range = */ 0)
+
+/obj/machinery/satellite/meteor_shield/HasProximity(atom/movable/proximity_check_mob)
+ . = ..()
+ if(!istype(proximity_check_mob, /obj/effect/meteor))
return
- for(var/obj/effect/meteor/meteor_to_destroy in GLOB.meteor_list)
- if(meteor_to_destroy.z != z)
- continue
- if(get_dist(meteor_to_destroy, src) > kill_range)
- continue
- if(space_los(meteor_to_destroy))
- var/turf/beam_from = get_turf(src)
- beam_from.Beam(get_turf(meteor_to_destroy), icon_state="sat_beam", time = 5)
- if(meteor_to_destroy.shield_defense(src))
- qdel(meteor_to_destroy)
+ var/obj/effect/meteor/meteor_to_destroy = proximity_check_mob
+ if(space_los(meteor_to_destroy))
+ var/turf/beam_from = get_turf(src)
+ beam_from.Beam(get_turf(meteor_to_destroy), icon_state="sat_beam", time = 5)
+ if(meteor_to_destroy.shield_defense(src))
+ qdel(meteor_to_destroy)
/obj/machinery/satellite/meteor_shield/toggle(user)
+ if(user)
+ balloon_alert(user, "looking for [active ? "off" : "on"] button")
+ if(user && !do_after(user, 2 SECONDS, src, IGNORE_HELD_ITEM))
+ return FALSE
if(!..(user))
return FALSE
if(obj_flags & EMAGGED)
update_emagged_meteor_sat(user)
+ if(active)
+ proximity_monitor.set_range(kill_range)
+ else
+ proximity_monitor.set_range(0)
+
+
var/datum/station_goal/station_shield/goal = SSstation.get_station_goal(/datum/station_goal/station_shield)
goal?.update_coverage()
/obj/machinery/satellite/meteor_shield/Destroy()
. = ..()
+ QDEL_NULL(proximity_monitor)
if(obj_flags & EMAGGED)
//satellites that are destroying are not active, this will count down the number of emagged sats
update_emagged_meteor_sat()
@@ -181,6 +191,7 @@
for(var/datum/round_event_control/stray_meteor/stray_meteor in SSevents.control)
stray_meteor.weight *= mod
+
#undef EMAGGED_METEOR_SHIELD_THRESHOLD_ONE
#undef EMAGGED_METEOR_SHIELD_THRESHOLD_TWO
#undef EMAGGED_METEOR_SHIELD_THRESHOLD_THREE
diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm
index df574e8b3be9e..d6e6e101c6e39 100644
--- a/code/modules/surgery/bodyparts/_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/_bodyparts.dm
@@ -372,10 +372,13 @@
if(ishuman(victim))
var/mob/living/carbon/human/human_victim = victim
- if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH) || HAS_TRAIT(victim, TRAIT_GOLEM_LIMBATTACHMENT)) // DOPPLER EDIT CHANGE - ORIGINAL: if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH))
- // DOPPLER EDIT ADDITION START - golems lol
+ if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH) || HAS_TRAIT(victim, TRAIT_GOLEM_LIMBATTACHMENT) || HAS_TRAIT(victim, TRAIT_ROBOTIC_LIMBATTACHMENT)) // DOPPLER EDIT CHANGE - ORIGINAL: if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH))
+ // DOPPLER EDIT ADDITION START - golems lol && cybernetic limb mount quirk
if(HAS_TRAIT(victim, TRAIT_GOLEM_LIMBATTACHMENT) && !(bodytype & BODYTYPE_GOLEM)) //if we're trying to attach something that isn't a fuggin rock, end out
return
+ if (!(HAS_TRAIT(src, TRAIT_EASY_ATTACH)) && !HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) && HAS_TRAIT(victim, TRAIT_ROBOTIC_LIMBATTACHMENT) && !(bodytype & BODYTYPE_ROBOTIC)) //if we're trying to attach something that's not robotic, end out - but ONLY if we have this quirk
+ to_chat(user, span_warning("[human_victim]'s body rejects [src]! It can only accept robotic limbs."))
+ return
// DOPPLER EDIT ADDITION END
if(!human_victim.get_bodypart(body_zone))
user.temporarilyRemoveItemFromInventory(src, TRUE)
@@ -1268,14 +1271,11 @@
* * gauze- Just the gauze stack we're taking a sheet from to apply here
*/
/obj/item/bodypart/proc/apply_gauze(obj/item/stack/medical/gauze/new_gauze)
- if(!istype(new_gauze) || !new_gauze.absorption_capacity)
+ if(!istype(new_gauze) || !new_gauze.absorption_capacity || !new_gauze.use(1))
return
- var/newly_gauzed = FALSE
- if(!current_gauze)
- newly_gauzed = TRUE
+ var/newly_gauzed = !current_gauze
QDEL_NULL(current_gauze)
current_gauze = new new_gauze.type(src, 1)
- new_gauze.use(1)
current_gauze.gauzed_bodypart = src
if(newly_gauzed)
SEND_SIGNAL(src, COMSIG_BODYPART_GAUZED, current_gauze, new_gauze)
diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm
index dec8efb154eae..2f9a42e0d1f9c 100644
--- a/code/modules/surgery/bodyparts/helpers.dm
+++ b/code/modules/surgery/bodyparts/helpers.dm
@@ -40,11 +40,12 @@
///Get the bodypart for whatever hand we have active, Only relevant for carbons
/mob/proc/get_active_hand()
+ RETURN_TYPE(/obj/item/bodypart)
return FALSE
/mob/living/carbon/get_active_hand()
var/which_hand = BODY_ZONE_PRECISE_L_HAND
- if(!(active_hand_index % RIGHT_HANDS))
+ if(IS_RIGHT_INDEX(active_hand_index))
which_hand = BODY_ZONE_PRECISE_R_HAND
return get_bodypart(check_zone(which_hand))
@@ -54,7 +55,7 @@
/mob/living/carbon/get_inactive_hand()
var/which_hand = BODY_ZONE_PRECISE_R_HAND
- if(!(active_hand_index % RIGHT_HANDS))
+ if(IS_RIGHT_INDEX(active_hand_index))
which_hand = BODY_ZONE_PRECISE_L_HAND
return get_bodypart(check_zone(which_hand))
@@ -64,7 +65,7 @@
/mob/living/carbon/has_left_hand(check_disabled = TRUE)
for(var/obj/item/bodypart/hand_instance in hand_bodyparts)
- if(!(hand_instance.held_index % RIGHT_HANDS) || (check_disabled && hand_instance.bodypart_disabled))
+ if(IS_RIGHT_INDEX(hand_instance.held_index) || (check_disabled && hand_instance.bodypart_disabled))
continue
return TRUE
return FALSE
@@ -80,7 +81,7 @@
/mob/living/carbon/has_right_hand(check_disabled = TRUE)
for(var/obj/item/bodypart/hand_instance in hand_bodyparts)
- if(hand_instance.held_index % RIGHT_HANDS || (check_disabled && hand_instance.bodypart_disabled))
+ if(IS_LEFT_INDEX(hand_instance.held_index) || (check_disabled && hand_instance.bodypart_disabled))
continue
return TRUE
return FALSE
diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm
index 25f66f40af9a8..c7e1f7f7846da 100644
--- a/code/modules/surgery/bodyparts/parts.dm
+++ b/code/modules/surgery/bodyparts/parts.dm
@@ -106,7 +106,7 @@
bodypart_flags = BODYPART_UNREMOVABLE
max_damage = LIMB_MAX_HP_ALIEN_CORE
acceptable_bodyshape = BODYSHAPE_HUMANOID
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/chest/larva
icon = 'icons/mob/human/species/alien/bodyparts.dmi'
@@ -119,7 +119,7 @@
max_damage = LIMB_MAX_HP_ALIEN_LARVA
bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC
acceptable_bodytype = BODYTYPE_LARVA_PLACEHOLDER
- wing_types = NONE
+ wing_types = null
/// Parent Type for arms, should not appear in game.
/obj/item/bodypart/arm
diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm
index d9e25302ad7c1..3e42535ab101f 100644
--- a/code/modules/surgery/bodyparts/robot_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm
@@ -574,7 +574,7 @@
body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED
/obj/item/bodypart/leg/right/robot/advanced
- name = "heavy robotic right leg"
+ name = "advanced robotic right leg"
desc = "An advanced cybernetic leg, capable of greater feats of strength and durability."
icon_static = 'icons/mob/augmentation/advanced_augments.dmi'
icon = 'icons/mob/augmentation/advanced_augments.dmi'
diff --git a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm
index 016a80682cf53..33e07b09fcdf7 100644
--- a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm
@@ -22,7 +22,7 @@
is_dimorphic = FALSE
dmg_overlay_type = null
brute_modifier = 1.25 //ethereal are weak to brute damages
- wing_types = NONE
+ wing_types = null
//bodypart_traits = list(TRAIT_NO_UNDERWEAR) //DOPPLER EDIT REMOVAL
/obj/item/bodypart/chest/ethereal/update_limb(dropping_limb, is_creating)
diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
index d5d44b1f1f1b8..5bd2ac2e3c943 100644
--- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
@@ -12,7 +12,7 @@
is_dimorphic = FALSE
burn_modifier = 2
biological_state = (BIO_FLESH|BIO_BLOODED)
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/arm/left/snail
limb_id = SPECIES_SNAIL
@@ -58,7 +58,7 @@
limb_id = SPECIES_ABDUCTOR
is_dimorphic = FALSE
should_draw_greyscale = FALSE
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/chest/abductor/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_GREY)
@@ -177,7 +177,7 @@
limb_id = SPECIES_ZOMBIE
is_dimorphic = FALSE
should_draw_greyscale = FALSE
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/arm/left/zombie
limb_id = SPECIES_ZOMBIE
@@ -216,7 +216,7 @@
limb_id = SPECIES_PODPERSON
is_dimorphic = TRUE
burn_modifier = 1.25
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/chest/pod/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_FLOWERPOT)
@@ -292,7 +292,7 @@
is_dimorphic = FALSE
should_draw_greyscale = FALSE
burn_modifier = 1.5
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/arm/left/shadow
limb_id = SPECIES_SHADOW
@@ -380,7 +380,7 @@
is_dimorphic = TRUE
bodypart_traits = list(TRAIT_NO_JUMPSUIT)
burn_modifier = 1.25
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/arm/left/mushroom
limb_id = SPECIES_MUSHROOM
@@ -483,7 +483,7 @@
should_draw_greyscale = FALSE
dmg_overlay_type = null
bodypart_traits = list(TRAIT_NO_JUMPSUIT)
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/chest/golem/Initialize(mapload)
worn_belt_offset = new(
diff --git a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm
index 0125601bda5a7..b668008e44c05 100644
--- a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm
@@ -28,7 +28,7 @@
brute_modifier = 1.5 //Plasmemes are weak
burn_modifier = 1.5 //Plasmemes are weak
bodypart_flags = BODYPART_UNHUSKABLE
- wing_types = NONE
+ wing_types = null
/obj/item/bodypart/chest/plasmaman/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_PLASMA)
diff --git a/code/modules/surgery/burn_dressing.dm b/code/modules/surgery/burn_dressing.dm
index 9ffeaef089553..54aa82f43b434 100644
--- a/code/modules/surgery/burn_dressing.dm
+++ b/code/modules/surgery/burn_dressing.dm
@@ -100,7 +100,7 @@
span_notice("[user] successfully excises some of the infected flesh from [target]'s [target.parse_zone_with_bodypart(target_zone)]!"),
)
log_combat(user, target, "excised infected flesh in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
- surgery.operated_bodypart.receive_damage(brute=3, wound_bonus=CANT_WOUND)
+ target.apply_damage(3, BRUTE, surgery.operated_bodypart, wound_bonus = CANT_WOUND, sharpness = SHARP_EDGED, attacking_item = tool)
burn_wound.infestation -= infestation_removed
burn_wound.sanitization += sanitization_added
if(burn_wound.infestation <= 0)
@@ -118,7 +118,7 @@
span_notice("[user] carves away some of the healthy flesh from [target]'s [target.parse_zone_with_bodypart(target_zone)] with [tool]!"),
span_notice("[user] carves away some of the healthy flesh from [target]'s [target.parse_zone_with_bodypart(target_zone)]!"),
)
- surgery.operated_bodypart.receive_damage(brute=rand(4,8), sharpness=TRUE)
+ target.apply_damage(rand(4, 8), BRUTE, surgery.operated_bodypart, sharpness = SHARP_EDGED, attacking_item = tool)
/datum/surgery_step/debride/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
if(!..())
diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm
index a5f4a0505f6fd..712c3a2901c07 100644
--- a/code/modules/surgery/organ_manipulation.dm
+++ b/code/modules/surgery/organ_manipulation.dm
@@ -12,6 +12,47 @@
/datum/surgery_step/close,
)
+//So far, this surgery type should be the only way carbon mobs can be fishing spots, also because the comp doesn't allow dupes.
+/datum/surgery/organ_manipulation/next_step(mob/living/user, modifiers)
+ . = ..()
+ if(!.)
+ return
+
+ // We've completed the surgery
+ if(status > length(steps))
+ return
+
+ if(!ispath(steps[status], /datum/surgery_step/manipulate_organs))
+ //The manipulate_organs step either hasn't been reached yet or we're already past it.
+ if(!HAS_TRAIT(target, TRAIT_FISHING_SPOT))
+ return
+ remove_fishing_spot()
+ return
+
+ if(HAS_TRAIT(target, TRAIT_FISHING_SPOT))
+ return
+
+ target.AddComponent(/datum/component/fishing_spot, /datum/fish_source/surgery)
+
+/datum/surgery/organ_manipulation/Destroy()
+ if(QDELETED(target) || !HAS_TRAIT(target, TRAIT_FISHING_SPOT))
+ return ..()
+ // The surgery is not finished yet and we're currently on manipulate organs step
+ if(status <= length(steps) && ispath(steps[status], /datum/surgery_step/manipulate_organs))
+ remove_fishing_spot()
+ return ..()
+
+/**
+ * The target is a fishing spot, but we're past the step that allows us to fish organs from him, so we need
+ * to check if there are other organ manipulation surgeries that still meet this criteria before we remove
+ * the component
+ */
+/datum/surgery/organ_manipulation/proc/remove_fishing_spot()
+ for(var/datum/surgery/organ_manipulation/manipulation in target.surgeries)
+ if(manipulation != src && ispath(manipulation.steps[manipulation.status], /datum/surgery_step/manipulate_organs))
+ return
+ qdel(target.GetComponent(/datum/component/fishing_spot))
+
/datum/surgery/organ_manipulation/soft
possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
steps = list(
@@ -57,7 +98,7 @@
/datum/surgery/organ_manipulation/mechanic
name = "Hardware Manipulation"
requires_bodypart_type = BODYTYPE_ROBOTIC
- surgery_flags = SURGERY_SELF_OPERABLE | SURGERY_REQUIRE_LIMB
+ surgery_flags = SURGERY_SELF_OPERABLE | SURGERY_REQUIRE_LIMB | SURGERY_CHECK_TOOL_BEHAVIOUR
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD)
steps = list(
/datum/surgery_step/mechanic_open,
@@ -69,32 +110,6 @@
/datum/surgery_step/mechanic_close,
)
-/datum/surgery/organ_manipulation/mechanic/next_step(mob/living/user, modifiers)
- if(location != user.zone_selected)
- return FALSE
- if(user.combat_mode)
- return FALSE
- if(step_in_progress)
- return TRUE
-
- var/try_to_fail = FALSE
- if(LAZYACCESS(modifiers, RIGHT_CLICK))
- try_to_fail = TRUE
-
- var/datum/surgery_step/step = get_surgery_step()
- if(isnull(step))
- return FALSE
- var/obj/item/tool = user.get_active_held_item()
- if(tool)
- tool = tool.get_proxy_attacker_for(target, user)
- if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail))
- return TRUE
- if(tool && tool.tool_behaviour) //Mechanic organ manipulation isn't done with just surgery tools
- to_chat(user, span_warning("This step requires a different tool!"))
- return TRUE
-
- return FALSE
-
/datum/surgery/organ_manipulation/mechanic/soft
possible_locs = list(
BODY_ZONE_PRECISE_GROIN,
@@ -176,7 +191,7 @@
to_chat(user, span_warning("[target_organ] seems to have been chewed on, you can't use this!"))
return SURGERY_STEP_FAIL
- if(!can_use_organ(user, meatslab))
+ if(!can_use_organ(meatslab))
return SURGERY_STEP_FAIL
if (target_zone == BODY_ZONE_PRECISE_EYES)
@@ -196,7 +211,7 @@
var/list/unfiltered_organs = target.get_organs_for_zone(target_zone)
var/list/organs = list()
for(var/organ in unfiltered_organs)
- if(can_use_organ(user, organ))
+ if(can_use_organ(organ))
organs.Add(organ)
if (target_zone == BODY_ZONE_PRECISE_EYES)
target_zone = check_zone(target_zone)
@@ -295,7 +310,7 @@
return ..()
///You can never use this MUHAHAHAHAHAHAH (because its the byond version of abstract)
-/datum/surgery_step/manipulate_organs/proc/can_use_organ(mob/user, obj/item/organ/organ)
+/datum/surgery_step/manipulate_organs/proc/can_use_organ(obj/item/organ/organ)
return FALSE
///Surgery step for internal organs, like hearts and brains
@@ -304,7 +319,7 @@
name = "manipulate organs (hemostat/organ)"
///only operate on internal organs
-/datum/surgery_step/manipulate_organs/internal/can_use_organ(mob/user, obj/item/organ/organ)
+/datum/surgery_step/manipulate_organs/internal/can_use_organ(obj/item/organ/organ)
return !(organ.organ_flags & ORGAN_EXTERNAL)
///prosthetic surgery gives full effectiveness to crowbars (and hemostats)
@@ -318,7 +333,7 @@
name = "manipulate features (hemostat/feature)"
///Only operate on external organs
-/datum/surgery_step/manipulate_organs/external/can_use_organ(mob/user, obj/item/organ/organ)
+/datum/surgery_step/manipulate_organs/external/can_use_organ(obj/item/organ/organ)
return (organ.organ_flags & ORGAN_EXTERNAL)
///prosthetic surgery gives full effectiveness to crowbars (and hemostats)
diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm
index e2f05a9ed5610..1f036ad3be9bb 100644
--- a/code/modules/surgery/organs/_organ.dm
+++ b/code/modules/surgery/organs/_organ.dm
@@ -85,6 +85,7 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
if(bodypart_overlay)
setup_bodypart_overlay()
+ START_PROCESSING(SSobj, src)
/obj/item/organ/Destroy()
if(bodypart_owner && !owner && !QDELETED(bodypart_owner))
@@ -126,10 +127,6 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
return
owner.remove_status_effect(status, type)
-/obj/item/organ/proc/on_owner_examine(datum/source, mob/user, list/examine_list)
- SIGNAL_HANDLER
- return
-
/obj/item/organ/proc/on_find(mob/living/finder)
return
@@ -140,14 +137,43 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
if(!IS_ROBOTIC_ORGAN(src) && (clean_types & CLEAN_TYPE_BLOOD))
add_blood_DNA(blood_dna_info)
-/obj/item/organ/process(seconds_per_tick, times_fired)
- return
+/obj/item/organ/proc/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person
+ if(organ_flags & (ORGAN_ROBOTIC | ORGAN_FROZEN))
+ return
-/obj/item/organ/proc/on_death(seconds_per_tick, times_fired)
- return
+ if(owner)
+ if(owner.bodytemperature > T0C)
+ var/air_temperature_factor = min((owner.bodytemperature - T0C) / 20, 1)
+ apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor)
+ else
+ var/datum/gas_mixture/exposed_air = return_air()
+ if(exposed_air && exposed_air.temperature > T0C)
+ var/air_temperature_factor = min((exposed_air.temperature - T0C) / 20, 1)
+ apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor)
-/obj/item/organ/proc/on_life(seconds_per_tick, times_fired)
- return
+/obj/item/organ/proc/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing
+ if(organ_flags & ORGAN_FAILING)
+ handle_failing_organs(seconds_per_tick)
+ return
+
+ if(failure_time > 0)
+ failure_time--
+
+ if(organ_flags & ORGAN_EMP) //Synthetic organ has been emped, is now failing.
+ apply_organ_damage(decay_factor * maxHealth * seconds_per_tick)
+ return
+
+ if(!damage) // No sense healing if you're not even hurt bro
+ return
+
+ if(IS_ROBOTIC_ORGAN(src)) // Robotic organs don't naturally heal
+ return
+
+ ///Damage decrements by a percent of its maxhealth
+ var/healing_amount = healing_factor
+ ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's health
+ healing_amount += (owner.satiety > 0) ? (4 * healing_factor * owner.satiety / MAX_SATIETY) : 0
+ apply_organ_damage(-healing_amount * maxHealth * seconds_per_tick, damage) // pass curent damage incase we are over cap
/obj/item/organ/examine(mob/user)
. = ..()
@@ -166,11 +192,14 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
///Used as callbacks by object pooling
/obj/item/organ/proc/exit_wardrobe()
- return
+ START_PROCESSING(SSobj, src)
//See above
/obj/item/organ/proc/enter_wardrobe()
- return
+ STOP_PROCESSING(SSobj, src)
+
+/obj/item/organ/process(seconds_per_tick, times_fired)
+ on_death(seconds_per_tick, times_fired) //Kinda hate doing it like this, but I really don't want to call process directly.
/obj/item/organ/proc/OnEatFrom(eater, feeder)
useable = FALSE //You can't use it anymore after eating it you spaztic
@@ -288,8 +317,14 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
ears.Insert(src)
ears.adjustEarDamage(-INFINITY, -INFINITY) // actually do: set_organ_damage(0) and deaf = 0
+///Organs don't die instantly, and neither should you when you get fucked up
/obj/item/organ/proc/handle_failing_organs(seconds_per_tick)
- return
+ if(owner.stat == DEAD)
+ return
+
+ failure_time += seconds_per_tick
+ organ_failure(seconds_per_tick)
+
/** organ_failure
* generic proc for handling dying organs
diff --git a/code/modules/surgery/organs/external/_visual_organs.dm b/code/modules/surgery/organs/external/_visual_organs.dm
index 52ed3e031cb93..682326fa26f05 100644
--- a/code/modules/surgery/organs/external/_visual_organs.dm
+++ b/code/modules/surgery/organs/external/_visual_organs.dm
@@ -213,13 +213,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times
///Store our old datum here for if our antennae are healed
var/original_sprite_datum
-/obj/item/organ/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/antennae/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_antennae))
RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_antennae))
-/obj/item/organ/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/antennae/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL))
diff --git a/code/modules/surgery/organs/external/spines.dm b/code/modules/surgery/organs/external/spines.dm
index 23c29358a0dfc..77e0f63e6b0e9 100644
--- a/code/modules/surgery/organs/external/spines.dm
+++ b/code/modules/surgery/organs/external/spines.dm
@@ -16,13 +16,13 @@
organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
-/obj/item/organ/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/spines/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
// If we have a tail, attempt to add a tail spines overlay
var/obj/item/organ/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
our_tail?.try_insert_tail_spines(our_tail.bodypart_owner)
return ..()
-/obj/item/organ/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/spines/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
// If we have a tail, remove any tail spines overlay
var/obj/item/organ/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
our_tail?.remove_tail_spines(our_tail.bodypart_owner)
diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm
index 8b77159308c2a..2717711e45ca1 100644
--- a/code/modules/surgery/organs/external/tails.dm
+++ b/code/modules/surgery/organs/external/tails.dm
@@ -23,11 +23,10 @@
///The overlay for tail spines, if any
var/datum/bodypart_overlay/mutant/tail_spines/tail_spines_overlay
-/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tail/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
- if(.)
- receiver.clear_mood_event("tail_lost")
- receiver.clear_mood_event("tail_balance_lost")
+ receiver.clear_mood_event("tail_lost")
+ receiver.clear_mood_event("tail_balance_lost")
if(!special) // if some admin wants to give someone tail moodles for tail shenanigans, they can spawn it and do it by hand
original_owner ||= WEAKREF(receiver)
@@ -85,7 +84,7 @@
bodypart.remove_bodypart_overlay(tail_spines_overlay)
QDEL_NULL(tail_spines_overlay)
-/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(wag_flags & WAG_WAGGING)
diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm
index f773630f8bf1d..0d445cb031428 100644
--- a/code/modules/surgery/organs/external/wings/functional_wings.dm
+++ b/code/modules/surgery/organs/external/wings/functional_wings.dm
@@ -11,7 +11,7 @@
/datum/action/innate/flight/Activate()
var/mob/living/carbon/human/human = owner
var/obj/item/organ/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
- if(wings?.can_fly(human))
+ if(wings?.can_fly())
wings.toggle_flight(human)
///The true wings that you can use to fly and shit (you cant actually shit with them)
@@ -29,18 +29,35 @@
// grind_results = list(/datum/reagent/flightpotion = 5)
food_reagents = list(/datum/reagent/flightpotion = 5)
+ var/drift_force = FUNCTIONAL_WING_FORCE
+ var/stabilizer_force = FUNCTIONAL_WING_STABILIZATION
+
+/obj/item/organ/wings/functional/Initialize(mapload)
+ . = ..()
+ AddComponent( \
+ /datum/component/jetpack, \
+ TRUE, \
+ drift_force, \
+ stabilizer_force, \
+ COMSIG_WINGS_OPENED, \
+ COMSIG_WINGS_CLOSED, \
+ null, \
+ CALLBACK(src, PROC_REF(can_fly)), \
+ CALLBACK(src, PROC_REF(can_fly)), \
+ )
+
/obj/item/organ/wings/functional/Destroy()
QDEL_NULL(fly)
return ..()
-/obj/item/organ/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/wings/functional/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(QDELETED(fly))
fly = new
fly.Grant(receiver)
-/obj/item/organ/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/wings/functional/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
fly?.Remove(organ_owner)
if(wings_open)
@@ -54,14 +71,14 @@
/obj/item/organ/wings/functional/proc/handle_flight(mob/living/carbon/human/human)
if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
return FALSE
- if(!can_fly(human))
+ if(!can_fly())
toggle_flight(human)
return FALSE
return TRUE
-
///Check if we're still eligible for flight (wings covered, atmosphere too thin, etc)
-/obj/item/organ/wings/functional/proc/can_fly(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/can_fly()
+ var/mob/living/carbon/human/human = owner
if(human.stat || human.body_position == LYING_DOWN || isnull(human.client))
return FALSE
//Jumpsuits have tail holes, so it makes sense they have wing holes too
@@ -105,13 +122,10 @@
/obj/item/organ/wings/functional/proc/toggle_flight(mob/living/carbon/human/human)
if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
human.physiology.stun_mod *= 2
- human.add_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
+ human.add_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
human.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings)
human.AddElement(/datum/element/forced_gravity, 0)
passtable_on(human, SPECIES_FLIGHT_TRAIT)
- RegisterSignal(human, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move))
- RegisterSignal(human, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff))
- START_PROCESSING(SSnewtonian_movement, src)
open_wings()
to_chat(human, span_notice("You beat your wings and begin to hover gently above the ground..."))
human.set_resting(FALSE, TRUE)
@@ -119,50 +133,21 @@
return
human.physiology.stun_mod *= 0.5
- human.remove_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
+ human.remove_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
human.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings)
human.RemoveElement(/datum/element/forced_gravity, 0)
passtable_off(human, SPECIES_FLIGHT_TRAIT)
- UnregisterSignal(human, list(COMSIG_MOB_CLIENT_MOVE_NOGRAV, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE))
- STOP_PROCESSING(SSnewtonian_movement, src)
to_chat(human, span_notice("You settle gently back onto the ground..."))
close_wings()
human.refresh_gravity()
-/obj/item/organ/wings/functional/proc/on_client_move(mob/source, list/move_args)
- SIGNAL_HANDLER
-
- if (!can_fly(source))
- return
-
- var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
- source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = FUNCTIONAL_WING_FORCE, controlled_cap = max_drift_force)
- source.setDir(source.client.intended_direction)
-
-/obj/item/organ/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
- SIGNAL_HANDLER
-
- if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
- return
-
- if (!can_fly(source) || !source.client.intended_direction || (source.client.intended_direction & get_dir(source, backup)))
- return
-
- return COMPONENT_PREVENT_SPACEMOVE_HALT
-
-/obj/item/organ/wings/functional/process(seconds_per_tick)
- if (!owner || !can_fly(owner) || isnull(owner.drift_handler))
- return
-
- var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
- owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, FUNCTIONAL_WING_STABILIZATION * (seconds_per_tick * 1 SECONDS))
-
///SPREAD OUR WINGS AND FLLLLLYYYYYY
/obj/item/organ/wings/functional/proc/open_wings()
var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay
overlay.open_wings()
wings_open = TRUE
owner.update_body_parts()
+ SEND_SIGNAL(src, COMSIG_WINGS_OPENED, owner)
///close our wings
/obj/item/organ/wings/functional/proc/close_wings()
@@ -175,6 +160,8 @@
var/turf/location = loc
location.Entered(src, NONE)
+ SEND_SIGNAL(src, COMSIG_WINGS_CLOSED, owner)
+
///Bodypart overlay of function wings, including open and close functionality!
/datum/bodypart_overlay/mutant/wings/functional
///Are our wings currently open? Change through open_wings or close_wings()
diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm
index 265a9ee751226..da35ea25d50e8 100644
--- a/code/modules/surgery/organs/external/wings/moth_wings.dm
+++ b/code/modules/surgery/organs/external/wings/moth_wings.dm
@@ -16,18 +16,31 @@
///Store our old datum here for if our burned wings are healed
var/original_sprite_datum
+ var/drift_force = MOTH_WING_FORCE
+ var/stabilizer_force = MOTH_WING_FORCE
+
+/obj/item/organ/wings/moth/Initialize(mapload)
+ . = ..()
+ AddComponent( \
+ /datum/component/jetpack, \
+ TRUE, \
+ drift_force, \
+ stabilizer_force, \
+ COMSIG_ORGAN_IMPLANTED, \
+ COMSIG_ORGAN_REMOVED, \
+ null, \
+ CALLBACK(src, PROC_REF(allow_flight)), \
+ null, \
+ )
+
/obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/receiver)
. = ..()
RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_wings))
RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_wings))
- RegisterSignal(receiver, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move))
- RegisterSignal(receiver, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff))
- START_PROCESSING(SSnewtonian_movement, src)
/obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
. = ..()
- UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_MOB_CLIENT_MOVE_NOGRAV, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE))
- STOP_PROCESSING(SSnewtonian_movement, src)
+ UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL))
/obj/item/organ/wings/moth/make_flap_sound(mob/living/carbon/wing_owner)
playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE)
@@ -38,14 +51,6 @@
/obj/item/organ/wings/moth/proc/allow_flight()
if(!owner || !owner.client)
return FALSE
- if(!isturf(owner.loc))
- return FALSE
- if(!(owner.movement_type & FLOATING) || owner.buckled)
- return FALSE
- if(owner.pulledby)
- return FALSE
- if(owner.throwing)
- return FALSE
if(owner.has_gravity())
return FALSE
if(ishuman(owner))
@@ -59,34 +64,6 @@
return TRUE
return FALSE
-/obj/item/organ/wings/moth/process(seconds_per_tick)
- if (!owner || !allow_flight() || isnull(owner.drift_handler))
- return
-
- var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
- owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, MOTH_WING_FORCE * (seconds_per_tick * 1 SECONDS))
-
-/obj/item/organ/wings/moth/proc/on_client_move(mob/source, list/move_args)
- SIGNAL_HANDLER
-
- if (!allow_flight())
- return
-
- var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
- source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = MOTH_WING_FORCE, controlled_cap = max_drift_force)
- source.setDir(source.client.intended_direction)
-
-/obj/item/organ/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
- SIGNAL_HANDLER
-
- if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
- return
-
- if (!allow_flight() || !source.client.intended_direction || (source.client.intended_direction & get_dir(source, backup)))
- return
-
- return COMPONENT_PREVENT_SPACEMOVE_HALT
-
///check if our wings can burn off ;_;
/obj/item/organ/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human)
SIGNAL_HANDLER
diff --git a/code/modules/surgery/organs/internal/_internal_organ.dm b/code/modules/surgery/organs/internal/_internal_organ.dm
deleted file mode 100644
index 0527e6d79808f..0000000000000
--- a/code/modules/surgery/organs/internal/_internal_organ.dm
+++ /dev/null
@@ -1,86 +0,0 @@
-/obj/item/organ
- name = "organ"
-
-/obj/item/organ/Initialize(mapload)
- . = ..()
- START_PROCESSING(SSobj, src)
-
-/obj/item/organ/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
- . = ..()
-
- // organs_slot must ALWAYS be ordered in the same way as organ_process_order
- // Otherwise life processing breaks down
- sortTim(owner.organs_slot, GLOBAL_PROC_REF(cmp_organ_slot_asc))
-
- STOP_PROCESSING(SSobj, src)
-
-/obj/item/organ/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
- . = ..()
-
- if((organ_flags & ORGAN_VITAL) && !special && !HAS_TRAIT(organ_owner, TRAIT_GODMODE))
- if(organ_owner.stat != DEAD)
- organ_owner.investigate_log("has been killed by losing a vital organ ([src]).", INVESTIGATE_DEATHS)
- organ_owner.death()
-
- START_PROCESSING(SSobj, src)
-
-/obj/item/organ/process(seconds_per_tick, times_fired)
- on_death(seconds_per_tick, times_fired) //Kinda hate doing it like this, but I really don't want to call process directly.
-
-/obj/item/organ/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person
- if(organ_flags & (ORGAN_ROBOTIC | ORGAN_FROZEN))
- return
-
- if(owner)
- if(owner.bodytemperature > T0C)
- var/air_temperature_factor = min((owner.bodytemperature - T0C) / 20, 1)
- apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor)
- else
- var/datum/gas_mixture/exposed_air = return_air()
- if(exposed_air && exposed_air.temperature > T0C)
- var/air_temperature_factor = min((exposed_air.temperature - T0C) / 20, 1)
- apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor)
-
-/// Called once every life tick on every organ in a carbon's body
-/// NOTE: THIS IS VERY HOT. Be careful what you put in here
-/// To give you some scale, if there's 100 carbons in the game, they each have maybe 9 organs
-/// So that's 900 calls to this proc every life process. Please don't be dumb
-/obj/item/organ/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing
- if(organ_flags & ORGAN_FAILING)
- handle_failing_organs(seconds_per_tick)
- return
-
- if(failure_time > 0)
- failure_time--
-
- if(organ_flags & ORGAN_EMP) //Synthetic organ has been emped, is now failing.
- apply_organ_damage(decay_factor * maxHealth * seconds_per_tick)
- return
-
- if(!damage) // No sense healing if you're not even hurt bro
- return
-
- if(IS_ROBOTIC_ORGAN(src)) // Robotic organs don't naturally heal
- return
-
- ///Damage decrements by a percent of its maxhealth
- var/healing_amount = healing_factor
- ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's health
- healing_amount += (owner.satiety > 0) ? (4 * healing_factor * owner.satiety / MAX_SATIETY) : 0
- apply_organ_damage(-healing_amount * maxHealth * seconds_per_tick, damage) // pass curent damage incase we are over cap
-
-///Used as callbacks by object pooling
-/obj/item/organ/exit_wardrobe()
- START_PROCESSING(SSobj, src)
-
-//See above
-/obj/item/organ/enter_wardrobe()
- STOP_PROCESSING(SSobj, src)
-
-///Organs don't die instantly, and neither should you when you get fucked up
-/obj/item/organ/handle_failing_organs(seconds_per_tick)
- if(owner.stat == DEAD)
- return
-
- failure_time += seconds_per_tick
- organ_failure(seconds_per_tick)
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
index a07b8caed6c9f..7d0b249bdbcbc 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
@@ -278,6 +278,35 @@
/obj/item/organ/cyberimp/arm/toolset/l
zone = BODY_ZONE_L_ARM
+//The order of the item list for this implant is not alphabetized due to it actually affecting how it shows up playerside when opening the implant
+/obj/item/organ/cyberimp/arm/paperwork
+ name = "integrated paperwork implant"
+ desc = "A highly sought out implant among heads of personnel, and other high up command staff in Nanotrasen. This implant allows the user to always have the tools necesarry for paperwork handy"
+ icon_state = "toolkit_engineering"
+ actions_types = list(/datum/action/item_action/organ_action/toggle/toolkit)
+ items_to_create = list(
+ /obj/item/pen/fountain,
+ /obj/item/clipboard,
+ /obj/item/taperecorder,
+ /obj/item/lighter,
+ /obj/item/laser_pointer,
+ /obj/item/stamp,
+ /obj/item/stamp/denied,
+ )
+
+/obj/item/organ/cyberimp/arm/paperwork/l
+ zone = BODY_ZONE_L_ARM
+
+/obj/item/organ/cyberimp/arm/paperwork/emag_act(mob/user, obj/item/card/emag/emag_card)
+ for(var/datum/weakref/created_item in items_list)
+ var/obj/potential_tool = created_item.resolve()
+ if(istype(/obj/item/stamp/chameleon, potential_tool))
+ return FALSE
+
+ balloon_alert(user, "experimental stamp unlocked")
+ items_list += WEAKREF(new /obj/item/stamp/chameleon(src))
+ return TRUE
+
/obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card)
for(var/datum/weakref/created_item in items_list)
var/obj/potential_knife = created_item.resolve()
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
index 6a1e4272cd567..603acc0eae9d5 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
@@ -175,6 +175,7 @@
COMSIG_THRUSTER_DEACTIVATED, \
THRUSTER_ACTIVATION_FAILED, \
CALLBACK(src, PROC_REF(allow_thrust), 0.01), \
+ CALLBACK(src, PROC_REF(allow_thrust), 0.01), \
/datum/effect_system/trail_follow/ion, \
)
@@ -292,7 +293,7 @@
organ_owner.AddElement(/datum/element/forced_gravity, 1)
add_organ_trait(TRAIT_STURDY_FRAME)
-/obj/item/organ/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
remove_organ_trait(TRAIT_BOULDER_BREAKER)
if(stone_overlay)
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
index d720953a24ca5..204247e4de822 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
@@ -27,13 +27,13 @@
eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT)
balloon_alert(eye_owner, "hud enabled")
-/obj/item/organ/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags)
+/obj/item/organ/cyberimp/eyes/hud/on_mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags)
. = ..()
eye_owner.add_traits(HUD_traits, ORGAN_TRAIT)
toggled_on = TRUE
-/obj/item/organ/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags)
+/obj/item/organ/cyberimp/eyes/hud/on_mob_remove(mob/living/carbon/eye_owner, special, movement_flags)
. = ..()
eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT)
toggled_on = FALSE
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
index 42f0e5ac7b237..ffd3f022e7e2a 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
@@ -6,16 +6,6 @@
organ_flags = ORGAN_ROBOTIC
failing_desc = "seems to be broken."
var/implant_color = COLOR_WHITE
- var/implant_overlay
-
-/obj/item/organ/cyberimp/New(mob/implanted_mob = null)
- if(iscarbon(implanted_mob))
- src.Insert(implanted_mob)
- if(implant_overlay)
- var/mutable_appearance/overlay = mutable_appearance(icon, implant_overlay)
- overlay.color = implant_color
- add_overlay(overlay)
- return ..()
//[[[[BRAIN]]]]
diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm
index 850d45df016db..3443cf9249e33 100644
--- a/code/modules/surgery/organs/internal/ears/_ears.dm
+++ b/code/modules/surgery/organs/internal/ears/_ears.dm
@@ -52,7 +52,7 @@
. = ..()
update_temp_deafness()
-/obj/item/organ/ears/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/ears/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, COMSIG_MOB_SAY)
REMOVE_TRAIT(organ_owner, TRAIT_DEAF, EAR_DAMAGE)
diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm
index 2f88f2e5dea03..a0d6e1e8f2801 100644
--- a/code/modules/surgery/organs/internal/eyes/_eyes.dm
+++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm
@@ -50,12 +50,14 @@
/// Scarring on this organ
var/scarring = NONE
-/obj/item/organ/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/eyes/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
receiver.cure_blind(NO_EYES)
apply_damaged_eye_effects()
- refresh(receiver, call_update = TRUE)
+ refresh(receiver, call_update = !special)
RegisterSignal(receiver, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act))
+ if (scarring)
+ apply_scarring_effects()
/// Refreshes the visuals of the eyes
/// If call_update is TRUE, we also will call update_body
@@ -85,7 +87,7 @@
if(call_update)
affected_human.update_body()
-/obj/item/organ/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/eyes/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(ishuman(organ_owner))
@@ -110,13 +112,17 @@
organ_owner.update_sight()
UnregisterSignal(organ_owner, COMSIG_ATOM_BULLET_ACT)
-/obj/item/organ/eyes/proc/on_bullet_act(datum/source, obj/projectile/proj, def_zone)
+/obj/item/organ/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone, piercing_hit, blocked)
SIGNAL_HANDLER
// Once-a-dozen-rounds level of rare
if (def_zone != BODY_ZONE_HEAD || !prob(proj.damage * 0.1) || !(proj.damage_type == BRUTE || proj.damage_type == BURN))
return
+ if (blocked && source.is_eyes_covered())
+ if (!proj.armour_penetration || prob(blocked - proj.armour_penetration))
+ return
+
var/valid_sides = list()
if (!(scarring & RIGHT_EYE_SCAR))
valid_sides += RIGHT_EYE_SCAR
@@ -270,11 +276,6 @@
owner.cure_blind(EYE_SCARRING_TRAIT)
owner.update_body()
-/obj/item/organ/eyes/on_mob_insert(mob/living/carbon/eye_owner)
- . = ..()
- if (scarring)
- apply_scarring_effects()
-
/obj/item/organ/eyes/on_mob_remove(mob/living/carbon/eye_owner)
. = ..()
if (scarring)
@@ -454,7 +455,7 @@
owner.emote("scream")
/obj/item/organ/eyes/robotic/xray
- name = "\improper X-ray eyes"
+ name = "x-ray eyes"
desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
eye_color_left = "000"
eye_color_right = "000"
@@ -526,7 +527,7 @@
#define UPDATE_EYES_RIGHT 2
/obj/item/organ/eyes/robotic/glow
- name = "High Luminosity Eyes"
+ name = "high luminosity eyes"
desc = "Special glowing eyes, used by snowflakes who want to be special."
eye_color_left = "000"
eye_color_right = "000"
@@ -560,14 +561,11 @@
deactivate(close_ui = TRUE)
/// Set the initial color of the eyes on insert to be the mob's previous eye color.
-/obj/item/organ/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags)
. = ..()
left_eye_color_string = eye_color_left
right_eye_color_string = eye_color_right
update_mob_eye_color(eye_recipient)
-
-/obj/item/organ/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient)
- . = ..()
deactivate(close_ui = TRUE)
eye.forceMove(eye_recipient)
@@ -808,7 +806,7 @@
flash_protect = FLASH_PROTECTION_SENSITIVE
/obj/item/organ/eyes/robotic/xray/moth
- name = "robotic eyes"
+ name = "moth x-ray eyes"
eye_icon_state = "motheyes"
icon_state = "eyeballs-cybermoth"
desc = "These cybernetic imitation moth eyes will give you X-ray vision. Blinking is futile. Much like actual moth eyes, very sensitive to bright lights."
@@ -820,7 +818,7 @@
icon_state = "eyeballs-cybermoth"
/obj/item/organ/eyes/robotic/glow/moth
- name = "High Luminosity Moth Eyes"
+ name = "high luminosity moth eyes"
eye_icon_state = "motheyes"
base_eye_state = "eyes_mothglow"
icon_state = "eyeballs-cybermoth"
@@ -871,6 +869,6 @@
apply_organ_damage(-10) //heal quickly
. = ..()
-/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE)
+/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE, movement_flags)
REMOVE_TRAIT(unadapted, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT)
return ..()
diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm
index 20ad378529ff3..c1ebed9afbf17 100644
--- a/code/modules/surgery/organs/internal/heart/_heart.dm
+++ b/code/modules/surgery/organs/internal/heart/_heart.dm
@@ -163,7 +163,7 @@
accursed.AddComponent(/datum/component/manual_heart, pump_delay = pump_delay, blood_loss = blood_loss, heal_brute = heal_brute, heal_burn = heal_burn, heal_oxy = heal_oxy)
-/obj/item/organ/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE)
+/obj/item/organ/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE, movement_flags)
. = ..()
qdel(accursed.GetComponent(/datum/component/manual_heart))
@@ -247,7 +247,7 @@
addtimer(VARSET_CALLBACK(src, stabilization_available, TRUE), 5 MINUTES, TIMER_DELETE_ME)
// Largely a sanity check
-/obj/item/organ/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
+/obj/item/organ/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
. = ..()
if(HAS_TRAIT_FROM(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT))
REMOVE_TRAIT(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT)
diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
index df60b8243ef72..19f0aef7a5227 100644
--- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
@@ -28,6 +28,10 @@
///If the core is removable once socketed.
var/core_removable = TRUE
+/obj/item/organ/heart/cybernetic/anomalock/Destroy()
+ QDEL_NULL(core)
+ return ..()
+
/obj/item/organ/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(!core)
@@ -39,7 +43,7 @@
RegisterSignal(organ_owner, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(activate_survival))
RegisterSignal(organ_owner, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act))
-/obj/item/organ/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(!core)
return
diff --git a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
index 5c6602834cb07..0e34fc581c3fb 100644
--- a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
@@ -21,14 +21,14 @@
add_atom_colour(ethereal_color, FIXED_COLOUR_PRIORITY)
update_appearance()
-/obj/item/organ/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
+/obj/item/organ/heart/ethereal/on_mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
. = ..()
RegisterSignal(heart_owner, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change))
RegisterSignal(heart_owner, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(on_owner_fully_heal))
RegisterSignal(heart_owner, COMSIG_QDELETING, PROC_REF(owner_deleted))
-/obj/item/organ/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags)
+/obj/item/organ/heart/ethereal/on_mob_remove(mob/living/carbon/heart_owner, special, movement_flags)
UnregisterSignal(heart_owner, list(COMSIG_MOB_STATCHANGE, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_QDELETING))
REMOVE_TRAIT(heart_owner, TRAIT_CORPSELOCKED, SPECIES_TRAIT)
stop_crystalization_process(heart_owner)
diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm
index 866813d02aa13..e3d6d51704458 100755
--- a/code/modules/surgery/organs/internal/liver/_liver.dm
+++ b/code/modules/surgery/organs/internal/liver/_liver.dm
@@ -60,14 +60,15 @@
qdel(GetComponent(/datum/component/squeak))
/// Registers COMSIG_SPECIES_HANDLE_CHEMICAL from owner
-/obj/item/organ/liver/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
RegisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL, PROC_REF(handle_chemical))
+ RegisterSignal(organ_owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_owner_examine))
/// Unregisters COMSIG_SPECIES_HANDLE_CHEMICAL from owner
-/obj/item/organ/liver/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
- UnregisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL)
+ UnregisterSignal(organ_owner, list(COMSIG_SPECIES_HANDLE_CHEMICAL, COMSIG_ATOM_EXAMINE))
/**
* This proc can be overriden by liver subtypes so they can handle certain chemicals in special ways.
@@ -188,7 +189,7 @@
if(SPT_PROB(3, seconds_per_tick))
owner.emote("drool")
-/obj/item/organ/liver/on_owner_examine(datum/source, mob/user, list/examine_list)
+/obj/item/organ/liver/proc/on_owner_examine(datum/source, mob/user, list/examine_list)
if(!ishuman(owner) || !(organ_flags & ORGAN_FAILING))
return
diff --git a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
index 8ff1f0c3cf327..6ed49b8f1137d 100644
--- a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
+++ b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
@@ -37,7 +37,7 @@
playsound(organ_owner, SFX_DESECRATION, 50, vary = TRUE) //You just want to socialize
organ_owner.visible_message(span_warning("[organ_owner] rattles loudly and flails around!!"), span_danger("Your bones hurt so much that your missing muscles spasm!!"))
INVOKE_ASYNC(organ_owner, TYPE_PROC_REF(/atom/movable, say), "OOF!!", forced = chem.type)
- bodypart.receive_damage(brute = 200) //But I don't think we should
+ organ_owner.apply_damage(200, BRUTE, bodypart)
else
to_chat(organ_owner, span_warning("Your missing [parse_zone(selected_part)] aches from wherever you left it."))
INVOKE_ASYNC(organ_owner, TYPE_PROC_REF(/mob, emote), "sigh")
diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm
index 60332123a8c4e..2026458a35949 100644
--- a/code/modules/surgery/organs/internal/lungs/_lungs.dm
+++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm
@@ -157,7 +157,7 @@
add_gas_reaction(/datum/gas/zauker, while_present = PROC_REF(too_much_zauker))
///Simply exists so that you don't keep any alerts from your previous lack of lungs.
-/obj/item/organ/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags)
+/obj/item/organ/lungs/on_mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags)
. = ..()
receiver.clear_alert(ALERT_NOT_ENOUGH_OXYGEN)
@@ -166,7 +166,7 @@
receiver.clear_alert(ALERT_NOT_ENOUGH_PLASMA)
receiver.clear_alert(ALERT_NOT_ENOUGH_N2O)
-/obj/item/organ/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/lungs/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
// This is very "manual" I realize, but it's useful to ensure cleanup for gases we're removing happens
// Avoids stuck alerts and such
diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm
index 768f3483c030f..40d3265684d13 100644
--- a/code/modules/surgery/organs/internal/stomach/_stomach.dm
+++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm
@@ -246,13 +246,13 @@
disgusted.throw_alert(ALERT_DISGUST, /atom/movable/screen/alert/disgusted)
disgusted.add_mood_event("disgust", /datum/mood_event/disgusted)
-/obj/item/organ/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/stomach/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
receiver.hud_used?.hunger?.update_appearance()
-/obj/item/organ/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/on_mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
if(ishuman(stomach_owner))
- var/mob/living/carbon/human/human_owner = owner
+ var/mob/living/carbon/human/human_owner = stomach_owner
human_owner.clear_alert(ALERT_DISGUST)
human_owner.clear_mood_event("disgust")
stomach_owner.hud_used?.hunger?.update_appearance()
diff --git a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
index 3921cdc64e59c..0f817b5230745 100644
--- a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
+++ b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
@@ -11,11 +11,11 @@
/// How slow are you if you have absolutely nothing in the tank?
var/max_hunger_slowdown = 4
-/obj/item/organ/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
RegisterSignal(owner, COMSIG_CARBON_ATTEMPT_EAT, PROC_REF(try_eating))
-/obj/item/organ/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, COMSIG_CARBON_ATTEMPT_EAT)
organ_owner.remove_movespeed_modifier(/datum/movespeed_modifier/golem_hunger)
diff --git a/code/modules/surgery/organs/internal/tongue/_tongue.dm b/code/modules/surgery/organs/internal/tongue/_tongue.dm
index 7b5cecb34115a..abf74a03bdf11 100644
--- a/code/modules/surgery/organs/internal/tongue/_tongue.dm
+++ b/code/modules/surgery/organs/internal/tongue/_tongue.dm
@@ -124,7 +124,7 @@
food_taste_reaction = FOOD_LIKED
return food_taste_reaction
-/obj/item/organ/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tongue/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(modifies_speech)
@@ -138,7 +138,7 @@
REMOVE_TRAIT(receiver, TRAIT_AGEUSIA, NO_TONGUE_TRAIT)
apply_tongue_effects()
-/obj/item/organ/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/tongue/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
temp_say_mod = ""
@@ -197,7 +197,7 @@
new /regex(@"\bX([\-|r|R]|\b)", "g") = "ECKS$1",
)
-/obj/item/organ/tongue/lizard/New(class, timer, datum/mutation/human/copymut)
+/obj/item/organ/tongue/lizard/Initialize(mapload)
. = ..()
AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech)))
diff --git a/code/modules/surgery/organs/organ_movement.dm b/code/modules/surgery/organs/organ_movement.dm
index 16889ec0588a3..de2ac86c9de3a 100644
--- a/code/modules/surgery/organs/organ_movement.dm
+++ b/code/modules/surgery/organs/organ_movement.dm
@@ -15,12 +15,15 @@
/obj/item/organ/proc/Insert(mob/living/carbon/receiver, special = FALSE, movement_flags)
SHOULD_CALL_PARENT(TRUE)
- mob_insert(receiver, special, movement_flags)
+ if(!mob_insert(receiver, special, movement_flags))
+ return FALSE
bodypart_insert(limb_owner = receiver, movement_flags = movement_flags)
if(!special && !(receiver.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS))
receiver.update_body_parts()
+ return TRUE
+
/*
* Remove the organ from the select mob.
*
@@ -44,15 +47,17 @@
* movement_flags - Flags for how we behave in movement. See DEFINES/organ_movement for flags
*/
/obj/item/organ/proc/mob_insert(mob/living/carbon/receiver, special, movement_flags)
- SHOULD_CALL_PARENT(TRUE)
+ SHOULD_NOT_OVERRIDE(TRUE)
if(!iscarbon(receiver))
- stack_trace("Tried to insert organ into non-carbon: [receiver.type]")
- return
+ //We try to insert the organ in a corgi when running the test, expecting it to return FALSE.
+ if(!PERFORM_ALL_TESTS(organ_sanity))
+ stack_trace("Tried to insert organ into non-carbon: [receiver.type]")
+ return FALSE
if(owner == receiver)
stack_trace("Organ receiver is already organ owner")
- return
+ return FALSE
var/obj/item/organ/replaced = receiver.get_organ_slot(slot)
if(replaced)
@@ -78,7 +83,7 @@
receiver.organs_slot[slot] = src
owner = receiver
- on_mob_insert(receiver, special)
+ on_mob_insert(receiver, special, movement_flags)
return TRUE
@@ -99,10 +104,15 @@
if(!special)
organ_owner.hud_used?.update_locked_slots()
- RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_owner_examine))
SEND_SIGNAL(src, COMSIG_ORGAN_IMPLANTED, organ_owner)
SEND_SIGNAL(organ_owner, COMSIG_CARBON_GAIN_ORGAN, src, special)
+ // organs_slot must ALWAYS be ordered in the same way as organ_process_order
+ // Otherwise life processing breaks down
+ sortTim(owner.organs_slot, GLOBAL_PROC_REF(cmp_organ_slot_asc))
+
+ STOP_PROCESSING(SSobj, src)
+
/// Insert an organ into a limb, assume the limb as always detached and include no owner operations here (except the get_bodypart helper here I guess)
/// Give EITHER a limb OR a limb owner
/obj/item/organ/proc/bodypart_insert(obj/item/bodypart/bodypart, mob/living/carbon/limb_owner, movement_flags)
@@ -148,7 +158,7 @@
* * special - "quick swapping" an organ out - when TRUE, the mob will be unaffected by not having that organ for the moment
*/
/obj/item/organ/proc/mob_remove(mob/living/carbon/organ_owner, special = FALSE, movement_flags)
- SHOULD_CALL_PARENT(TRUE)
+ SHOULD_NOT_OVERRIDE(TRUE)
if(organ_owner)
if(organ_owner.organs_slot[slot] == src)
@@ -156,9 +166,7 @@
organ_owner.organs -= src
owner = null
-
- on_mob_remove(organ_owner, special)
-
+ on_mob_remove(organ_owner, special, movement_flags)
return TRUE
/// Called after the organ is removed from a mob.
@@ -179,7 +187,6 @@
for(var/datum/status_effect/effect as anything in organ_effects)
organ_owner.remove_status_effect(effect, type)
- UnregisterSignal(organ_owner, COMSIG_ATOM_EXAMINE)
SEND_SIGNAL(src, COMSIG_ORGAN_REMOVED, organ_owner)
SEND_SIGNAL(organ_owner, COMSIG_CARBON_LOSE_ORGAN, src, special)
ADD_TRAIT(src, TRAIT_USED_ORGAN, ORGAN_TRAIT)
@@ -189,6 +196,13 @@
if(!special)
organ_owner.hud_used?.update_locked_slots()
+ if((organ_flags & ORGAN_VITAL) && !special && !HAS_TRAIT(organ_owner, TRAIT_GODMODE))
+ if(organ_owner.stat != DEAD)
+ organ_owner.investigate_log("has been killed by losing a vital organ ([src]).", INVESTIGATE_DEATHS)
+ organ_owner.death()
+
+ START_PROCESSING(SSobj, src)
+
var/list/diseases = organ_owner.get_static_viruses()
if(!LAZYLEN(diseases))
return
diff --git a/code/modules/surgery/repair_puncture.dm b/code/modules/surgery/repair_puncture.dm
index b916668433f08..77b36d264cdff 100644
--- a/code/modules/surgery/repair_puncture.dm
+++ b/code/modules/surgery/repair_puncture.dm
@@ -81,8 +81,8 @@
span_notice("[user] successfully realigns some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)] with [tool]!"),
span_notice("[user] successfully realigns some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)]!"),
)
- log_combat(user, target, "excised infected flesh in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
- surgery.operated_bodypart.receive_damage(brute=3, wound_bonus=CANT_WOUND)
+ log_combat(user, target, "realigned blood vessels in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
+ target.apply_damage(3, BRUTE, surgery.operated_bodypart, wound_bonus = CANT_WOUND, sharpness = SHARP_EDGED, attacking_item = tool)
pierce_wound.adjust_blood_flow(-0.25)
return ..()
@@ -95,7 +95,7 @@
span_notice("[user] jerks apart some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)] with [tool]!"),
span_notice("[user] jerk apart some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)]!"),
)
- surgery.operated_bodypart.receive_damage(brute=rand(4,8), sharpness=SHARP_EDGED, wound_bonus = 10)
+ target.apply_damage(rand(4, 8), BRUTE, surgery.operated_bodypart, wound_bonus = 10, sharpness = SHARP_EDGED, attacking_item = tool)
///// Sealing the vessels back together
/datum/surgery_step/seal_veins
@@ -144,7 +144,7 @@
)
log_combat(user, target, "dressed burns in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
pierce_wound.adjust_blood_flow(-0.5)
- if(pierce_wound.blood_flow > 0)
+ if(!QDELETED(pierce_wound) && pierce_wound.blood_flow > 0)
surgery.status = REALIGN_INNARDS
to_chat(user, span_notice("There still seems to be misaligned blood vessels to finish... "))
else
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index d23267fa326bd..c8ca5ba8fb517 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -4,8 +4,7 @@
///The description of the surgery, what it does.
var/desc
- ///From __DEFINES/surgery.dm
- ///Selection: SURGERY_IGNORE_CLOTHES | SURGERY_SELF_OPERABLE | SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_REQUIRES_REAL_LIMB | SURGERY_MORBID_CURIOSITY
+ ///Bitfield for flags that determine different behaviors and requirement for the surgery. See __DEFINES/surgery.dm
var/surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB
///The surgery step we're currently on, increases each time we do a step.
var/status = 1
@@ -120,24 +119,23 @@
if(LAZYACCESS(modifiers, RIGHT_CLICK))
try_to_fail = TRUE
- var/datum/surgery_step/step = get_surgery_step()
- if(isnull(step))
+ var/datum/surgery_step/surgery_step = GLOB.surgery_steps[steps[status]]
+ if(isnull(surgery_step))
return FALSE
var/obj/item/tool = user.get_active_held_item()
if(tool)
tool = tool.get_proxy_attacker_for(target, user)
- if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail))
+ if(surgery_step.try_op(user, target, user.zone_selected, tool, src, try_to_fail))
return TRUE
- if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it
+ if(!tool)
+ return FALSE
+ //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it
+ if((surgery_flags & SURGERY_CHECK_TOOL_BEHAVIOUR) ? tool.tool_behaviour : (tool.item_flags & SURGICAL_TOOL))
to_chat(user, span_warning("This step requires a different tool!"))
return TRUE
return FALSE
-/datum/surgery/proc/get_surgery_step()
- var/step_type = steps[status]
- return new step_type
-
/datum/surgery/proc/get_surgery_next_step()
if(status < steps.len)
var/step_type = steps[status + 1]
diff --git a/code/modules/transport/elevator/elev_panel.dm b/code/modules/transport/elevator/elev_panel.dm
index 659049a7448ca..162c70f390cee 100644
--- a/code/modules/transport/elevator/elev_panel.dm
+++ b/code/modules/transport/elevator/elev_panel.dm
@@ -19,6 +19,7 @@
icon_state = "elevpanel0"
base_icon_state = "elevpanel"
+ mouse_over_pointer = MOUSE_HAND_POINTER
power_channel = AREA_USAGE_ENVIRON
// Indestructible until someone wants to make these constructible, with all the chaos that implies
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
diff --git a/code/modules/transport/tram/tram_controller.dm b/code/modules/transport/tram/tram_controller.dm
index 5ac6d5bc748bc..1eeed96375f08 100644
--- a/code/modules/transport/tram/tram_controller.dm
+++ b/code/modules/transport/tram/tram_controller.dm
@@ -54,7 +54,7 @@
var/recovery_clear_count = 0
///if the tram's next stop will be the tram malfunction event sequence
- var/malf_active = FALSE
+ var/malf_active = TRANSPORT_SYSTEM_NORMAL
///fluff information of the tram, such as ongoing kill count and age
var/datum/tram_mfg_info/tram_registration
@@ -144,7 +144,7 @@
tram_registration.active = FALSE
SSblackbox.record_feedback("amount", "tram_destroyed", 1)
SSpersistence.save_tram_history(specific_transport_id)
- ..()
+ return ..()
/**
* Register transport modules to the controller
@@ -259,14 +259,16 @@
playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller reset.")
- if(malf_active)
- addtimer(CALLBACK(src, PROC_REF(announce_malf_event)), 1 SECONDS)
-
SEND_SIGNAL(src, COMSIG_TRAM_TRAVEL, idle_platform, destination_platform)
for(var/obj/structure/transport/linear/tram/transport_module as anything in transport_modules) //only thing everyone needs to know is the new location.
if(transport_module.travelling) //wee woo wee woo there was a double action queued. damn multi tile structs
return //we don't care to undo cover_locked controls, though, as that will resolve itself
+ if(malf_active == TRANSPORT_LOCAL_WARNING)
+ if(transport_module.check_for_humans())
+ throw_chance *= 1.75
+ malf_active = TRANSPORT_LOCAL_FAULT
+ addtimer(CALLBACK(src, PROC_REF(announce_malf_event)), 1 SECONDS)
transport_module.verify_transport_contents()
transport_module.glide_size_override = DELAY_TO_GLIDE_SIZE(speed_limiter)
transport_module.set_travelling(TRUE)
@@ -296,7 +298,7 @@
return PROCESS_KILL
if(!travel_remaining)
- if(!controller_operational || malf_active)
+ if(!controller_operational || malf_active == TRANSPORT_LOCAL_FAULT)
degraded_stop()
else
normal_stop()
@@ -370,10 +372,10 @@
paired_cabinet.say("Controller reset.")
log_transport("TC: [specific_transport_id] position data successfully reset. ")
speed_limiter = initial(speed_limiter)
- if(malf_active)
+ if(malf_active == TRANSPORT_LOCAL_FAULT)
set_status_code(SYSTEM_FAULT, TRUE)
addtimer(CALLBACK(src, PROC_REF(cycle_doors), CYCLE_OPEN), 2 SECONDS)
- malf_active = FALSE
+ malf_active = TRANSPORT_SYSTEM_NORMAL
throw_chance = initial(throw_chance)
playsound(paired_cabinet, 'sound/machines/buzz/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller error. Please contact your engineering department.")
@@ -417,6 +419,7 @@
* Performs a reset of the tram's position data by finding a predetermined reference landmark, then driving to it.
*/
/datum/transport_controller/linear/tram/proc/reset_position()
+ malf_active = TRANSPORT_SYSTEM_NORMAL
if(idle_platform)
if(get_turf(idle_platform) == get_turf(nav_beacon))
set_status_code(SYSTEM_FAULT, FALSE)
@@ -602,7 +605,8 @@
* Tram malfunction random event. Set comm error, requiring engineering or AI intervention.
*/
/datum/transport_controller/linear/tram/proc/start_malf_event()
- malf_active = TRUE
+ malf_active = TRANSPORT_LOCAL_WARNING
+ paired_cabinet.update_appearance()
throw_chance *= 1.25
log_transport("TC: [specific_transport_id] starting Tram Malfunction event.")
@@ -615,7 +619,8 @@
/datum/transport_controller/linear/tram/proc/end_malf_event()
if(!(malf_active))
return
- malf_active = FALSE
+ malf_active = TRANSPORT_SYSTEM_NORMAL
+ paired_cabinet.update_appearance()
throw_chance = initial(throw_chance)
log_transport("TC: [specific_transport_id] ending Tram Malfunction event.")
@@ -978,7 +983,7 @@
. += emissive_appearance(icon, "[base_icon_state]-estop", src, alpha = src.alpha)
return
- if(controller_datum.controller_status & SYSTEM_FAULT || controller_datum.malf_active)
+ if(controller_datum.controller_status & SYSTEM_FAULT || controller_datum.malf_active != TRANSPORT_SYSTEM_NORMAL)
. += mutable_appearance(icon, "[base_icon_state]-fault")
. += emissive_appearance(icon, "[base_icon_state]-fault", src, alpha = src.alpha)
return
@@ -1079,7 +1084,7 @@
"recoveryMode" = controller_datum.recovery_mode,
"currentSpeed" = controller_datum.current_speed,
"currentLoad" = controller_datum.current_load,
- "statusSF" = controller_datum.controller_status & SYSTEM_FAULT,
+ "statusSF" = controller_datum.controller_status & SYSTEM_FAULT || controller_datum.malf_active != TRANSPORT_SYSTEM_NORMAL,
"statusCE" = controller_datum.controller_status & COMM_ERROR,
"statusES" = controller_datum.controller_status & EMERGENCY_STOP,
"statusPD" = controller_datum.controller_status & PRE_DEPARTURE,
diff --git a/code/modules/transport/tram/tram_structures.dm b/code/modules/transport/tram/tram_structures.dm
index 346cb5e680283..9b04bba6ce7e3 100644
--- a/code/modules/transport/tram/tram_structures.dm
+++ b/code/modules/transport/tram/tram_structures.dm
@@ -474,8 +474,8 @@
canSmoothWith = null
/// Position of the spoiler
var/deployed = FALSE
- /// Malfunctioning due to tampering or emag
- var/malfunctioning = FALSE
+ /// Locked in position
+ var/locked = FALSE
/// Weakref to the tram piece we control
var/datum/weakref/tram_ref
/// The tram we're attached to
@@ -494,7 +494,7 @@
context[SCREENTIP_CONTEXT_LMB] = "repair"
if(held_item?.tool_behaviour == TOOL_WELDER && atom_integrity >= max_integrity)
- context[SCREENTIP_CONTEXT_LMB] = "[malfunctioning ? "repair" : "lock"]"
+ context[SCREENTIP_CONTEXT_LMB] = "[locked ? "repair" : "sabotage"]"
return CONTEXTUAL_SCREENTIP_SET
@@ -503,22 +503,19 @@
if(obj_flags & EMAGGED)
. += span_warning("The electronics panel is sparking occasionally. It can be reset with a [EXAMINE_HINT("multitool.")]")
- if(malfunctioning)
+ if(locked)
. += span_warning("The spoiler is [EXAMINE_HINT("welded")] in place!")
else
- . += span_notice("The spoiler can be locked in to place with a [EXAMINE_HINT("welder.")]")
+ . += span_notice("The spoiler can be locked in place with a [EXAMINE_HINT("welder.")]")
/obj/structure/tram/spoiler/proc/set_spoiler(source, controller, controller_active, controller_status, travel_direction)
SIGNAL_HANDLER
var/spoiler_direction = travel_direction
- if(obj_flags & EMAGGED && !malfunctioning)
- malfunctioning = TRUE
-
- if(malfunctioning || controller_status & COMM_ERROR)
+ if(locked || controller_status & COMM_ERROR || obj_flags & EMAGGED)
if(!deployed)
// Bring out the blades
- if(malfunctioning)
+ if(locked)
visible_message(span_danger("\the [src] locks up due to its servo overheating!"))
do_sparks(3, cardinal_only = FALSE, source = src)
deploy_spoiler()
@@ -583,14 +580,14 @@
return FALSE
if(atom_integrity >= max_integrity)
- to_chat(user, span_warning("You begin to weld \the [src], [malfunctioning ? "repairing damage" : "preventing retraction"]."))
+ to_chat(user, span_warning("You begin to weld \the [src], [locked ? "repairing damage" : "preventing retraction"]."))
if(!tool.use_tool(src, user, 4 SECONDS, volume = 50))
return
- malfunctioning = !malfunctioning
- user.visible_message(span_warning("[user] [malfunctioning ? "welds \the [src] in place" : "repairs \the [src]"] with [tool]."), \
- span_warning("You finish welding \the [src], [malfunctioning ? "locking it in place." : "it can move freely again!"]"), null, COMBAT_MESSAGE_RANGE)
+ locked = !locked
+ user.visible_message(span_warning("[user] [locked ? "welds \the [src] in place" : "repairs \the [src]"] with [tool]."), \
+ span_warning("You finish welding \the [src], [locked ? "locking it in place." : "it can move freely again!"]"), null, COMBAT_MESSAGE_RANGE)
- if(malfunctioning)
+ if(locked)
deploy_spoiler()
update_appearance()
@@ -606,7 +603,7 @@
/obj/structure/tram/spoiler/update_overlays()
. = ..()
- if(deployed && malfunctioning)
+ if(deployed && locked)
. += mutable_appearance(icon, "tram-spoiler-welded")
/obj/structure/chair/sofa/bench/tram
diff --git a/code/modules/transport/transport_module.dm b/code/modules/transport/transport_module.dm
index b0497ed3b2e9c..d1384067a0d1a 100644
--- a/code/modules/transport/transport_module.dm
+++ b/code/modules/transport/transport_module.dm
@@ -171,6 +171,13 @@
if(!(movable_contents.loc in locs))
remove_item_from_transport(movable_contents)
+/obj/structure/transport/linear/proc/check_for_humans()
+ for(var/atom/movable/movable_contents as anything in transport_contents)
+ if(ishuman(movable_contents))
+ return TRUE
+
+ return FALSE
+
///signal handler for COMSIG_MOVABLE_UPDATE_GLIDE_SIZE: when a movable in transport_contents changes its glide_size independently.
///adds that movable to a lazy list, movables in that list have their glide_size updated when the tram next moves
/obj/structure/transport/linear/proc/on_changed_glide_size(atom/movable/moving_contents, new_glide_size)
diff --git a/code/modules/tutorials/tutorial_skip.dm b/code/modules/tutorials/tutorial_skip.dm
index 803aebc865054..48c4a9550dbc1 100644
--- a/code/modules/tutorials/tutorial_skip.dm
+++ b/code/modules/tutorials/tutorial_skip.dm
@@ -6,6 +6,7 @@
alpha = 0
mouse_opacity = MOUSE_OPACITY_OPAQUE
layer = TUTORIAL_INSTRUCTIONS_LAYER
+ mouse_over_pointer = MOUSE_HAND_POINTER
var/atom/movable/screen/tutorial_skip_text/skip_text
/atom/movable/screen/tutorial_skip/Initialize(mapload, datum/hud/hud_owner)
diff --git a/code/modules/tutorials/tutorials/switch_hands.dm b/code/modules/tutorials/tutorials/switch_hands.dm
index f1bcbbb3b7117..1d8fbd72f3c90 100644
--- a/code/modules/tutorials/tutorials/switch_hands.dm
+++ b/code/modules/tutorials/tutorials/switch_hands.dm
@@ -38,7 +38,7 @@
/datum/tutorial/switch_hands/proc/create_hand_preview(initial_screen_loc)
hand_preview = animate_ui_element(
- "hand_[hand_to_watch % 2 == 0 ? "r" : "l"]",
+ "hand_[user.held_index_to_dir(hand_to_watch)]",
initial_screen_loc,
ui_hand_position(hand_to_watch),
TIME_TO_START_MOVING_HAND_ICON,
@@ -50,7 +50,7 @@
switch (stage)
if (STAGE_SHOULD_SWAP_HAND)
- var/hand_name = hand_to_watch % 2 == 0 ? "right" : "left"
+ var/hand_name = IS_RIGHT_INDEX(hand_to_watch) ? "right" : "left"
show_instruction(keybinding_message(
/datum/keybinding/mob/swap_hands,
"Press '%KEY%' to use your [hand_name] hand",
diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm
index 86d29d4bef327..3ce6acdac0266 100644
--- a/code/modules/unit_tests/_unit_tests.dm
+++ b/code/modules/unit_tests/_unit_tests.dm
@@ -83,6 +83,8 @@
#endif
/// A trait source when adding traits through unit tests
#define TRAIT_SOURCE_UNIT_TESTS "unit_tests"
+/// Helper to allocate a new object with the implied type (the type of the variable it's assigned to) in the corner of the test room
+#define EASY_ALLOCATE(arguments...) allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left, ##arguments)
// BEGIN_INCLUDE
#include "abductor_baton_spell.dm"
@@ -122,6 +124,12 @@
#include "clothing_drops_items.dm"
#include "clothing_under_armor_subtype_check.dm"
#include "combat.dm"
+#include "combat_blocking.dm"
+#include "combat_cuffs.dm"
+#include "combat_eyestab.dm"
+#include "combat_flash.dm"
+#include "combat_help.dm"
+#include "combat_pistol_whip.dm"
#include "combat_stamina.dm"
#include "combat_welder.dm"
#include "component_tests.dm"
@@ -130,6 +138,7 @@
#include "container_sanity.dm"
#include "crayons.dm"
#include "create_and_destroy.dm"
+#include "damp_rag.dm"
#include "dcs_check_list_arguments.dm"
#include "dcs_get_id_from_elements.dm"
#include "designs.dm"
@@ -138,11 +147,13 @@
#include "door_access.dm"
#include "dragon_expiration.dm"
#include "drink_icons.dm"
+#include "dropper.dm"
#include "dummy_spawn.dm"
#include "dynamic_ruleset_sanity.dm"
#include "egg_glands.dm"
#include "embedding.dm"
#include "emoting.dm"
+#include "emp_flashlight.dm"
#include "ensure_subtree_operational_datum.dm"
#include "explosion_action.dm"
#include "fish_unit_tests.dm"
@@ -161,6 +172,7 @@
#include "high_five.dm"
#include "holder_loving.dm"
#include "holidays.dm"
+#include "holofan_placement.dm"
#include "hulk.dm"
#include "human_through_recycler.dm"
#include "hunger_curse.dm"
@@ -169,8 +181,12 @@
#include "hydroponics_self_mutations.dm"
#include "hydroponics_validate_genes.dm"
#include "inhands.dm"
+#include "interaction_door.dm"
+#include "interaction_silicon.dm"
+#include "interaction_structures.dm"
#include "json_savefile_importing.dm"
#include "keybinding_init.dm"
+#include "kinetic_crusher.dm"
#include "knockoff_component.dm"
#include "language_transfer.dm"
#include "leash.dm"
@@ -268,10 +284,11 @@
#include "spell_shapeshift.dm"
#include "spell_timestop.dm"
#include "spies.dm"
+#include "spraycan.dm"
#include "spritesheets.dm"
#include "stack_singular_name.dm"
#include "station_trait_tests.dm"
-#include "status_effect_ticks.dm"
+#include "status_effect_validity.dm"
#include "stomach.dm"
#include "storage.dm"
#include "strange_reagent.dm"
@@ -280,6 +297,7 @@
#include "subsystem_init.dm"
#include "suit_storage_icons.dm"
#include "surgeries.dm"
+#include "syringe_gun.dm"
#include "tail_wag.dm"
#include "teleporters.dm"
#include "tgui_create_message.dm"
diff --git a/code/modules/unit_tests/bake_a_cake.dm b/code/modules/unit_tests/bake_a_cake.dm
index d0838b69cfd8c..a4013d1c13794 100644
--- a/code/modules/unit_tests/bake_a_cake.dm
+++ b/code/modules/unit_tests/bake_a_cake.dm
@@ -10,9 +10,6 @@
var/obj/structure/table/the_table = allocate(/obj/structure/table, table_loc)
var/obj/item/knife/kitchen/a_knife = allocate(/obj/item/knife/kitchen, table_loc)
var/obj/item/reagent_containers/cup/beaker/beaker = allocate(/obj/item/reagent_containers/cup/beaker, table_loc)
- /// DOPPLER SHIFT ADDITION BEGIN
- beaker.set_cap_status(FALSE)
- /// DOPPLER SHIFT ADDITION END
var/obj/item/reagent_containers/condiment/flour/flour_bag = allocate(/obj/item/reagent_containers/condiment/flour, table_loc)
var/obj/item/reagent_containers/condiment/sugar/sugar_bag = allocate(/obj/item/reagent_containers/condiment/sugar, table_loc)
var/obj/item/storage/fancy/egg_box/egg_box = allocate(/obj/item/storage/fancy/egg_box, table_loc)
diff --git a/code/modules/unit_tests/combat_blocking.dm b/code/modules/unit_tests/combat_blocking.dm
new file mode 100644
index 0000000000000..45c1450708509
--- /dev/null
+++ b/code/modules/unit_tests/combat_blocking.dm
@@ -0,0 +1,35 @@
+/// Test that items can block unarmed attacks
+/datum/unit_test/unarmed_blocking
+
+/datum/unit_test/unarmed_blocking/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/chair/chair = EASY_ALLOCATE()
+ chair.hit_reaction_chance = 100
+ victim.put_in_active_hand(chair, forced = TRUE)
+ attacker.set_combat_mode(TRUE)
+ ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS)
+
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_EQUAL(victim.getBruteLoss(), 0, "Victim took damage from being punched despite having a 100% block chance chair in their hands.")
+
+/// Test that items can block weapon attacks
+/datum/unit_test/armed_blocking
+
+/datum/unit_test/armed_blocking/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/shield/riot/shield = EASY_ALLOCATE()
+ shield.block_chance = INFINITY
+ victim.put_in_active_hand(shield, forced = TRUE)
+ attacker.set_combat_mode(TRUE)
+ ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS)
+
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_EQUAL(victim.getBruteLoss(), 0, "Victim took damage from being punched despite having a 100% block chance shield in their hands.")
+
+ var/obj/item/storage/toolbox/weapon = EASY_ALLOCATE()
+ attacker.put_in_active_hand(weapon, forced = TRUE)
+
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_EQUAL(victim.getBruteLoss(), 0, "Victim took damage from being hit with a weapon despite having a 100% block chance shield in their hands.")
diff --git a/code/modules/unit_tests/combat_cuffs.dm b/code/modules/unit_tests/combat_cuffs.dm
new file mode 100644
index 0000000000000..18505966a4486
--- /dev/null
+++ b/code/modules/unit_tests/combat_cuffs.dm
@@ -0,0 +1,18 @@
+/// Tests that handcuffs can be applied.
+/datum/unit_test/apply_cuffs
+ priority = TEST_LONGER
+
+/datum/unit_test/apply_cuffs/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/restraints/handcuffs/cuffs = EASY_ALLOCATE()
+ cuffs.handcuff_time = 0.2 SECONDS
+ attacker.put_in_active_hand(cuffs, forced = TRUE)
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_EQUAL(victim.handcuffed, cuffs, "Handcuff attempt (non-combat-mode) failed in an otherwise valid setup.")
+
+ victim.clear_cuffs(cuffs)
+ attacker.put_in_active_hand(cuffs, forced = TRUE)
+ attacker.set_combat_mode(TRUE)
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_EQUAL(victim.handcuffed, cuffs, "Handcuff attempt (combat-mode) failed in an otherwise valid setup.")
diff --git a/code/modules/unit_tests/combat_eyestab.dm b/code/modules/unit_tests/combat_eyestab.dm
new file mode 100644
index 0000000000000..bb1126ae40dbf
--- /dev/null
+++ b/code/modules/unit_tests/combat_eyestab.dm
@@ -0,0 +1,17 @@
+/// Tests that eyestabbing with combat mode on does damage to the eyes.
+/datum/unit_test/eyestab
+
+/datum/unit_test/eyestab/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/screwdriver/stabber = EASY_ALLOCATE()
+
+ attacker.zone_selected = BODY_ZONE_PRECISE_EYES
+ attacker.put_in_active_hand(stabber, forced = TRUE)
+
+ attacker.set_combat_mode(TRUE)
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim should have taken some brute damage from an eyestab with combat mode on")
+
+ var/obj/item/organ/eyes/eyes = victim.get_organ_slot(ORGAN_SLOT_EYES)
+ TEST_ASSERT_NOTEQUAL(eyes.damage, 0, "Victim's eyes should have taken some damage from an eyestab with combat mode on")
diff --git a/code/modules/unit_tests/combat_flash.dm b/code/modules/unit_tests/combat_flash.dm
new file mode 100644
index 0000000000000..815be27f486d0
--- /dev/null
+++ b/code/modules/unit_tests/combat_flash.dm
@@ -0,0 +1,41 @@
+/// Tests that flashes, well, flash.
+/datum/unit_test/flash_click
+ var/apply_verb = "while Attacker was not on combat mode"
+
+/datum/unit_test/flash_click/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/assembly/flash/handheld/flash = EASY_ALLOCATE()
+
+ attacker.put_in_active_hand(flash, forced = TRUE)
+ ready_subjects(attacker, victim)
+ click_wrapper(attacker, victim)
+ check_results(attacker, victim)
+
+/datum/unit_test/flash_click/proc/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim)
+ victim.forceMove(locate(attacker.x + 1, attacker.y, attacker.z))
+ attacker.face_atom(victim)
+ victim.face_atom(attacker)
+
+/datum/unit_test/flash_click/proc/check_results(mob/living/carbon/human/attacker, mob/living/carbon/human/victim)
+ TEST_ASSERT_NOTEQUAL(victim.getStaminaLoss(), 0, "Victim should have sustained stamina loss from being flashed head-on [apply_verb].")
+
+/// Tests that flashes flash on combat mode.
+/datum/unit_test/flash_click/combat_mode
+ apply_verb = "while Attacker was on combat mode"
+
+/datum/unit_test/flash_click/combat_mode/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim)
+ . = ..()
+ attacker.set_combat_mode(TRUE)
+
+/// Tests that flashes do not flash if wearing protection.
+/datum/unit_test/flash_click/flash_protection
+ apply_verb = "while wearing flash protection"
+
+/datum/unit_test/flash_click/flash_protection/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim)
+ . = ..()
+ var/obj/item/clothing/glasses/sunglasses/glasses = EASY_ALLOCATE()
+ victim.equip_to_appropriate_slot(glasses)
+
+/datum/unit_test/flash_click/flash_protection/check_results(mob/living/carbon/human/attacker, mob/living/carbon/human/victim)
+ TEST_ASSERT_EQUAL(victim.getStaminaLoss(), 0, "Victim should not have sustained stamina loss from being flashed head-on [apply_verb].")
diff --git a/code/modules/unit_tests/combat_help.dm b/code/modules/unit_tests/combat_help.dm
new file mode 100644
index 0000000000000..cfa32609e249b
--- /dev/null
+++ b/code/modules/unit_tests/combat_help.dm
@@ -0,0 +1,33 @@
+/// Tests help intent clicking on people, particularly ensuring it results in a help_shake (check self or hug)
+/datum/unit_test/help_click
+ var/helper_times_helped = 0
+ var/helpee_times_helped = 0
+
+/datum/unit_test/help_click/Run()
+ var/mob/living/carbon/human/consistent/helps_the_guy = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/gets_the_help = EASY_ALLOCATE()
+
+ gets_the_help.forceMove(locate(helps_the_guy.x + 1, helps_the_guy.y, helps_the_guy.z))
+
+ RegisterSignal(helps_the_guy, COMSIG_CARBON_PRE_MISC_HELP, PROC_REF(helper_help_received))
+ RegisterSignal(gets_the_help, COMSIG_CARBON_PRE_MISC_HELP, PROC_REF(helpee_help_received))
+
+ // Click on self
+ click_wrapper(helps_the_guy, helps_the_guy)
+
+ TEST_ASSERT_EQUAL(helper_times_helped, 1, "Helper should have been helped once - clicking on themselves should check self.")
+ TEST_ASSERT_EQUAL(helpee_times_helped, 0, "Helpee should not have been helped - helper clicked on themselves.")
+
+ // Click on the other guy
+ click_wrapper(helps_the_guy, gets_the_help)
+
+ TEST_ASSERT_EQUAL(helper_times_helped, 1, "Helper should not have been helped - helper clicked on helpee.")
+ TEST_ASSERT_EQUAL(helpee_times_helped, 1, "Helpee should have been helped once - helper clicked on helpee.")
+
+/datum/unit_test/help_click/proc/helper_help_received()
+ SIGNAL_HANDLER
+ helper_times_helped += 1
+
+/datum/unit_test/help_click/proc/helpee_help_received()
+ SIGNAL_HANDLER
+ helpee_times_helped += 1
diff --git a/code/modules/unit_tests/combat_pistol_whip.dm b/code/modules/unit_tests/combat_pistol_whip.dm
new file mode 100644
index 0000000000000..4a3a45b9e3f9b
--- /dev/null
+++ b/code/modules/unit_tests/combat_pistol_whip.dm
@@ -0,0 +1,60 @@
+/// Tests that guns (bayonetted or otherwise) are able to be used as melee weapons in close range
+/datum/unit_test/pistol_whip
+
+/datum/unit_test/pistol_whip/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/gun/ballistic/automatic/pistol/gun = EASY_ALLOCATE()
+
+ attacker.put_in_active_hand(gun, forced = TRUE)
+ victim.forceMove(locate(attacker.x + 1, attacker.y, attacker.z))
+
+ var/expected_ammo = gun.magazine.max_ammo + 1
+ // These assertions are just here because I don't understand gun code
+ TEST_ASSERT(gun.chambered, "Gun spawned without a chambered round.")
+ TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo, "Gun spawned without a full magazine, \
+ when it should spawn with mag size + 1 (chambered) rounds.")
+
+ // Combat mode in melee range -> pistol whip
+ attacker.set_combat_mode(TRUE)
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being pistol-whipped.")
+ TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo, "The gun fired a shot when it was used for a pistol whip.")
+ victim.fully_heal()
+
+ // No combat mode -> point blank shot
+ attacker.set_combat_mode(FALSE)
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being fired upon point-blank.")
+ TEST_ASSERT(locate(/obj/item/ammo_casing/c9mm) in attacker.loc, "The gun did not eject a casing when it was used for a point-blank shot.")
+ TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo - 1, "The gun did not fire a shot when it was used for a point-blank shot.")
+ victim.fully_heal()
+
+ // Combat mode in melee range with bayonet -> bayonet stab
+ var/obj/item/knife/combat/knife = EASY_ALLOCATE()
+ gun.AddComponent(/datum/component/bayonet_attachable, starting_bayonet = knife)
+
+ attacker.set_combat_mode(TRUE)
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being bayonet stabbed.")
+ victim.fully_heal()
+
+/// Test that bayonetted weapons can be used to butcher
+/datum/unit_test/bayonet_butchering
+
+/datum/unit_test/bayonet_butchering/Run()
+ var/mob/living/carbon/human/species/monkey/meat = EASY_ALLOCATE()
+ meat.death()
+
+ var/mob/living/carbon/human/consistent/butcher = EASY_ALLOCATE()
+ butcher.set_combat_mode(TRUE)
+ var/obj/item/gun/energy/recharge/kinetic_accelerator/gun = EASY_ALLOCATE()
+ var/obj/item/knife/combat/knife = EASY_ALLOCATE()
+ var/datum/component/bayonet_attachable/bayonet = gun.GetComponent(/datum/component/bayonet_attachable)
+ bayonet.add_bayonet(knife)
+ var/datum/component/butchering/butcher_comp = knife.GetComponent(/datum/component/butchering)
+ butcher_comp.speed = 1 SECONDS
+
+ butcher.put_in_active_hand(gun, forced = TRUE)
+ click_wrapper(butcher, meat)
+ TEST_ASSERT(DOING_INTERACTION(butcher, meat), "The butcher did not start butchering the monkey when using a bayonetted weapon.")
diff --git a/code/modules/unit_tests/combat_welder.dm b/code/modules/unit_tests/combat_welder.dm
index 2fa9052d6fba0..b44022fe04993 100644
--- a/code/modules/unit_tests/combat_welder.dm
+++ b/code/modules/unit_tests/combat_welder.dm
@@ -1,9 +1,9 @@
/datum/unit_test/welder_combat
/datum/unit_test/welder_combat/Run()
- var/mob/living/carbon/human/tider = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left)
- var/mob/living/carbon/human/victim = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left)
- var/obj/item/weldingtool/weapon = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left)
+ var/mob/living/carbon/human/consistent/tider = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/weldingtool/weapon = EASY_ALLOCATE()
tider.put_in_active_hand(weapon, forced = TRUE)
tider.set_combat_mode(TRUE)
@@ -13,7 +13,7 @@
TEST_ASSERT_NOTEQUAL(victim.getFireLoss(), 0, "Victim did not get burned by welder.")
TEST_ASSERT_EQUAL(weapon.get_fuel(), weapon.max_fuel - 1, "Welder did not consume fuel on attacking a mob")
- var/obj/structure/blob/blobby = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left)
+ var/obj/structure/blob/blobby = EASY_ALLOCATE()
weapon.melee_attack_chain(tider, blobby)
TEST_ASSERT_NOTEQUAL(blobby.get_integrity(), blobby.max_integrity, "Blob did not get burned by welder.")
diff --git a/code/modules/unit_tests/component_tests.dm b/code/modules/unit_tests/component_tests.dm
index f609e73c4b729..1fae39825105a 100644
--- a/code/modules/unit_tests/component_tests.dm
+++ b/code/modules/unit_tests/component_tests.dm
@@ -1,12 +1,7 @@
/datum/unit_test/component_duping/Run()
var/list/bad_dms = list()
- var/list/bad_dts = list()
for(var/t in typesof(/datum/component))
var/datum/component/comp = t
if(!isnum(initial(comp.dupe_mode)))
bad_dms += t
- var/dupe_type = initial(comp.dupe_type)
- if(dupe_type && !ispath(dupe_type))
- bad_dts += t
- TEST_ASSERT(!length(bad_dms) && !length(bad_dts),
- "Components with invalid dupe modes: ([bad_dms.Join(",")]) ||| Components with invalid dupe types: ([bad_dts.Join(",")])")
+ TEST_ASSERT(!length(bad_dms), "Components with invalid dupe modes: ([bad_dms.Join(",")])")
diff --git a/code/modules/unit_tests/damp_rag.dm b/code/modules/unit_tests/damp_rag.dm
new file mode 100644
index 0000000000000..6a3948036af04
--- /dev/null
+++ b/code/modules/unit_tests/damp_rag.dm
@@ -0,0 +1,17 @@
+/// Tests that damp rags can smother people.
+/// When smothing reagents are ingested (go to the stomach).
+/datum/unit_test/damp_rag_smother
+
+/datum/unit_test/damp_rag_smother/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/organ/stomach/victim_stomach = victim.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/reagent_containers/cup/rag/rag = EASY_ALLOCATE()
+
+ attacker.put_in_active_hand(rag, forced = TRUE)
+ attacker.zone_selected = BODY_ZONE_PRECISE_MOUTH
+ attacker.set_combat_mode(TRUE)
+ rag.reagents.add_reagent(/datum/reagent/water, rag.reagents.maximum_volume)
+ click_wrapper(attacker, victim)
+ TEST_ASSERT_EQUAL(victim_stomach.reagents.get_reagent_amount(/datum/reagent/water), rag.reagents.maximum_volume, \
+ "The victim should have been smothered by the rag, gaining water reagent.")
diff --git a/code/modules/unit_tests/dropper.dm b/code/modules/unit_tests/dropper.dm
new file mode 100644
index 0000000000000..7ada84513a8db
--- /dev/null
+++ b/code/modules/unit_tests/dropper.dm
@@ -0,0 +1,21 @@
+/// Tests the droppper picks up and dispenses reagents correctly.
+/datum/unit_test/dropper_use
+
+/datum/unit_test/dropper_use/Run()
+ var/mob/living/carbon/human/consistent/chemist = EASY_ALLOCATE()
+ var/obj/item/reagent_containers/dropper/dropper = EASY_ALLOCATE()
+ var/obj/item/reagent_containers/cup/beaker/large/beaker = EASY_ALLOCATE()
+
+ var/starting_volume = 50
+ beaker.reagents.add_reagent(/datum/reagent/water, starting_volume)
+
+ chemist.put_in_active_hand(dropper, forced = TRUE)
+ click_wrapper(chemist, beaker)
+
+ TEST_ASSERT_EQUAL(dropper.reagents.total_volume, 5, "Dropper should have taken 5 units of reagents from the beaker.")
+ TEST_ASSERT_EQUAL(beaker.reagents.total_volume, starting_volume - 5, "Beaker should have transferred reagents to the dropper.")
+
+ click_wrapper(chemist, beaker)
+
+ TEST_ASSERT_EQUAL(dropper.reagents.total_volume, 0, "Dropper should have emptied itself into the beaker.")
+ TEST_ASSERT_EQUAL(beaker.reagents.total_volume, starting_volume, "Beaker should have received reagents from the dropper.")
diff --git a/code/modules/unit_tests/embedding.dm b/code/modules/unit_tests/embedding.dm
index 05e8cc8b8aa27..5e6a8a90647ef 100644
--- a/code/modules/unit_tests/embedding.dm
+++ b/code/modules/unit_tests/embedding.dm
@@ -6,7 +6,7 @@
var/obj/projectile/bullet/c38/bullet = new(get_turf(firer))
bullet.set_embed(bullet.get_embed().generate_with_values(embed_chance = 100))
TEST_ASSERT_EQUAL(bullet.get_embed().embed_chance, 100, "embed_chance failed to modify")
- bullet.preparePixelProjectile(victim, firer)
+ bullet.aim_projectile(victim, firer)
bullet.fire(get_angle(firer, victim), victim)
var/list/components = victim.GetComponents(/datum/component/embedded)
TEST_ASSERT_EQUAL(components.len, 1, "Projectile with 100% embed chance didn't embed, or embedded multiple times")
diff --git a/code/modules/unit_tests/emp_flashlight.dm b/code/modules/unit_tests/emp_flashlight.dm
new file mode 100644
index 0000000000000..e6e78009fb36a
--- /dev/null
+++ b/code/modules/unit_tests/emp_flashlight.dm
@@ -0,0 +1,18 @@
+/// Test EMP flashlight EMPs people you point it at
+/datum/unit_test/emp_flashlight
+ var/sig_caught = 0
+
+/datum/unit_test/emp_flashlight/Run()
+ var/mob/living/carbon/human/consistent/flashlighter = EASY_ALLOCATE()
+ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
+ var/obj/item/flashlight/emp/debug/flashlight = EASY_ALLOCATE()
+
+ flashlighter.put_in_active_hand(flashlight, forced = TRUE)
+ RegisterSignal(victim, COMSIG_ATOM_EMP_ACT, PROC_REF(sig_caught))
+
+ click_wrapper(flashlighter, victim)
+ TEST_ASSERT_NOTEQUAL(sig_caught, 0, "EMP flashlight did not EMP the target on click.")
+
+/datum/unit_test/emp_flashlight/proc/sig_caught()
+ SIGNAL_HANDLER
+ sig_caught++
diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm
index 94337ae2cc2fc..7ed7851b86af2 100644
--- a/code/modules/unit_tests/fish_unit_tests.dm
+++ b/code/modules/unit_tests/fish_unit_tests.dm
@@ -23,8 +23,7 @@
/datum/unit_test/fish_size_weight/Run()
var/obj/structure/table/table = allocate(/obj/structure/table)
- var/obj/item/fish/testdummy/fish = new /obj/item/fish/testdummy (table.loc)
- allocated += fish
+ var/obj/item/fish/testdummy/fish = allocate(__IMPLIED_TYPE__, table.loc)
var/datum/reagent/reagent = fish.reagents?.has_reagent(/datum/reagent/fishdummy)
TEST_ASSERT(reagent, "the test fish doesn't have the test reagent.[fish.reagents ? "" : " It doesn't even have a reagent holder."]")
var/expected_units = FISH_REAGENT_AMOUNT * fish.weight / FISH_WEIGHT_BITE_DIVISOR
@@ -42,14 +41,32 @@
allocated += content
TEST_ASSERT_EQUAL(counted_fillets, expected_num_fillets, "the test fish yielded [counted_fillets] fillets when it should have been [expected_num_fillets]")
+/// Make sure fish don't stay hungry after being fed
+/datum/unit_test/fish_feeding
+
+/datum/unit_test/fish_feeding/Run()
+ var/obj/item/fish/testdummy/hungry = allocate(__IMPLIED_TYPE__)
+ hungry.last_feeding = 0 //the fish should be hungry.
+ TEST_ASSERT(hungry.get_hunger(), "the fish doesn't seem to be hungry in the slightest")
+ var/obj/item/reagent_containers/cup/fish_feed/yummy = allocate(__IMPLIED_TYPE__)
+ hungry.feed(yummy.reagents)
+ TEST_ASSERT(!hungry.get_hunger(), "the fish is still hungry despite having been just fed")
+
+ ///Try feeding it again, but this time with the right hunger so they actually grow
+ hungry.last_feeding = world.time - (hungry.feeding_frequency * FISH_GROWTH_PEAK)
+ var/old_size = hungry.size
+ var/old_weight = hungry.weight
+ hungry.feed(yummy.reagents)
+ TEST_ASSERT(hungry.size > old_size, "the fish size didn't increase after being properly fed")
+ TEST_ASSERT(hungry.weight > old_weight, "the fish weight didn't increase after being properly fed")
+
///Checks that fish breeding works correctly.
/datum/unit_test/fish_breeding
/datum/unit_test/fish_breeding/Run()
- var/obj/item/fish/fish = allocate(/obj/item/fish/testdummy)
+ var/obj/item/fish_tank/reproduction/fish_tank = allocate(__IMPLIED_TYPE__)
///Check if the fishes can generate offsprings at all.
- var/obj/item/fish/fish_two = allocate(/obj/item/fish/testdummy/two)
- var/obj/item/fish/new_fish = fish.create_offspring(fish_two.type, fish_two)
+ var/obj/item/fish/new_fish = fish_tank.fish.try_to_reproduce()
TEST_ASSERT(new_fish, "the two test fishes couldn't generate an offspring")
var/traits_len = length(new_fish.fish_traits)
TEST_ASSERT_NOTEQUAL(traits_len, 2, "the offspring of the test fishes has both parents' traits, which are incompatible with each other")
@@ -66,6 +83,20 @@
TEST_ASSERT(cloner_jr, "The test aquarium's cloner fish didn't manage to reproduce when it should have")
TEST_ASSERT_NOTEQUAL(cloner_jr.type, aquarium.sterile.type, "The test aquarium's cloner fish mated with the sterile fish")
+/obj/item/fish_tank/reproduction
+ var/obj/item/fish/testdummy/small/fish
+ var/obj/item/fish/testdummy/small/partner
+
+/obj/item/fish_tank/reproduction/Initialize(mapload)
+ . = ..()
+ fish = new(src)
+ partner = new(src)
+
+/obj/item/fish_tank/reproduction/Destroy()
+ fish = null
+ partner = null
+ return ..()
+
///Checks that fish evolutions work correctly.
/datum/unit_test/fish_evolution
@@ -101,8 +132,13 @@
stable_population = INFINITY
breeding_timeout = 0
fish_flags = parent_type::fish_flags & ~(FISH_FLAG_SHOW_IN_CATALOG|FISH_FLAG_EXPERIMENT_SCANNABLE)
+ fish_id_redirect_path = /obj/item/fish/goldfish //Stops SSfishing from complaining
var/expected_num_fillets = 0 //used to know how many fillets should be gotten out of this fish
+/obj/item/fish/testdummy/small
+ // The parent type is too big to reproduce inside the more compact fish tank
+ average_size = /obj/item/fish_tank::max_total_size * 0.2
+
/obj/item/fish/testdummy/add_fillet_type()
expected_num_fillets = ..()
return expected_num_fillets
@@ -128,7 +164,6 @@
description = "It smells fishy."
/obj/structure/aquarium/traits
- reproduction_and_growth = TRUE
var/obj/item/fish/testdummy/crossbreeder/crossbreeder
var/obj/item/fish/testdummy/cloner/cloner
var/obj/item/fish/testdummy/sterile/sterile
@@ -155,7 +190,6 @@
fish_traits = list(/datum/fish_trait/no_mating)
/obj/structure/aquarium/evolution
- reproduction_and_growth = TRUE
var/obj/item/fish/testdummy/evolve/evolve
var/obj/item/fish/testdummy/evolve_two/evolve_two
@@ -195,7 +229,7 @@
///During the fish_growth unit test, we spawn a fish outside of the aquarium and check that this actually stops it from growing
/datum/fish_evolution/dummy/two/growth_checks(obj/item/fish/source, seconds_per_tick, growth)
. = ..()
- if(!isaquarium(source.loc))
+ if(!source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM))
return COMPONENT_DONT_GROW
///A test that checks that fishing portals can be linked and function as expected
@@ -244,7 +278,7 @@
/obj/structure/toilet/unit_test/Initialize(mapload)
. = ..()
if(!HAS_TRAIT(src, TRAIT_FISHING_SPOT)) //Ensure this toilet has a fishing spot because only maploaded ones have it.
- AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/toilet)
+ AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/toilet])
// we want no default spawns in this unit test
/datum/chasm_detritus/restricted/bodies/no_defaults
@@ -353,7 +387,6 @@
TEST_ASSERT(dummy_boogaloo, "The new fish type cannot be found inside the aquarium")
/obj/structure/aquarium/crab
- reproduction_and_growth = TRUE //needed for growing up
///Our test subject
var/obj/item/fish/chasm_crab/instant_growth/crabbie
@@ -371,6 +404,7 @@
/obj/item/fish/chasm_crab/instant_growth
fish_traits = list() //We don't want to end up applying traits twice on the resulting lobstrosity
+ fish_id_redirect_path = /obj/item/fish/chasm_crab
/datum/unit_test/fish_sources
@@ -382,7 +416,8 @@
///From here, we check that the profound_fisher as well as fish source procs for rolling rewards don't fail.
source = GLOB.preset_fish_sources[/datum/fish_source/unit_test_profound_fisher]
- run_loc_floor_bottom_left.AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/unit_test_profound_fisher)
+
+ run_loc_floor_bottom_left.AddComponent(/datum/component/fishing_spot, source)
var/mob/living/basic/fisher = allocate(/mob/living/basic)
fisher.AddComponent(/datum/component/profound_fisher)
fisher.set_combat_mode(FALSE)
@@ -391,7 +426,7 @@
TEST_FAIL("The unit test profound fisher didn't catch the test fish on a lazy fishing spot (element)")
///For good measure, let's try it again, but with the component this time, and a human mob and gloves
- run_loc_floor_bottom_left.RemoveElement(/datum/element/lazy_fishing_spot, /datum/fish_source/unit_test_profound_fisher)
+ qdel(run_loc_floor_bottom_left.GetComponent(/datum/component/fishing_spot))
var/datum/component/comp = run_loc_floor_bottom_left.AddComponent(/datum/component/fishing_spot, source)
var/mob/living/carbon/human/consistent/angler = allocate(/mob/living/carbon/human/consistent)
var/obj/item/clothing/gloves/noodling = allocate(/obj/item/clothing/gloves)
@@ -421,10 +456,10 @@
/datum/fish_source/unit_test_profound_fisher
fish_table = list(/obj/item/fish/testdummy = 1)
fish_counts = list(/obj/item/fish/testdummy = 2)
- fish_source_flags = parent_type::fish_source_flags | FISH_SOURCE_FLAG_SKIP_CATCHABLES
+ fish_source_flags = parent_type::fish_source_flags
/datum/fish_source/unit_test_all_fish
- fish_source_flags = parent_type::fish_source_flags | FISH_SOURCE_FLAG_SKIP_CATCHABLES
+ fish_source_flags = parent_type::fish_source_flags
/datum/fish_source/unit_test_all_fish/New()
for(var/fish_type as anything in subtypesof(/obj/item/fish))
@@ -489,5 +524,36 @@
for(var/obj/item/fish/fish as anything in box)
fish.randomize_size_and_weight()
+/datum/unit_test/aquarium_upgrade
+
+/datum/unit_test/aquarium_upgrade/Run()
+ var/mob/living/carbon/human/dummy/user = allocate(__IMPLIED_TYPE__)
+ var/obj/item/aquarium_upgrade/bioelec_gen/upgrade = allocate(__IMPLIED_TYPE__)
+ var/obj/structure/aquarium/aquarium = allocate(upgrade::upgrade_from_type)
+
+ var/datum/component/aquarium/comp = aquarium.GetComponent(__IMPLIED_TYPE__)
+ TEST_ASSERT(comp, "[aquarium.type] doesn't have an aquarium component")
+ comp.set_fluid_type(AQUARIUM_FLUID_AIR)
+ comp.fluid_temp = MAX_AQUARIUM_TEMP
+ aquarium.add_traits(list(TRAIT_AQUARIUM_PANEL_OPEN, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH), AQUARIUM_TRAIT)
+
+ var/type_to_check = upgrade::upgrade_to_type
+ var/turf/aquarium_loc = aquarium.loc
+ user.put_in_hands(upgrade)
+ upgrade.melee_attack_chain(user, aquarium)
+ TEST_ASSERT(QDELETED(aquarium), "Old [aquarium.type] was not deleted after upgrade")
+
+ var/obj/structure/aquarium/upgraded_aquarium = locate(type_to_check) in aquarium_loc
+ TEST_ASSERT(upgraded_aquarium, "New [upgraded_aquarium.type] was not spawned after upgrade")
+ comp = upgraded_aquarium.GetComponent(/datum/component/aquarium)
+ TEST_ASSERT(comp, "New [upgraded_aquarium.type] doesn't have an aquarium component")
+
+ TEST_ASSERT_EQUAL(comp.fluid_type, AQUARIUM_FLUID_AIR, "Inherited aquarium fluid type should be [AQUARIUM_FLUID_AIR]")
+ TEST_ASSERT_EQUAL(comp.fluid_temp, MAX_AQUARIUM_TEMP, "Inherited aquarium fluid temperature should be [MAX_AQUARIUM_TEMP]")
+ TEST_ASSERT(HAS_TRAIT(upgraded_aquarium, TRAIT_AQUARIUM_PANEL_OPEN), "The new aquarium should have its panel open")
+ TEST_ASSERT(HAS_TRAIT(upgraded_aquarium, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH), "The 'growth and reproduction' setting for this aquarium should be disabled")
+
+ TEST_ASSERT(QDELETED(upgrade), "Aquarium upgrade wasn't deleted afterward")
+
#undef FISH_REAGENT_AMOUNT
#undef TRAIT_FISH_TESTING
diff --git a/code/modules/unit_tests/greyscale_config.dm b/code/modules/unit_tests/greyscale_config.dm
index d3d9ce9d4fdd4..9c0484eff7d11 100644
--- a/code/modules/unit_tests/greyscale_config.dm
+++ b/code/modules/unit_tests/greyscale_config.dm
@@ -21,9 +21,9 @@
TEST_FAIL("[worn.DebugName()] is missing a sprite for the worn overlay for [item_path]. Expected icon state: '[worn_icon_state]'")
var/datum/greyscale_config/belt = SSgreyscale.configurations["[initial(item_path.greyscale_config_belt)]"]
- var/belt_icon_state = initial(item_path.belt_icon_state) || initial(item_path.icon_state)
- if(belt && !belt.icon_states[belt_icon_state])
- TEST_FAIL("[belt.DebugName()] is missing a sprite for the belt overlay for [item_path]. Expected icon state: '[belt_icon_state]'")
+ var/inside_belt_icon_state = initial(item_path.inside_belt_icon_state) || initial(item_path.icon_state)
+ if(belt && !belt.icon_states[inside_belt_icon_state])
+ TEST_FAIL("[belt.DebugName()] is missing a sprite for the belt overlay for [item_path]. Expected icon state: '[inside_belt_icon_state]'")
/// Makes sure objects using greyscale configs have, if any, the correct number of colors
/datum/unit_test/greyscale_color_count
diff --git a/code/modules/unit_tests/holofan_placement.dm b/code/modules/unit_tests/holofan_placement.dm
new file mode 100644
index 0000000000000..532d0c30e939f
--- /dev/null
+++ b/code/modules/unit_tests/holofan_placement.dm
@@ -0,0 +1,14 @@
+/// Tests the ability to place holosigns from a holosign creator.
+/datum/unit_test/place_holosign
+
+/datum/unit_test/place_holosign/Run()
+ var/mob/living/carbon/human/consistent/jannie = EASY_ALLOCATE()
+ var/obj/item/holosign_creator/janibarrier/jannie_holosign_creator = EASY_ALLOCATE()
+
+ jannie.put_in_active_hand(jannie_holosign_creator, forced = TRUE)
+ var/turf/open/next_to_the_jannie = locate(jannie.x + 1, jannie.y, jannie.z)
+
+ click_wrapper(jannie, next_to_the_jannie)
+
+ var/obj/structure/holosign/barrier/wetsign/placed_sign = locate() in next_to_the_jannie
+ TEST_ASSERT_NOTNULL(placed_sign, "Holosign creator failed to place a holosign in an adjacent tile.")
diff --git a/code/modules/unit_tests/interaction_door.dm b/code/modules/unit_tests/interaction_door.dm
new file mode 100644
index 0000000000000..418f02213fec2
--- /dev/null
+++ b/code/modules/unit_tests/interaction_door.dm
@@ -0,0 +1,13 @@
+/// Tests that airlocks can be closed by clicking on the floor, as [/datum/component/redirect_attack_hand_from_turf ] dictates
+/datum/unit_test/door_click
+
+/datum/unit_test/door_click/Run()
+ var/mob/living/carbon/human/consistent/tider = EASY_ALLOCATE()
+ var/obj/machinery/door/airlock/public/glass/door = EASY_ALLOCATE()
+
+ tider.forceMove(locate(door.x + 1, door.y, door.z))
+ door.open() // this sleeps we just have to cope
+ TEST_ASSERT(!door.operating, "Airlock was operating after being opened.")
+ TEST_ASSERT(!door.density, "Airlock was not open after being opened.")
+ click_wrapper(tider, get_turf(door))
+ TEST_ASSERT(door.operating, "Airlock was not closing after clicking the turf below, as per /datum/component/redirect_attack_hand_from_turf.")
diff --git a/code/modules/unit_tests/interaction_silicon.dm b/code/modules/unit_tests/interaction_silicon.dm
new file mode 100644
index 0000000000000..4b4efe85ee466
--- /dev/null
+++ b/code/modules/unit_tests/interaction_silicon.dm
@@ -0,0 +1,38 @@
+/// Tests the ability to unlock and crowbar open a silicon
+/datum/unit_test/silicon_interacting
+
+/datum/unit_test/silicon_interacting/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/silicon/robot/borgo = EASY_ALLOCATE()
+ var/obj/item/card/id/advanced/gold/captains_spare/id = EASY_ALLOCATE()
+ var/obj/item/crowbar/crowbar = EASY_ALLOCATE()
+ // unlock
+ attacker.put_in_active_hand(id, forced = TRUE)
+ click_wrapper(attacker, borgo)
+ TEST_ASSERT(!borgo.locked, "Robot was not unlocked when swiped with ID")
+ // open
+ id.forceMove(attacker.drop_location())
+ attacker.put_in_active_hand(crowbar, forced = TRUE)
+ click_wrapper(attacker, borgo)
+ TEST_ASSERT(borgo.opened, "Robot was not opened when crowbarred")
+ // close
+ attacker.put_in_active_hand(crowbar, forced = TRUE)
+ click_wrapper(attacker, borgo)
+ TEST_ASSERT(!borgo.opened, "Robot was not closed when crowbarred")
+ // lock
+ crowbar.forceMove(attacker.drop_location())
+ attacker.put_in_active_hand(id, forced = TRUE)
+ click_wrapper(attacker, borgo)
+ TEST_ASSERT(borgo.locked, "Robot was not re-locked when swiped with ID")
+
+/// Tests unarmed clicking a cyborg doesn't cause damage
+/datum/unit_test/silicon_punch
+
+/datum/unit_test/silicon_punch/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/mob/living/silicon/robot/borgo = EASY_ALLOCATE()
+ borgo.forceMove(locate(attacker.x + 1, attacker.y, attacker.z))
+ attacker.set_combat_mode(TRUE)
+ click_wrapper(attacker, borgo)
+ TEST_ASSERT_EQUAL(borgo.getBruteLoss(), 0, "Cyborg took damage from an unarmed punched - \
+ their unarmed damage threshold should be too high for this to happen.")
diff --git a/code/modules/unit_tests/interaction_structures.dm b/code/modules/unit_tests/interaction_structures.dm
new file mode 100644
index 0000000000000..d5be4b6d863fe
--- /dev/null
+++ b/code/modules/unit_tests/interaction_structures.dm
@@ -0,0 +1,40 @@
+/// Tests that mobs are able to bash down tables by clicking on them.
+/datum/unit_test/structure_table_bash
+
+/datum/unit_test/structure_table_bash/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/obj/item/storage/toolbox/toolbox = EASY_ALLOCATE()
+ var/obj/structure/table/to_smack = EASY_ALLOCATE()
+ attacker.put_in_active_hand(toolbox, forced = TRUE)
+ click_wrapper(attacker, to_smack)
+ TEST_ASSERT_EQUAL(toolbox.loc, to_smack.loc, "The toolbox should have been placed on the table. Instead, its loc is [toolbox.loc].")
+ TEST_ASSERT_EQUAL(to_smack.get_integrity(), to_smack.max_integrity, "Table took damage despite not being smacked.")
+
+ attacker.put_in_active_hand(toolbox, forced = TRUE)
+ attacker.set_combat_mode(TRUE)
+ click_wrapper(attacker, to_smack)
+ TEST_ASSERT_NOTEQUAL(toolbox.loc, to_smack.loc, "The toolbox should not have been placed on the table.")
+ TEST_ASSERT_NOTEQUAL(to_smack.get_integrity(), to_smack.max_integrity, "Table failed to take damage from being smacked.")
+
+/// Tests that mobs are able to bash down barricades / structures by clicking on them.
+/datum/unit_test/structure_generic_bash
+
+/datum/unit_test/structure_generic_bash/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/obj/item/storage/toolbox/toolbox = EASY_ALLOCATE()
+ var/obj/structure/barricade/to_smack = EASY_ALLOCATE()
+ attacker.put_in_active_hand(toolbox, forced = TRUE)
+ click_wrapper(attacker, to_smack)
+ TEST_ASSERT_NOTEQUAL(to_smack.get_integrity(), to_smack.max_integrity, "The barricade should have taken damage a from a non-combat-mode click.")
+
+/// Tests that common tool interactions are possible still, by attempting to open the panel of an air alarm.
+/datum/unit_test/machinery_tool_interaction
+
+/datum/unit_test/machinery_tool_interaction/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/obj/item/screwdriver/screwdriver = EASY_ALLOCATE()
+ var/obj/machinery/airalarm/to_smack = EASY_ALLOCATE()
+ attacker.put_in_active_hand(screwdriver, forced = TRUE)
+ click_wrapper(attacker, to_smack)
+ TEST_ASSERT_EQUAL(to_smack.get_integrity(), to_smack.max_integrity, "The air alarm took damage when interacted with a screwdriver.")
+ TEST_ASSERT(to_smack.panel_open, "The air alarm should have opened its panel after being interacted with a screwdriver.")
diff --git a/code/modules/unit_tests/kinetic_crusher.dm b/code/modules/unit_tests/kinetic_crusher.dm
new file mode 100644
index 0000000000000..cb15d70e62c6d
--- /dev/null
+++ b/code/modules/unit_tests/kinetic_crusher.dm
@@ -0,0 +1,13 @@
+/// Tests that the Kinetic Crusher fires a projectile on RMB
+/datum/unit_test/crusher_projectile
+
+/datum/unit_test/crusher_projectile/Run()
+ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE()
+ var/obj/item/kinetic_crusher/crusher = EASY_ALLOCATE()
+
+ attacker.put_in_active_hand(crusher, forced = TRUE)
+ crusher.attack_self(attacker) // wields the crusher
+
+ click_wrapper(attacker, run_loc_floor_top_right, list(RIGHT_CLICK = TRUE, BUTTON = RIGHT_CLICK))
+
+ TEST_ASSERT(!crusher.charged, "Attacker failed to fire the kinetic crusher on right clicking a distant target")
diff --git a/code/modules/unit_tests/metabolizing.dm b/code/modules/unit_tests/metabolizing.dm
index 53bd3277dc485..5397bc13e4fc2 100644
--- a/code/modules/unit_tests/metabolizing.dm
+++ b/code/modules/unit_tests/metabolizing.dm
@@ -28,7 +28,7 @@
// Give them enough meth to be consumed in 2 metabolizations
pill.reagents.add_reagent(meth, 1.9 * initial(meth.metabolization_rate) * SSMOBS_DT)
- pill.attack(user, user)
+ pill.interact_with_atom(user, user)
user.Life(SSMOBS_DT)
@@ -77,7 +77,7 @@
// Let's start with stomach metabolism
pill.reagents.add_reagent(meth.type, 5)
- pill.attack(pill_user, pill_user)
+ pill.interact_with_atom(pill_user, pill_user)
// Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go.
var/obj/item/organ/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH)
@@ -105,7 +105,7 @@
// One half pill
pill_two.reagents.add_reagent(meth.type, (5 * 0.5) + 1)
- pill_two.attack(pill_syringe_user, pill_syringe_user)
+ pill_two.interact_with_atom(pill_syringe_user, pill_syringe_user)
syringe.melee_attack_chain(pill_syringe_user, pill_syringe_user)
// Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go.
diff --git a/code/modules/unit_tests/mob_faction.dm b/code/modules/unit_tests/mob_faction.dm
index f5d64918038fd..be667de731db4 100644
--- a/code/modules/unit_tests/mob_faction.dm
+++ b/code/modules/unit_tests/mob_faction.dm
@@ -10,8 +10,8 @@
)
ignored += typesof(/mob/eye/imaginary_friend)
ignored += typesof(/mob/living/silicon/robot/model)
- ignored += typesof(/mob/eye/ai_eye/remote/base_construction)
- ignored += typesof(/mob/eye/ai_eye/remote/shuttle_docker)
+ ignored += typesof(/mob/eye/camera/remote/base_construction)
+ ignored += typesof(/mob/eye/camera/remote/shuttle_docker)
for (var/mob_type in typesof(/mob) - ignored)
var/mob/mob_instance = allocate(mob_type)
if(!islist(mob_instance.faction))
diff --git a/code/modules/unit_tests/orderable_items.dm b/code/modules/unit_tests/orderable_items.dm
index 8d3db8c3c751f..e94b2985a5475 100644
--- a/code/modules/unit_tests/orderable_items.dm
+++ b/code/modules/unit_tests/orderable_items.dm
@@ -6,19 +6,19 @@
/datum/unit_test/orderable_items/Run()
var/list/all_paths = list()
for (var/datum/orderable_item/orderable_item as anything in subtypesof(/datum/orderable_item))
- if(isnull(initial(orderable_item.item_path))) // don't check if they're not actual orderable items
+ if(isnull(initial(orderable_item.purchase_path))) // don't check if they're not actual orderable items
continue
if (!isnull(initial(orderable_item.desc))) //don't check if they have a custom description
continue
- var/item_path = initial(orderable_item.item_path)
+ var/purchase_path = initial(orderable_item.purchase_path)
- var/obj/item/item_instance = allocate(item_path)
+ var/obj/item/item_instance = allocate(purchase_path)
var/initial_desc = initial(item_instance.desc)
- if(item_path in all_paths)
+ if(purchase_path in all_paths)
TEST_FAIL("[orderable_item] is purchasable under two different orderable_item types,")
- all_paths += item_path
+ all_paths += purchase_path
if (item_instance.desc != initial_desc)
- TEST_FAIL("[orderable_item] has an item ([item_path]) that has a dynamic description. [item_instance.desc] (dynamic description) != [initial_desc] (initial description)")
+ TEST_FAIL("[orderable_item] has a product ([purchase_path]) that has a dynamic description. [item_instance.desc] (dynamic description) != [initial_desc] (initial description)")
diff --git a/code/modules/unit_tests/organs.dm b/code/modules/unit_tests/organs.dm
index 8f05a28405898..6162bd43e5b09 100644
--- a/code/modules/unit_tests/organs.dm
+++ b/code/modules/unit_tests/organs.dm
@@ -10,22 +10,9 @@
var/static/list/species_changing_organs = typecacheof(list(
/obj/item/organ/brain/shadow/nightmare,
))
- // List of organ typepaths which are not test-able, such as certain class prototypes.
- var/static/list/test_organ_blacklist = typecacheof(list(
- /obj/item/organ,
- /obj/item/organ,
- /obj/item/organ/wings,
- /obj/item/organ/cyberimp,
- /obj/item/organ/cyberimp/brain,
- /obj/item/organ/cyberimp/mouth,
- /obj/item/organ/cyberimp/arm,
- /obj/item/organ/cyberimp/chest,
- /obj/item/organ/cyberimp/eyes,
- /obj/item/organ/alien,
- ))
/datum/unit_test/organ_sanity/Run()
- for(var/obj/item/organ/organ_type as anything in subtypesof(/obj/item/organ) - test_organ_blacklist)
+ for(var/obj/item/organ/organ_type as anything in subtypesof(/obj/item/organ) - GLOB.prototype_organs)
organ_test_insert(organ_type)
/datum/unit_test/organ_sanity/proc/organ_test_insert(obj/item/organ/organ_type)
@@ -111,3 +98,23 @@
TEST_ASSERT_EQUAL(dummy.get_organ_loss(slot_to_use), test_organ.maxHealth, \
"Mob level \"apply organ damage\" can exceed the [slot_to_use] organ's damage cap with a large maximum supplied.")
dummy.fully_heal(HEAL_ORGANS)
+
+///Allocate a human mob, give 'em a skillchip and a generic trauma, then see if it throws any error when the brain is removed.
+/datum/unit_test/chipped_traumatized_brain_removal
+
+/datum/unit_test/chipped_traumatized_brain_removal/Run()
+ var/mob/living/carbon/human/dummy/dummy = allocate(__IMPLIED_TYPE__)
+
+ //add the chip and activate it
+ var/obj/item/skillchip/basketweaving/chip = new(dummy.loc)
+ dummy.implant_skillchip(chip, force = TRUE)
+ TEST_ASSERT(chip.holding_brain, "Skillchip couldn't be implanted successfully, 'holding_brain' is null")
+ chip.try_activate_skillchip(force = TRUE)
+ TEST_ASSERT(chip.active, "Skillchip couldn't be activated")
+
+ //add a trauma
+ dummy.gain_trauma_type(BRAIN_TRAUMA_MILD)
+
+ var/obj/item/organ/brain = locate() in dummy.organs
+ brain.forceMove(dummy.loc)
+ allocated += brain
diff --git a/code/modules/unit_tests/pills.dm b/code/modules/unit_tests/pills.dm
index 234abbfe1c1df..8567bf390eae7 100644
--- a/code/modules/unit_tests/pills.dm
+++ b/code/modules/unit_tests/pills.dm
@@ -4,7 +4,7 @@
TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/iron), FALSE, "Human somehow has iron before taking pill")
- pill.attack(human, human)
+ pill.interact_with_atom(human, human)
human.Life(SSMOBS_DT)
TEST_ASSERT(human.has_reagent(/datum/reagent/iron), "Human doesn't have iron after taking pill")
diff --git a/code/modules/unit_tests/reagent_mob_expose.dm b/code/modules/unit_tests/reagent_mob_expose.dm
index d6ed81292a97d..bf31291e3654e 100644
--- a/code/modules/unit_tests/reagent_mob_expose.dm
+++ b/code/modules/unit_tests/reagent_mob_expose.dm
@@ -50,7 +50,7 @@
TEST_ASSERT_EQUAL(human.health, 100, "Human health did not set properly")
patch.reagents.add_reagent(/datum/reagent/method_patch_test, 1)
patch.self_delay = 0
- patch.attack(human, human)
+ patch.interact_with_atom(human, human)
TEST_ASSERT_EQUAL(human.health, 90, "Human health did not update after patch was applied")
// INJECT
diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png
similarity index 100%
rename from code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png
rename to code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png
diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png
index e39d53764434d..5df14e3223eee 100644
Binary files a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png and b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png differ
diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm
index 2f4f7a4b70ae7..55161807eb46e 100644
--- a/code/modules/unit_tests/simple_animal_freeze.dm
+++ b/code/modules/unit_tests/simple_animal_freeze.dm
@@ -6,7 +6,6 @@
// If you are refactoring a simple_animal, REMOVE it from this list
var/list/allowed_types = list(
/mob/living/simple_animal/bot,
- /mob/living/simple_animal/bot/floorbot,
/mob/living/simple_animal/bot/mulebot,
/mob/living/simple_animal/bot/mulebot/paranormal,
/mob/living/simple_animal/bot/secbot,
diff --git a/code/modules/unit_tests/spraycan.dm b/code/modules/unit_tests/spraycan.dm
new file mode 100644
index 0000000000000..2ee4ab14454b1
--- /dev/null
+++ b/code/modules/unit_tests/spraycan.dm
@@ -0,0 +1,22 @@
+/// Tests spray painting the ground to create graffiti.
+/datum/unit_test/spraypainting
+
+/datum/unit_test/spraypainting/Run()
+ var/mob/living/carbon/human/consistent/artist = EASY_ALLOCATE()
+ var/obj/item/toy/crayon/spraycan/can = EASY_ALLOCATE()
+ var/turf/spray_turf = get_turf(artist)
+ artist.put_in_active_hand(can, forced = TRUE)
+
+ // Try to spray with a capped spraycan.
+ click_wrapper(artist, spray_turf)
+ TEST_ASSERT_EQUAL(can.charges, can.charges_left, "Spraypaint sprayed paint while capped.")
+ // Uncap it
+ click_wrapper(artist, can, list(ALT_CLICK = TRUE, BUTTON = ALT_CLICK))
+ TEST_ASSERT(!can.is_capped, "Spraypaint did not uncap when alt-clicked.")
+ // Try to spray with an uncapped spraycan.
+ click_wrapper(artist, spray_turf)
+ TEST_ASSERT_NOTEQUAL(can.charges, can.charges_left, "Spraypaint did not spray any paint when clicking on a turf with it.")
+
+ // Cleanup
+ for(var/obj/effect/decal/cleanable/crayon/made_art in spray_turf)
+ qdel(made_art)
diff --git a/code/modules/unit_tests/status_effect_ticks.dm b/code/modules/unit_tests/status_effect_ticks.dm
deleted file mode 100644
index d60ba187abc42..0000000000000
--- a/code/modules/unit_tests/status_effect_ticks.dm
+++ /dev/null
@@ -1,23 +0,0 @@
-/// Validates status effect tick interval setup
-/datum/unit_test/status_effect_ticks
-
-/datum/unit_test/status_effect_ticks/Run()
- for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect))
- var/tick_speed = initial(checking.tick_interval)
- if(tick_speed == STATUS_EFFECT_NO_TICK)
- continue
- if(tick_speed == INFINITY)
- TEST_FAIL("Status effect [checking] has tick_interval set to INFINITY, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.")
- continue
- if(tick_speed == 0)
- TEST_FAIL("Status effect [checking] has tick_interval set to 0, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.")
- continue
- switch(initial(checking.processing_speed))
- if(STATUS_EFFECT_FAST_PROCESS)
- if(tick_speed < SSfastprocess.wait)
- TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSfastprocess can tick ([SSfastprocess.wait]).")
- if(STATUS_EFFECT_NORMAL_PROCESS)
- if(tick_speed < SSprocessing.wait)
- TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSprocessing can tick ([SSprocessing.wait]).")
- else
- TEST_FAIL("Invalid processing speed for status effect [checking] : [initial(checking.processing_speed)]")
diff --git a/code/modules/unit_tests/status_effect_validity.dm b/code/modules/unit_tests/status_effect_validity.dm
new file mode 100644
index 0000000000000..76a367233fd11
--- /dev/null
+++ b/code/modules/unit_tests/status_effect_validity.dm
@@ -0,0 +1,61 @@
+/// Validates status effect tick interval setup
+/datum/unit_test/status_effect_ticks
+
+/datum/unit_test/status_effect_ticks/Run()
+ for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect))
+ if(initial(checking.id) == STATUS_EFFECT_ID_ABSTRACT)
+ continue
+ var/tick_speed = initial(checking.tick_interval)
+ if(tick_speed == STATUS_EFFECT_NO_TICK)
+ continue
+ if(tick_speed == INFINITY)
+ TEST_FAIL("Status effect [checking] has tick_interval set to INFINITY, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.")
+ continue
+ if(tick_speed == 0)
+ TEST_FAIL("Status effect [checking] has tick_interval set to 0, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.")
+ continue
+ switch(initial(checking.processing_speed))
+ if(STATUS_EFFECT_FAST_PROCESS)
+ if(tick_speed < SSfastprocess.wait)
+ TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSfastprocess can tick ([SSfastprocess.wait]).")
+ if(STATUS_EFFECT_NORMAL_PROCESS)
+ if(tick_speed < SSprocessing.wait)
+ TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSprocessing can tick ([SSprocessing.wait]).")
+ else
+ TEST_FAIL("Invalid processing speed for status effect [checking] : [initial(checking.processing_speed)]")
+
+/// Validates status effect alert type setup
+/datum/unit_test/status_effect_alert
+
+/datum/unit_test/status_effect_alert/Run()
+ // The base typepath is used to indicate "I didn't set an alert type"
+ var/bad_alert_type = /datum/status_effect::alert_type
+ TEST_ASSERT_NOTNULL(bad_alert_type, "No alert type defined in /datum/status_effect - This test may be redundant now.")
+
+ for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect))
+ if(initial(checking.id) == STATUS_EFFECT_ID_ABSTRACT)
+ continue
+ if(initial(checking.alert_type) != bad_alert_type)
+ continue
+ TEST_FAIL("[checking] has not set alert_type. If you don't want an alert, set alert_type = null - \
+ Otherwise, give it an alert subtype.")
+
+/// Validates status effect id setup
+/datum/unit_test/status_effect_ids
+
+/datum/unit_test/status_effect_ids/Run()
+ // The base id is used to indicate "I didn't set an id"
+ var/bad_id = /datum/status_effect::id
+ TEST_ASSERT_NOTNULL(bad_id, "No id defined in /datum/status_effect - This test may be redundant now.")
+
+ for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect))
+ if(initial(checking.id) == STATUS_EFFECT_ID_ABSTRACT)
+ // we are just assuming that a child of an abstract should not be abstract.
+ // of course in practice, this may not always be the case - but if you're
+ // structuring a status effect like this, you can just change the parent id to anything else
+ var/datum/status_effect/checking_parent = initial(checking.parent_type)
+ if(initial(checking_parent.id) != STATUS_EFFECT_ID_ABSTRACT)
+ continue
+ if(initial(checking.id) != bad_id)
+ continue
+ TEST_FAIL("[checking] has not set an id. This is required for status effects.")
diff --git a/code/modules/unit_tests/stomach.dm b/code/modules/unit_tests/stomach.dm
index 5d2b948e82b36..69ef7c06628b6 100644
--- a/code/modules/unit_tests/stomach.dm
+++ b/code/modules/unit_tests/stomach.dm
@@ -18,7 +18,7 @@
//Give them meth and let it kick in
pill.reagents.add_reagent(meth, 1.9 * initial(meth.metabolization_rate) * SSMOBS_DT)
- pill.attack(human, human)
+ pill.interact_with_atom(human, human)
human.Life(SSMOBS_DT)
TEST_ASSERT(human.reagents.has_reagent(meth), "Human body does not have meth after life tick")
diff --git a/code/modules/unit_tests/syringe_gun.dm b/code/modules/unit_tests/syringe_gun.dm
new file mode 100644
index 0000000000000..2d3e56a58089a
--- /dev/null
+++ b/code/modules/unit_tests/syringe_gun.dm
@@ -0,0 +1,14 @@
+/// Tests the ability to load syringe into a syringe gun
+/datum/unit_test/load_syringe
+
+/datum/unit_test/load_syringe/Run()
+ var/mob/living/carbon/human/consistent/chemist = EASY_ALLOCATE()
+ var/obj/item/gun/syringe/syringe_gun = EASY_ALLOCATE()
+ var/obj/item/reagent_containers/syringe/syringe = EASY_ALLOCATE()
+
+ chemist.put_in_active_hand(syringe, forced = TRUE)
+ chemist.put_in_inactive_hand(syringe_gun, forced = TRUE)
+
+ click_wrapper(chemist, syringe_gun)
+
+ TEST_ASSERT_EQUAL(syringe.loc, syringe_gun, "Syringe was not added to syringe gun when clicking on it to load it.")
diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm
index ce59bd3d61d49..241d7b54c39af 100644
--- a/code/modules/unit_tests/unit_test.dm
+++ b/code/modules/unit_tests/unit_test.dm
@@ -166,6 +166,18 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests())
log_world("::[priority] file=[file],line=[line],title=[map_name]: [type]::[annotation_text]")
+/**
+ * Helper to perform a click
+ *
+ * * clicker: The mob that will be clicking
+ * * clicked_on: The atom that will be clicked
+ * * passed_params: A list of parameters to pass to the click
+ */
+/datum/unit_test/proc/click_wrapper(mob/living/clicker, atom/clicked_on, list/passed_params = list(LEFT_CLICK = 1, BUTTON = LEFT_CLICK))
+ clicker.next_click = -1
+ clicker.next_move = -1
+ clicker.ClickOn(clicked_on, list2params(passed_params))
+
/proc/RunUnitTest(datum/unit_test/test_path, list/test_results)
if(ispath(test_path, /datum/unit_test/focus_only))
return
@@ -242,6 +254,8 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests())
//Yet more templates
/obj/machinery/restaurant_portal,
//Template type
+ /obj/machinery/power/turbine,
+ //Template type
/obj/effect/mob_spawn,
//Template type
/obj/structure/holosign/robot_seat,
@@ -289,9 +303,9 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests())
//No heart to give
returnable_list += typesof(/obj/structure/ethereal_crystal)
//No linked console
- returnable_list += typesof(/mob/eye/ai_eye/remote/base_construction)
+ returnable_list += typesof(/mob/eye/camera/remote/base_construction)
//See above
- returnable_list += typesof(/mob/eye/ai_eye/remote/shuttle_docker)
+ returnable_list += typesof(/mob/eye/camera/remote/shuttle_docker)
//Hangs a ref post invoke async, which we don't support. Could put a qdeleted check but it feels hacky
returnable_list += typesof(/obj/effect/anomaly/grav/high)
//See above
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 0d347709536ee..1782f836bea70 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -194,7 +194,8 @@
return
QDEL_NULL(gun_reward.pin)
- gun_reward.pin = new /obj/item/firing_pin(gun_reward)
+ var/obj/item/firing_pin/pin = new
+ pin.gun_insert(new_gun = gun_reward)
///For special overrides if an item can be bought or not.
/datum/uplink_item/proc/can_be_bought(datum/uplink_handler/source)
@@ -217,9 +218,13 @@
category = /datum/uplink_category/discounts
purchasable_from = parent_type::purchasable_from & ~UPLINK_SPY // Probably not necessary but just in case
+/datum/uplink_category/objective_special
+ name = "Objective-Specific Equipment"
+ weight = -3
+
// Special equipment (Dynamically fills in uplink component)
/datum/uplink_item/special_equipment
- category = "Objective-Specific Equipment"
+ category = /datum/uplink_category/objective_special
name = "Objective-Specific Equipment"
desc = "Equipment necessary for accomplishing specific objectives. If you are seeing this, something has gone wrong."
limited_stock = 1
diff --git a/code/modules/uplink/uplink_items/device_tools.dm b/code/modules/uplink/uplink_items/device_tools.dm
index 714c3133482c4..ef2ab6fd1fddc 100644
--- a/code/modules/uplink/uplink_items/device_tools.dm
+++ b/code/modules/uplink/uplink_items/device_tools.dm
@@ -242,9 +242,9 @@
active gravitational singularities or tesla balls towards it. This will not work when the engine is still \
in containment. Because of its size, it cannot be carried. Ordering this \
sends you a small beacon that will teleport the larger beacon to your location upon activation."
- progression_minimum = 30 MINUTES
+ progression_minimum = 20 MINUTES
item = /obj/item/sbeacondrop
- cost = 10
+ cost = 4
surplus = 0 // not while there isnt one on any station
purchasable_from = ~UPLINK_ALL_SYNDIE_OPS
diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm
index 9c0c92edcbfe7..935461509ab5d 100644
--- a/code/modules/uplink/uplink_items/job.dm
+++ b/code/modules/uplink/uplink_items/job.dm
@@ -142,6 +142,14 @@
cost = 11
restricted_roles = list(JOB_COOK)
+/datum/uplink_item/role_restricted/moltobeso
+ name = "Molt'Obeso Sauce Bottle"
+ desc = "A branded bottle of Molt'Obeso sauce. This sauce can stimulate hunger in people, leading them to eat more than they intended. \
+ It also enhances the absorption of calories from the food consumed."
+ item = /obj/item/storage/box/syndie_kit/moltobeso
+ cost = 2
+ restricted_roles = list(JOB_COOK)
+
/datum/uplink_item/role_restricted/turretbox
name = "Disposable Sentry Gun"
desc = "A disposable sentry gun deployment system cleverly disguised as a toolbox, apply wrench for functionality."
@@ -250,7 +258,7 @@
progression_minimum = 15 MINUTES
item = /obj/item/gun/chem
cost = 12
- restricted_roles = list(JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_BOTANIST)
+ restricted_roles = list(JOB_CHEMIST, JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_BOTANIST)
/datum/uplink_item/role_restricted/pie_cannon
name = "Banana Cream Pie Cannon"
diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm
index 9b86a91b0264c..ca017a552fd68 100644
--- a/code/modules/uplink/uplink_items/nukeops.dm
+++ b/code/modules/uplink/uplink_items/nukeops.dm
@@ -52,7 +52,8 @@
Note: This bundle is not at a discount. You can purchase all of these items separately. You do not NEED these items, but most operatives fail WITHOUT at \
least SOME of these items. More experienced operatives can do without."
item = /obj/item/storage/box/syndie_kit/core_gear
- cost = 22 //freedom 5, doormag 3, c-4 1, stimpack 5, shield modsuit module 8
+ //The cost for the core kit is always equivalent to the combined costs of the included items
+ cost = (/datum/uplink_item/device_tools/doorjack::cost + /datum/uplink_item/implants/freedom::cost + /datum/uplink_item/explosives/c4::cost + /datum/uplink_item/device_tools/stimpack::cost + /datum/uplink_item/suits/energy_shield::cost)
limited_stock = 1
cant_discount = TRUE
purchasable_from = UPLINK_SERIOUS_OPS
@@ -178,7 +179,7 @@
/datum/uplink_item/weapon_kits/medium_cost/sword_and_board
name = "Energy Shield and Sword Case (Very Hard)"
- desc = "A case containing an energy sword and energy shield. Paired together, it provides considerable defensive power without lethal potency. \
+ desc = "A case containing an energy sword and energy shield. Paired together, it provides considerable defensive power without compromising lethal potency. \
Perfect for the enterprising nuclear knight. Comes with a medieval helmet for your MODsuit!"
item = /obj/item/storage/toolbox/guncase/sword_and_board
@@ -195,13 +196,13 @@
/datum/uplink_item/weapon_kits/medium_cost/revolvercase
name = "Syndicate Revolver Case (Moderate)"
desc = "Waffle Corp's modernized Syndicate revolver. Fires 7 brutal rounds of .357 Magnum. \
- A classic operative weapon, brought to the modern era. Comes with 3 additional speedloaders of .357."
+ A classic operative weapon, improved for the modern era. Comes with 3 additional speedloaders of .357."
item = /obj/item/storage/toolbox/guncase/revolver
/datum/uplink_item/ammo_nuclear/basic/revolver
name = ".357 Speed Loader (Revolver)"
desc = "A speed loader that contains seven additional .357 Magnum rounds; usable with the Syndicate revolver. \
- For when you really need a lot of things dead. Operatives get a discount from most of our agents!"
+ For when you really need a lot of things dead. Unlike field agents, operatives get a premium price for their speedloaders!"
item = /obj/item/ammo_box/a357
purchasable_from = parent_type::purchasable_from | UPLINK_SPY
@@ -228,7 +229,7 @@
/datum/uplink_item/weapon_kits/medium_cost/rawketlawnchair
name = "Dardo-RE Rocket Propelled Grenade Launcher (Hard)"
desc = "A reusable rocket propelled grenade launcher preloaded with a low-yield 84mm HE round. \
- Guaranteed to send your target out with a bang or your money back! Comes with a bouquet of additional rockets!"
+ Guaranteed to take your target out with a bang, or your money back! Comes with a bouquet of additional rockets!"
item = /obj/item/storage/toolbox/guncase/rocketlauncher
/datum/uplink_item/ammo_nuclear/basic/rocket
@@ -291,8 +292,8 @@
/datum/uplink_item/weapon_kits/high_cost/carbine
name = "M-90gl Carbine Case (Hard)"
- desc = "A fully-loaded, specialized three-round burst carbine that fires .223 ammunition from a 30 round magazine \
- with a 40mm underbarrel grenade launcher. Use secondary-fire to fire the grenade launcher. Comes with two spare magazines \
+ desc = "A fully-loaded, specialized three-round burst carbine that fires .223 ammunition from a 30 round magazine.\
+ Comes with a 40mm underbarrel grenade launcher. Use secondary-fire to fire the grenade launcher. Also comes with two spare magazines \
and a box of 40mm rubber slugs."
item = /obj/item/storage/toolbox/guncase/m90gl
@@ -320,7 +321,7 @@
/datum/uplink_item/weapon_kits/high_cost/sniper
name = "Anti-Materiel Sniper Rifle Briefcase (Hard)"
- desc = "An outdated, but still extremely powerful anti-material sniper rifle. Fires .50 BMG cartridges from a 6 round magazine. \
+ desc = "An outdated, but still extremely powerful anti-materiel sniper rifle. Fires .50 BMG cartridges from a 6 round magazine. \
Can be fitted with a suppressor. If anyone asks how that even works, tell them it's Nanotrasen's fault. Comes with \
3 spare magazines; 2 regular magazines and 1 disruptor magazine. Also comes with a suit and tie."
item = /obj/item/storage/briefcase/sniper
@@ -374,9 +375,11 @@
/datum/uplink_item/weapon_kits/surplus_smg
name = "Surplus Smart-SMG (Flukie)"
- desc = "An outdated smart-SMG with limited stopping power, however it's bullets will gradually track towards whatever \
- the gun was shot at. This does require you to actually aim at the person you are shooting at before firing, but \
- surely a highly trained operative such as yourself can manage that."
+ desc = "A failed experimental 'smart gun'. The use of .160 rocket propelled projectiles resulted in reduced stopping power \
+ but increased overally accuracy so long as the shooter vaguely aimed towards their target. The relative increase in \
+ operator effort from absurd recoil contradicted advertized advantages, resulting in poor market performance. However, \
+ there sure are a lots still lying around in poorly secured warehouses. So we took them. And now you can have them. \
+ If you REALLY want it. All I'm saying is: good luck."
item = /obj/item/gun/ballistic/automatic/smartgun
cost = 2
purchasable_from = UPLINK_SERIOUS_OPS
diff --git a/code/modules/uplink/uplink_items/suits.dm b/code/modules/uplink/uplink_items/suits.dm
index 2839a6d2d1eff..a71e604651879 100644
--- a/code/modules/uplink/uplink_items/suits.dm
+++ b/code/modules/uplink/uplink_items/suits.dm
@@ -81,8 +81,9 @@
cost = 16
cant_discount = TRUE
-/datum/uplink_item/suits/modsuit/Wraith
+/datum/uplink_item/suits/modsuit/wraith
name = "MODsuit wraith cloaking module"
- desc = "A MODsuit module that grants to the user Optical camouflage and the ability to overload light sources to recharge suit power."
+ desc = "A MODsuit module that grants to the user Optical camouflage and the ability to overload light sources to recharge suit power. \
+ Incompatible with armored MODsuits."
item = /obj/item/mod/module/stealth/wraith
cost = 3
diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm
index 4aa28d6fe5a47..3840bfe0cd201 100644
--- a/code/modules/vehicles/atv.dm
+++ b/code/modules/vehicles/atv.dm
@@ -112,12 +112,12 @@
smoke.set_up(0, holder = src, location = src)
smoke.start()
-/obj/vehicle/ridden/atv/bullet_act(obj/projectile/P)
+/obj/vehicle/ridden/atv/bullet_act(obj/projectile/proj)
if(prob(50) || !LAZYLEN(buckled_mobs))
return ..()
for(var/mob/buckled_mob as anything in buckled_mobs)
- buckled_mob.bullet_act(P)
- return BULLET_ACT_HIT
+ return buckled_mob.projectile_hit(proj)
+ return ..()
/obj/vehicle/ridden/atv/atom_destruction()
explosion(src, devastation_range = -1, light_impact_range = 2, flame_range = 3, flash_range = 4)
diff --git a/code/modules/vehicles/cars/vim.dm b/code/modules/vehicles/cars/vim.dm
index e2d9c50e5d66c..e762aec22bd5e 100644
--- a/code/modules/vehicles/cars/vim.dm
+++ b/code/modules/vehicles/cars/vim.dm
@@ -46,7 +46,7 @@
/obj/vehicle/sealed/car/vim/atom_destruction(damage_flag)
new /obj/effect/decal/cleanable/oil(get_turf(src))
do_sparks(5, TRUE, src)
- visible_message(span_boldannounce("[src] blows apart!"))
+ visible_message(span_bolddanger("[src] blows apart!"))
return ..()
/obj/vehicle/sealed/car/vim/mob_try_enter(mob/entering)
diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm
index ccb211a2a6678..301f3a7115891 100644
--- a/code/modules/vehicles/mecha/_mecha.dm
+++ b/code/modules/vehicles/mecha/_mecha.dm
@@ -836,7 +836,7 @@
/obj/vehicle/sealed/mecha/on_saboteur(datum/source, disrupt_duration)
. = ..()
- if(mecha_flags &= HAS_LIGHTS && light_on)
+ if((mecha_flags & HAS_LIGHTS) && light_on)
set_light_on(FALSE)
return TRUE
diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm
index 0e1ab1302db91..6995206942938 100644
--- a/code/modules/vehicles/mecha/combat/durand.dm
+++ b/code/modules/vehicles/mecha/combat/durand.dm
@@ -35,8 +35,6 @@
. = ..()
shield = new /obj/durand_shield(loc, src, plane, layer, dir)
RegisterSignal(src, COMSIG_MECHA_ACTION_TRIGGER, PROC_REF(relay))
- RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, PROC_REF(prehit))
-
/obj/vehicle/sealed/mecha/durand/Destroy()
if(shield)
@@ -84,10 +82,12 @@
shield.setDir(dir)
//Redirects projectiles to the shield if defense_check decides they should be blocked and returns true.
-/obj/vehicle/sealed/mecha/durand/proc/prehit(obj/projectile/source, list/signal_args)
- SIGNAL_HANDLER
+/obj/vehicle/sealed/mecha/durand/bullet_act(obj/projectile/source, def_zone, mode)
if(defense_check(source.loc) && shield)
- signal_args[2] = shield
+ return shield.projectile_hit(source, def_zone, mode)
+ return ..()
+
+
/**Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield.
Expects a turf. Returns true if the attack should be blocked, false if not.*/
@@ -274,7 +274,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe
flick("shield_impact", src)
if(!.)
return
- if(!chassis.use_energy(. * (STANDARD_CELL_CHARGE / 15)))
+ if(!chassis.use_energy(. * (STANDARD_CELL_CHARGE / 150)))
chassis.cell?.charge = 0
for(var/O in chassis.occupants)
var/mob/living/occupant = O
diff --git a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
index e1c37a3d13a7f..3c49e18c7552e 100644
--- a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
@@ -15,82 +15,33 @@
if(!chassis)
return PROCESS_KILL
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper
+/obj/item/mecha_parts/mecha_equipment/proc/get_reagent_data(list/datum/reagent/reagent_list)
+ var/list/contained_reagents = list()
+ if(length(reagent_list))
+ for(var/datum/reagent/reagent as anything in reagent_list)
+ contained_reagents += list(list("name" = reagent.name, "volume" = round(reagent.volume, 0.01))) // list in a list because Byond merges the first list...
+ return contained_reagents
+
+//---- Mecha sleeper, medical subtype has the chemical functionality
+/obj/item/mecha_parts/mecha_equipment/sleeper
name = "mounted sleeper"
- desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents from a equipped exosuit syringe gun."
- icon_state = "mecha_sleeper"
+ desc = "A mounted sleeper that stabilizes patients."
+ icon_state = "mecha_sleeper_miner"
energy_drain = 20
range = MECHA_MELEE
equip_cooldown = 20
/// ref to the patient loaded in the sleeper
var/mob/living/carbon/patient
- /// amount of chems to inject into patient from other hands syringe gun
- var/inject_amount = 10
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Destroy()
+/obj/item/mecha_parts/mecha_equipment/sleeper/Destroy()
for(var/atom/movable/content as anything in src)
content.forceMove(get_turf(src))
return ..()
-/obj/item/mecha_parts/mecha_equipment/medical/proc/get_reagent_data(list/datum/reagent/reagent_list)
- var/list/contained_reagents = list()
- if(length(reagent_list))
- for(var/datum/reagent/reagent as anything in reagent_list)
- contained_reagents += list(list("name" = reagent.name, "volume" = round(reagent.volume, 0.01))) // list in a list because Byond merges the first list...
- return contained_reagents
-
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/get_snowflake_data()
- var/list/data = list("snowflake_id" = MECHA_SNOWFLAKE_ID_SLEEPER)
- if(isnull(patient))
- return data
- var/patient_state
- switch(patient.stat)
- if(0)
- patient_state = "Conscious"
- if(1)
- patient_state = "Unconscious"
- if(2)
- patient_state = "*dead*"
- else
- patient_state = "Unknown"
- var/core_temp = ""
- if(ishuman(patient))
- var/mob/living/carbon/human/humi = patient
- core_temp = humi.bodytemperature-T0C
- data["patient"] = list(
- "patient_name" = patient.name,
- "patient_health" = patient.health/patient.maxHealth,
- "patient_state" = patient_state,
- "core_temp" = core_temp,
- "brute_loss" = patient.getBruteLoss(),
- "burn_loss" = patient.getFireLoss(),
- "toxin_loss" = patient.getToxLoss(),
- "oxygen_loss" = patient.getOxyLoss(),
- )
- data["has_brain_damage"] = patient.get_organ_loss(ORGAN_SLOT_BRAIN) != 0
- data["has_traumas"] = length(patient.get_traumas()) != 0
- data["contained_reagents"] = get_reagent_data(patient.reagents.reagent_list)
-
- var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate(/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun) in chassis
- if(shooter)
- data["injectible_reagents"] = get_reagent_data(shooter.reagents.reagent_list)
- return data
-
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/handle_ui_act(action, list/params)
- switch(action)
- if("eject")
- go_out()
- return TRUE
- var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate() in chassis
- if(shooter)
- for(var/datum/reagent/medication in shooter.reagents.reagent_list)
- if(action == ("inject_reagent_" + medication.name))
- inject_reagent(medication, shooter)
- break // or maybe return TRUE? i'm not certain
-
- return FALSE
+/obj/item/mecha_parts/mecha_equipment/sleeper/container_resist_act(mob/living/user)
+ go_out()
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/action(mob/source, atom/atomtarget, list/modifiers)
+/obj/item/mecha_parts/mecha_equipment/sleeper/action(mob/source, atom/atomtarget, list/modifiers)
if(!action_checks(atomtarget))
return
if(!iscarbon(atomtarget))
@@ -112,7 +63,7 @@
log_message("[target] loaded. Life support functions engaged.", LOG_MECHA)
return ..()
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/patient_insertion_check(mob/living/carbon/target, mob/user)
+/obj/item/mecha_parts/mecha_equipment/sleeper/proc/patient_insertion_check(mob/living/carbon/target, mob/user)
if(!isnull(target.buckled))
to_chat(user, "[icon2html(src, user)][span_warning("[target] will not fit into the sleeper because [target.p_theyre()] buckled to [target.buckled]!")]")
return FALSE
@@ -124,7 +75,7 @@
return FALSE
return TRUE
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/go_out()
+/obj/item/mecha_parts/mecha_equipment/sleeper/proc/go_out()
if(!patient)
return
patient.forceMove(get_turf(src))
@@ -133,31 +84,56 @@
STOP_PROCESSING(SSobj, src)
patient = null
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/detach()
+/obj/item/mecha_parts/mecha_equipment/sleeper/detach()
if(patient)
to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_warning("Unable to detach [src] - equipment occupied!")]")
return
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/inject_reagent(datum/reagent/R, obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/SG)
- if(!R || !patient || !SG || !(SG in chassis.flat_equipment))
- return
- var/to_inject = min(R.volume, inject_amount)
- if(to_inject && patient.reagents.get_reagent_amount(R.type) + to_inject <= inject_amount*2)
- to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_notice("Injecting [patient] with [to_inject] units of [R.name].")]")
- log_message("Injecting [patient] with [to_inject] units of [R.name].", LOG_MECHA)
- for(var/driver in chassis.return_drivers())
- log_combat(driver, patient, "injected", "[name] ([R] - [to_inject] units)")
- SG.reagents.trans_to(patient, to_inject, target_id = R.type)
+/obj/item/mecha_parts/mecha_equipment/sleeper/get_snowflake_data()
+ var/list/data = list("snowflake_id" = MECHA_SNOWFLAKE_ID_SLEEPER)
+ if(isnull(patient))
+ return data
+ var/patient_state
+ switch(patient.stat)
+ if(CONSCIOUS)
+ patient_state = "Conscious"
+ if(UNCONSCIOUS)
+ patient_state = "Unconscious"
+ if(DEAD)
+ patient_state = "*Dead*"
+ if(SOFT_CRIT, HARD_CRIT)
+ patient_state = "Critical"
+ else
+ patient_state = "Unknown"
+ var/core_temp = ""
+ if(ishuman(patient))
+ var/mob/living/carbon/human/humi = patient
+ core_temp = humi.bodytemperature-T0C
+ data["patient"] = list(
+ "patient_name" = patient.name,
+ "patient_health" = patient.health/patient.maxHealth,
+ "patient_state" = patient_state,
+ "core_temp" = core_temp,
+ "brute_loss" = patient.getBruteLoss(),
+ "burn_loss" = patient.getFireLoss(),
+ "toxin_loss" = patient.getToxLoss(),
+ "oxygen_loss" = patient.getOxyLoss(),
+ )
+ data["contained_reagents"] = get_reagent_data(patient.reagents.reagent_list)
+ data["has_brain_damage"] = patient.get_organ_loss(ORGAN_SLOT_BRAIN) != 0
+ data["has_traumas"] = length(patient.get_traumas()) != 0
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/container_resist_act(mob/living/user)
- go_out()
+ return data
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/process(seconds_per_tick)
- . = ..()
- if(.)
- return
+/obj/item/mecha_parts/mecha_equipment/sleeper/handle_ui_act(action, list/params)
+ if(action == "eject")
+ go_out()
+ return TRUE
+ return FALSE
+
+/obj/item/mecha_parts/mecha_equipment/sleeper/process(seconds_per_tick)
if(!chassis.has_charge(energy_drain))
log_message("Deactivated.", LOG_MECHA)
to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_warning("[src] deactivated - no power.")]")
@@ -171,17 +147,59 @@
log_message("[patient] no longer detected - Life support functions disabled.", LOG_MECHA)
STOP_PROCESSING(SSobj, src)
patient = null
- if(ex_patient.health > 0)
- ex_patient.adjustOxyLoss(-0.5 * seconds_per_tick)
- ex_patient.AdjustStun(-40 * seconds_per_tick)
- ex_patient.AdjustKnockdown(-40 * seconds_per_tick)
- ex_patient.AdjustParalyzed(-40 * seconds_per_tick)
- ex_patient.AdjustImmobilized(-40 * seconds_per_tick)
- ex_patient.AdjustUnconscious(-40 * seconds_per_tick)
- if(ex_patient.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5)
+ ex_patient.adjustOxyLoss(-2 * seconds_per_tick)
+ ex_patient.AdjustStun(-4 SECONDS * seconds_per_tick)
+ ex_patient.AdjustKnockdown(-4 SECONDS * seconds_per_tick)
+ ex_patient.AdjustParalyzed(-4 SECONDS * seconds_per_tick)
+ ex_patient.AdjustImmobilized(-4 SECONDS * seconds_per_tick)
+ ex_patient.AdjustUnconscious(-4 SECONDS * seconds_per_tick)
+ if(ex_patient.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5 \
+ && ex_patient.reagents.get_reagent_amount(/datum/reagent/medicine/c2/penthrite) <= 0 \
+ && ex_patient.stat >= SOFT_CRIT)
ex_patient.reagents.add_reagent(/datum/reagent/medicine/epinephrine, 5)
+ if(ex_patient.reagents.get_reagent_amount(/datum/reagent/toxin/formaldehyde) <= 0 && ex_patient.stat == DEAD)
+ ex_patient.reagents.add_reagent(/datum/reagent/toxin/formaldehyde, 3)
chassis.use_energy(energy_drain)
+//Medical subtype with the chems
+/obj/item/mecha_parts/mecha_equipment/sleeper/medical
+ name = "mounted sleeper"
+ desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents from a equipped exosuit syringe gun."
+ icon_state = "mecha_sleeper"
+ mech_flags = EXOSUIT_MODULE_MEDICAL
+ /// amount of chems to inject into patient from other hands syringe gun
+ var/inject_amount = 10
+
+/obj/item/mecha_parts/mecha_equipment/sleeper/medical/get_snowflake_data()
+ var/list/data = ..()
+ if(isnull(patient))
+ return data
+ var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate(/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun) in chassis
+ if(shooter)
+ data["injectible_reagents"] = get_reagent_data(shooter.reagents.reagent_list)
+ return data
+
+/obj/item/mecha_parts/mecha_equipment/sleeper/medical/handle_ui_act(action, list/params)
+ . = ..()
+ if(.)
+ return TRUE
+ var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate() in chassis
+ if(shooter)
+ for(var/datum/reagent/medication as anything in shooter.reagents.reagent_list)
+ if(action == ("inject_reagent_" + medication.name))
+ inject_reagent(medication, shooter)
+ break // or maybe return TRUE? i'm not certain
+
+/obj/item/mecha_parts/mecha_equipment/sleeper/medical/proc/inject_reagent(datum/reagent/reagent_to_inject, obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/SG)
+ if(!reagent_to_inject || !patient || !SG || !(SG in chassis.flat_equipment))
+ return
+ var/to_inject = min(reagent_to_inject.volume, inject_amount)
+ if(to_inject && patient.reagents.get_reagent_amount(reagent_to_inject.type) + to_inject <= inject_amount*2)
+ to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_notice("Injecting [patient] with [to_inject] units of [reagent_to_inject.name].")]")
+ log_message("Injecting [patient] with [to_inject] units of [reagent_to_inject.name].", LOG_MECHA)
+ for(var/driver in chassis.return_drivers())
+ log_combat(driver, patient, "injected", "[name] ([reagent_to_inject] - [to_inject] units)")
+ SG.reagents.trans_to(patient, to_inject, target_id = reagent_to_inject.type)
///////////////////////////////// Syringe Gun ///////////////////////////////////////////////////////////////
diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
index e08020a545f62..b1585f679a22c 100644
--- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
@@ -9,6 +9,8 @@
name = "exosuit drill"
desc = "Equipment for engineering and combat exosuits. This is the drill that'll pierce the heavens!"
icon_state = "mecha_drill"
+ equipment_slot = MECHA_UTILITY
+ can_be_toggled = TRUE
equip_cooldown = 15
energy_drain = 0.01 * STANDARD_CELL_CHARGE
force = 15
@@ -32,6 +34,17 @@
ADD_TRAIT(src, TRAIT_INSTANTLY_PROCESSES_BOULDERS, INNATE_TRAIT)
ADD_TRAIT(src, TRAIT_BOULDER_BREAKER, INNATE_TRAIT)
+/obj/item/mecha_parts/mecha_equipment/drill/handle_ui_act(action, list/params)
+ if(action != "toggle")
+ return
+ if(active)
+ RegisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK, PROC_REF(on_mech_click))
+ log_message("Activated.", LOG_MECHA)
+ else
+ UnregisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK)
+ log_message("Deactivated.", LOG_MECHA)
+ return TRUE
+
/obj/item/mecha_parts/mecha_equipment/drill/attach(obj/vehicle/sealed/mecha/new_mecha, attach_right)
. = ..()
RegisterSignal(chassis, COMSIG_MOVABLE_BUMP, PROC_REF(bump_mine))
@@ -64,6 +77,14 @@
return FALSE
return ..()
+///Redirects clicks to use the drill if possible when enabled
+/obj/item/mecha_parts/mecha_equipment/drill/proc/on_mech_click(atom/mech, mob/source, atom/target, on_cooldown, adjacent)
+ SIGNAL_HANDLER
+ if(on_cooldown || !adjacent)
+ return
+ INVOKE_ASYNC(src, PROC_REF(action), source, target, null, FALSE)
+ return COMPONENT_CANCEL_MELEE_CLICK
+
/obj/item/mecha_parts/mecha_equipment/drill/action(mob/source, atom/target, list/modifiers, bumped)
//If bumped, only bother drilling mineral turfs
if(bumped)
@@ -90,6 +111,10 @@
if(target_obj.resistance_flags & (UNACIDABLE | INDESTRUCTIBLE))
return
+ // Check if we can even use the equipment to begin with.
+ if(!action_checks(target))
+ return
+
// You can't drill harder by clicking more.
if(DOING_INTERACTION_WITH_TARGET(source, target) && do_after_cooldown(target, source, DOAFTER_SOURCE_MECHADRILL))
return
@@ -102,10 +127,6 @@
// Drilling a turf is a one-and-done procedure.
if(isturf(target))
- // Check if we can even use the equipment to begin with.
- if(!action_checks(target))
- return
-
var/turf/T = target
T.drill_act(src, source)
diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
index 4d3b682b4277b..15cc3e6b8cdb5 100644
--- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
@@ -285,7 +285,7 @@
///Maximum fuel capacity of the generator, in units
var/max_fuel = 75 * SHEET_MATERIAL_AMOUNT
///Energy recharged per second
- var/rechargerate = 0.005 * STANDARD_CELL_RATE
+ var/rechargerate = 0.05 * STANDARD_CELL_RATE
/obj/item/mecha_parts/mecha_equipment/generator/Initialize(mapload)
. = ..()
diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
index b29c5501a7959..c62b2a0d9ce45 100644
--- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
+++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
@@ -68,13 +68,13 @@
var/obj/projectile/projectile_obj = new projectile(get_turf(src))
projectile_obj.log_override = TRUE //we log being fired ourselves a little further down.
projectile_obj.firer = chassis
- projectile_obj.preparePixelProjectile(target, source, modifiers, spread)
+ projectile_obj.aim_projectile(target, source, modifiers, spread)
if(isliving(source) && source.client) //dont want it to happen from syndie mecha npc mobs, they do direct fire anyways
var/mob/living/shooter = source
projectile_obj.hit_prone_targets = shooter.combat_mode
projectile_obj.fire()
if(!projectile_obj.suppressed && firing_effect_type)
- new firing_effect_type(get_turf(src), chassis.dir)
+ new firing_effect_type(chassis || get_turf(src), chassis.dir)
playsound(chassis, fire_sound, 50, TRUE)
log_combat(source, target, "fired [projectile_obj] at", src, "from [chassis] at [get_area_name(src, TRUE)]")
diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm
index 54f8cee9ed4c5..ad28886d99f22 100644
--- a/code/modules/vehicles/mecha/mech_fabricator.dm
+++ b/code/modules/vehicles/mecha/mech_fabricator.dm
@@ -10,6 +10,7 @@
subsystem_type = /datum/controller/subsystem/processing/fastprocess
+ interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS
/// Current items in the build queue.
var/list/datum/design/queue = list()
@@ -49,12 +50,15 @@
/// All designs in the techweb that can be fabricated by this machine, since the last update.
var/list/datum/design/cached_designs
- //looping sound for printing items
+ /// Looping sound for printing items
var/datum/looping_sound/lathe_print/print_sound
/// Local designs that only this mechfab have(using when mechfab emaged so it's illegal designs).
var/list/datum/design/illegal_local_designs
+ /// Direction the produced items will drop (0 means on top of us)
+ var/drop_direction = SOUTH
+
/obj/machinery/mecha_part_fabricator/Initialize(mapload)
print_sound = new(src, FALSE)
rmat = AddComponent(/datum/component/remote_materials, mapload && link_on_init)
@@ -136,15 +140,19 @@
. = ..()
if(in_range(user, src) || isobserver(user))
. += span_notice("The status display reads: Storing up to [rmat.local_size] material units. Material consumption at [component_coeff*100]% . Build time reduced by [100-time_coeff*100]% .")
- if(panel_open)
- . += span_notice("Alt-click to rotate the output direction.")
+ . += span_notice("Currently configured to drop printed objects [dir2text(drop_direction)] .")
-/obj/machinery/mecha_part_fabricator/click_alt(mob/user)
- if(!panel_open)
- return CLICK_ACTION_BLOCKING
- dir = turn(dir, -90)
- balloon_alert(user, "rotated to [dir2text(dir)].")
- return CLICK_ACTION_SUCCESS
+/obj/machinery/mecha_part_fabricator/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params)
+ if(!can_interact(user) || (!HAS_SILICON_ACCESS(user) && !isAdminGhostAI(user)) && !Adjacent(user))
+ return
+ if(being_built)
+ balloon_alert(user, "printing started!")
+ return
+ var/direction = get_dir(src, over_location)
+ if(!direction)
+ return
+ drop_direction = direction
+ balloon_alert(user, "dropping [dir2text(drop_direction)]")
/obj/machinery/mecha_part_fabricator/emag_act(mob/user, obj/item/card/emag/emag_card)
if(obj_flags & EMAGGED)
@@ -267,7 +275,7 @@
/obj/machinery/mecha_part_fabricator/process()
// If there's a stored part to dispense due to an obstruction, try to dispense it.
if(stored_part)
- var/turf/exit = get_step(src,(dir))
+ var/turf/exit = get_step(src, drop_direction)
if(exit.density)
return TRUE
@@ -305,7 +313,7 @@
being_built = null
- var/turf/exit = get_step(src,(dir))
+ var/turf/exit = get_step(src, drop_direction)
if(exit.density)
say("Error! The part outlet is obstructed.")
desc = "It's trying to dispense the fabricated [dispensed_design.name], but the part outlet is obstructed."
diff --git a/code/modules/vehicles/mecha/mecha_ai_interaction.dm b/code/modules/vehicles/mecha/mecha_ai_interaction.dm
index 6dc1e2307dc28..168b2e0ea029d 100644
--- a/code/modules/vehicles/mecha/mecha_ai_interaction.dm
+++ b/code/modules/vehicles/mecha/mecha_ai_interaction.dm
@@ -99,7 +99,7 @@
mecha_flags |= SILICON_PILOT
moved_inside(AI)
AI.eyeobj?.forceMove(src)
- AI.eyeobj?.RegisterSignal(src, COMSIG_MOVABLE_MOVED, TYPE_PROC_REF(/mob/eye/ai_eye, update_visibility))
+ AI.eyeobj?.RegisterSignal(src, COMSIG_MOVABLE_MOVED, TYPE_PROC_REF(/mob/eye/camera/ai, update_visibility))
AI.controlled_equipment = src
AI.remote_control = src
add_occupant(AI)
diff --git a/code/modules/vehicles/mecha/mecha_construction_paths.dm b/code/modules/vehicles/mecha/mecha_construction_paths.dm
index 0a305a5db66ae..a8a7c224491a2 100644
--- a/code/modules/vehicles/mecha/mecha_construction_paths.dm
+++ b/code/modules/vehicles/mecha/mecha_construction_paths.dm
@@ -416,10 +416,10 @@
circuit_control = /obj/item/circuitboard/mecha/clarke/main
circuit_periph = /obj/item/circuitboard/mecha/clarke/peripherals
- inner_plating = /obj/item/stack/sheet/plasteel
+ inner_plating = /obj/item/stack/sheet/iron
inner_plating_amount = 5
- outer_plating = /obj/item/stack/sheet/mineral/gold
+ outer_plating = /obj/item/stack/sheet/plasteel
outer_plating_amount = 5
/datum/component/construction/mecha/clarke/get_frame_steps()
diff --git a/code/modules/vehicles/mecha/mecha_defense.dm b/code/modules/vehicles/mecha/mecha_defense.dm
index f0fdc3997a39d..d7f52915a4b2b 100644
--- a/code/modules/vehicles/mecha/mecha_defense.dm
+++ b/code/modules/vehicles/mecha/mecha_defense.dm
@@ -121,7 +121,7 @@
&& !(mecha_flags & SILICON_PILOT) \
&& (def_zone == BODY_ZONE_HEAD || def_zone == BODY_ZONE_CHEST))
var/mob/living/hitmob = pick(occupants)
- return hitmob.bullet_act(hitting_projectile, def_zone, piercing_hit) //If the sides are open, the occupant can be hit
+ return hitmob.projectile_hit(hitting_projectile, def_zone, piercing_hit) //If the sides are open, the occupant can be hit
. = ..()
diff --git a/code/modules/vehicles/mecha/mecha_movement.dm b/code/modules/vehicles/mecha/mecha_movement.dm
index a4b21190a1ec3..130e0e807b438 100644
--- a/code/modules/vehicles/mecha/mecha_movement.dm
+++ b/code/modules/vehicles/mecha/mecha_movement.dm
@@ -139,6 +139,8 @@
// if we're not strafing or if we are forced to rotate or if we are holding down the key
if(dir != direction && (!strafe || forcerotate || keyheld))
setDir(direction)
+ if(!(mecha_flags & QUIET_TURNS))
+ playsound(src, turnsound, 40, TRUE)
if(keyheld || !pivot_step) //If we pivot step, we don't return here so we don't just come to a stop
return TRUE
@@ -146,10 +148,6 @@
//Otherwise just walk normally
. = try_step_multiz(direction)
- //dir and olddir are the current direction of the sprite and the old direction of the sprite respectively
- if (dir != olddir && !(mecha_flags & QUIET_TURNS))
- playsound(src, turnsound, 40, TRUE)
-
if(phasing)
use_energy(phasing_energy_drain)
if(strafe)
diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm
index 8ccee945ed26e..1ecf4a9a831bc 100644
--- a/code/modules/vehicles/mecha/working/clarke.dm
+++ b/code/modules/vehicles/mecha/working/clarke.dm
@@ -1,11 +1,11 @@
-///Lavaproof, fireproof, fast mech with low armor and higher energy consumption, cannot strafe and has an internal ore box.
+///Lavaproof, fireproof, fast mech with low armor and higher energy consumption and has an internal ore box.
/obj/vehicle/sealed/mecha/clarke
- desc = "Combining man and machine for a better, stronger engineer. Can even resist lava!"
+ desc = "Combining man and machine for a better, stronger miner, Cannot strafe Can even resist lava!"
name = "\improper Clarke"
icon_state = "clarke"
base_icon_state = "clarke"
max_temperature = 65000
- max_integrity = 200
+ max_integrity = 250
movedelay = 1.25
overclock_coeff = 1.25
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
@@ -15,14 +15,14 @@
equip_by_category = list(
MECHA_L_ARM = null,
MECHA_R_ARM = null,
- MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/orebox_manager),
+ MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/orebox_manager, /obj/item/mecha_parts/mecha_equipment/sleeper/clarke),
MECHA_POWER = list(),
MECHA_ARMOR = list(),
)
max_equip_by_category = list(
MECHA_L_ARM = 1,
MECHA_R_ARM = 1,
- MECHA_UTILITY = 5,
+ MECHA_UTILITY = 6,
MECHA_POWER = 1,
MECHA_ARMOR = 1,
)
@@ -35,7 +35,7 @@
pivot_step = TRUE
/datum/armor/mecha_clarke
- melee = 20
+ melee = 40
bullet = 10
laser = 20
energy = 10
@@ -55,13 +55,14 @@
/obj/vehicle/sealed/mecha/clarke/generate_actions()
. = ..()
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_search_ruins)
+ initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/clarke_scoop_body)
//Ore Box Controls
///Special equipment for the Clarke mech, handles moving ore without giving the mech a hydraulic clamp and cargo compartment.
/obj/item/mecha_parts/mecha_equipment/orebox_manager
name = "ore storage module"
- desc = "An automated ore box management device."
+ desc = "An automated ore box management device, complete with a built-in boulder processor."
icon_state = "mecha_bin"
equipment_slot = MECHA_UTILITY
detachable = FALSE
@@ -109,6 +110,26 @@
log_message("Dumped [cached_ore_box].", LOG_MECHA)
return TRUE
+/obj/item/mecha_parts/mecha_equipment/sleeper/clarke //The Clarke subtype of the sleeper is a built-in utility module
+ equipment_slot = MECHA_UTILITY
+ detachable = FALSE
+
+/datum/action/vehicle/sealed/mecha/clarke_scoop_body
+ name = "Pick up body"
+ desc = "Activate to pick up a nearby body"
+ button_icon = 'icons/obj/devices/mecha_equipment.dmi'
+ button_icon_state = "mecha_sleeper_miner"
+
+/datum/action/vehicle/sealed/mecha/clarke_scoop_body/Trigger(trigger_flags)
+ var/obj/item/mecha_parts/mecha_equipment/sleeper/clarke/sleeper = locate() in chassis
+ var/mob/living/carbon/human/human_target
+ for(var/mob/living/carbon/human/body in range(1, chassis))
+ if(chassis.is_driver(body) || !ishuman(body) || !chassis.Adjacent(body))
+ continue
+ human_target = body //Non-driver, human, and adjacent
+ break
+ sleeper.action(pick(chassis.return_drivers()), human_target) //This will probably break if anyone allows multiple drivers of the Clarke mech
+
#define SEARCH_COOLDOWN (1 MINUTES)
/datum/action/vehicle/sealed/mecha/mech_search_ruins
diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm
index a2aaa53784f45..7d8452893ac21 100644
--- a/code/modules/vehicles/mecha/working/ripley.dm
+++ b/code/modules/vehicles/mecha/working/ripley.dm
@@ -301,6 +301,10 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/ripley/cargo)
var/obj/vehicle/sealed/mecha/ripley/workmech = chassis
workmech.cargo_hold = src
+/obj/item/mecha_parts/mecha_equipment/ejector/detach()
+ var/obj/vehicle/sealed/mecha/ripley/workmech = chassis
+ workmech.cargo_hold = null
+ return ..()
/obj/item/mecha_parts/mecha_equipment/ejector/Destroy()
for(var/atom/stored in contents)
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 392c890ca8fd2..9b0dd29b5fe48 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -213,7 +213,7 @@
instability = 3
icon_state = "hoverboard_holy"
-/obj/vehicle/ridden/scooter/skateboard/hoverboard/make_ridable()
+/obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded/make_ridable()
AddElement(/datum/element/ridable, /datum/component/riding/vehicle/scooter/skateboard/hover/holy)
/obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded/Initialize(mapload)
diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm
index 6726fb02ef150..6042210d01ca1 100644
--- a/code/modules/vehicles/secway.dm
+++ b/code/modules/vehicles/secway.dm
@@ -97,9 +97,9 @@
return ..()
//bullets will have a 60% chance to hit any riders
-/obj/vehicle/ridden/secway/bullet_act(obj/projectile/P)
+/obj/vehicle/ridden/secway/bullet_act(obj/projectile/proj)
if(!buckled_mobs || prob(40))
return ..()
for(var/mob/rider as anything in buckled_mobs)
- rider.bullet_act(P)
- return TRUE
+ return rider.projectile_hit(proj)
+ return ..()
diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm
index 27d2afa88e57d..a5f2c84920d24 100644
--- a/code/modules/vending/games.dm
+++ b/code/modules/vending/games.dm
@@ -57,6 +57,7 @@
/obj/item/reagent_containers/cup/fish_feed = 4,
/obj/item/fish_analyzer = 2,
/obj/item/fishing_rod/telescopic = 1,
+ /obj/item/fish_tank = 1,
),
),
list(
diff --git a/code/modules/vending/mail.dm b/code/modules/vending/mail.dm
new file mode 100644
index 0000000000000..1e091a3128756
--- /dev/null
+++ b/code/modules/vending/mail.dm
@@ -0,0 +1,309 @@
+#define STATE_SORTING "sorting"
+#define STATE_IDLE "idle"
+#define STATE_YES "yes"
+#define STATE_NO "no"
+#define MAIL_CAPACITY 100
+
+/obj/machinery/mailsorter
+ name = "mail sorter"
+ desc = "A large mail sorting unit. Sorting mail since 1987!"
+ icon = 'icons/obj/machines/mailsorter.dmi'
+ icon_state = "mailsorter"
+ base_icon_state = "mailsorter"
+ layer = BELOW_OBJ_LAYER
+ density = TRUE
+ max_integrity = 300
+ integrity_failure = 0.33
+ req_access = list(ACCESS_CARGO)
+ circuit = /obj/item/circuitboard/machine/mailsorter
+
+ var/light_mask = "mailsorter-light-mask"
+ var/panel_type = "panel"
+
+ /// What the machine is currently doing. Can be "sorting", "idle", "yes", "no".
+ var/currentstate = STATE_IDLE
+ /// List of all mail that's inside the mailbox.
+ var/list/mail_list = list()
+ /// The direction in which the mail will be unloaded.
+ var/output_dir = SOUTH
+ /// List of the departments to sort the mail for.
+ var/static/list/sorting_departments = list(
+ DEPARTMENT_ENGINEERING,
+ DEPARTMENT_SECURITY,
+ DEPARTMENT_MEDICAL,
+ DEPARTMENT_SCIENCE,
+ DEPARTMENT_CARGO,
+ DEPARTMENT_SERVICE,
+ DEPARTMENT_COMMAND,
+ )
+ var/static/list/choices = list(
+ "Eject" = icon('icons/hud/radial.dmi', "radial_eject"),
+ "Dump" = icon('icons/hud/radial.dmi', "mail_dump"),
+ "Sort" = icon('icons/hud/radial.dmi', "mail_sort"),
+ )
+
+/// Steps one tile in the `output_dir`. Returns `turf`.
+/obj/machinery/mailsorter/proc/get_unload_turf()
+ return get_step(src, output_dir)
+
+/obj/machinery/mailsorter/screwdriver_act(mob/living/user, obj/item/tool)
+ default_deconstruction_screwdriver(user, "[base_icon_state]-off", base_icon_state, tool)
+ update_appearance(UPDATE_OVERLAYS)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/machinery/mailsorter/crowbar_act(mob/living/user, obj/item/tool)
+ default_deconstruction_crowbar(tool)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/machinery/mailsorter/examine(mob/user)
+ . = ..()
+ . += span_notice("There is[length(mail_list) < 100 ? " " : " no more "]space for [length(mail_list) < 100 ? "[100 - length(mail_list)] " : ""] envelope\s inside.")
+ . += span_notice("There [length(mail_list) >= 2 ? "are" : "is"] [length(mail_list) ? length(mail_list) : "no"] envelope\s inside.")
+ if(panel_open)
+ . += span_notice("Alt-click to rotate the output direction.")
+
+/obj/machinery/mailsorter/Destroy()
+ drop_all_mail()
+ . = ..()
+
+/// Drops all enevlopes on the machine turf. Only occurs when the machine is broken.
+/obj/machinery/mailsorter/proc/drop_all_mail(damage_flag)
+ if(!isturf(get_turf(src)))
+ QDEL_LIST(mail_list)
+ return
+ for(var/obj/item/mail in mail_list)
+ mail.forceMove(src)
+ mail_list -= mail
+
+/// Dumps all envelopes on the `unload_turf`.
+/obj/machinery/mailsorter/proc/dump_all_mail()
+ if(!isturf(get_turf(src)))
+ QDEL_LIST(mail_list)
+ return
+ var/turf/unload_turf = get_unload_turf()
+ for(var/obj/item/mail in mail_list)
+ mail.forceMove(unload_turf)
+ mail.throw_at(unload_turf, 2, 3)
+ mail_list -= mail
+
+/// Validates whether the inserted item is acceptable.
+/obj/machinery/mailsorter/proc/accept_check(obj/item/weapon)
+ var/static/list/accepted_items = list(
+ /obj/item/mail,
+ /obj/item/mail/envelope,
+ /obj/item/mail/junkmail,
+ /obj/item/mail/mail_strike,
+ /obj/item/mail/traitor,
+ /obj/item/paper,
+ )
+ return is_type_in_list(weapon, accepted_items)
+
+/obj/machinery/mailsorter/interact(mob/user)
+ if (!allowed(user))
+ to_chat(user, span_warning("Access denied."))
+ return
+ if (currentstate != STATE_IDLE)
+ return
+ if (length(mail_list) == 0)
+ to_chat(user, span_warning("There's no mail inside!"))
+ return
+ var/choice = show_radial_menu(
+ user,
+ src,
+ choices,
+ require_near = !HAS_SILICON_ACCESS(user),
+ autopick_single_option = FALSE,
+ )
+ if (!choice)
+ return
+ switch (choice)
+ if ("Eject")
+ pick_mail(user)
+ if ("Dump")
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
+ to_chat(user, span_notice("[src] dumps [length(mail_list)] envelope\s on the floor."))
+ dump_all_mail()
+ if ("Sort")
+ sort_mail(user)
+
+/// Prompts the player to select a department to sort the mail for. Returns if `null`.
+/obj/machinery/mailsorter/proc/sort_mail(mob/user)
+ var/sorting_dept = tgui_input_list(user, "Choose the department to sort mail for","Mail Sorting", sorting_departments)
+ if (!sorting_dept)
+ return
+ currentstate = STATE_SORTING
+ update_appearance(UPDATE_OVERLAYS)
+ playsound(src, 'sound/machines/mail_sort.ogg', 20, TRUE)
+ addtimer(CALLBACK(src, PROC_REF(continue_sort), user, sorting_dept), 5 SECONDS)
+
+/// Sorts the mail based on the picked department. Ejects the sorted envelopes onto the `unload_turf`.
+/obj/machinery/mailsorter/proc/continue_sort(mob/user, sorting_dept)
+ var/list/sorted_mail = list()
+ var/total_to_sort = length(mail_list)
+ var/sorted = 0
+ var/unable_to_sort = 0
+
+ for (var/obj/item/mail/some_mail in mail_list)
+ if (!some_mail.recipient_ref)
+ unable_to_sort ++
+ continue
+ var/datum/mind/some_recipient = some_mail.recipient_ref.resolve()
+ if (some_recipient)
+ var/datum/job/recipient_job = some_recipient.assigned_role
+ var/datum/job_department/primary_department = recipient_job.departments_list?[1]
+ var/datum/job_department/main_department = primary_department.department_name
+ if (main_department == sorting_dept)
+ sorted_mail.Add(some_mail)
+ sorted ++
+ else
+ unable_to_sort ++
+ if (length(sorted_mail) == 0)
+ currentstate = STATE_NO
+ update_appearance(UPDATE_OVERLAYS)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
+ say("No mail for the following department: [sorting_dept].")
+ else
+ currentstate = STATE_YES
+ update_appearance(UPDATE_OVERLAYS)
+ say("[sorted] envelope\s sorted successfully.")
+ playsound(src, 'sound/machines/ping.ogg', 20, TRUE)
+ to_chat(user, span_notice("[src] ejects [length(sorted_mail)] envelope\s."))
+ var/turf/unload_turf = get_unload_turf()
+ for (var/obj/item/mail/mail_in_list in sorted_mail)
+ mail_in_list.forceMove(unload_turf)
+ sorted_mail -= mail_in_list
+ mail_list -= mail_in_list
+ addtimer(CALLBACK(src, PROC_REF(check_sorted), unable_to_sort, total_to_sort), 1 SECONDS)
+
+/// Informs the player of the amount of processed envelopes.
+/obj/machinery/mailsorter/proc/check_sorted(mob/user, unable_to_sort, total_to_sort)
+ if (unable_to_sort > 0)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
+ say("Couldn't sort [unable_to_sort] envelope\s.")
+ else
+ playsound(src, 'sound/machines/ping.ogg', 20, TRUE)
+ say("[total_to_sort] envelope\s processed.")
+ addtimer(CALLBACK(src, PROC_REF(update_state_after_sorting)), 1 SECONDS)
+
+/obj/machinery/mailsorter/proc/update_state_after_sorting()
+ currentstate = STATE_IDLE
+ update_appearance(UPDATE_OVERLAYS)
+
+/obj/machinery/mailsorter/item_interaction(mob/user, obj/item/thingy, params)
+ if (istype(thingy, /obj/item/storage/bag/mail))
+ if (length(thingy.contents) < 1)
+ to_chat(user, span_warning("The [thingy] is empty!"))
+ return
+ var/loaded = 0
+ for (var/obj/item/mail in thingy.contents)
+ if (!(mail.item_flags & ABSTRACT) && \
+ !(mail.flags_1 & HOLOGRAM_1) && \
+ accept_check(mail) \
+ )
+ if (length(mail_list) + 1 > MAIL_CAPACITY )
+ to_chat(user, span_warning("There is no space for more mail in [src]!"))
+ return FALSE
+ else if (load(mail, user))
+ loaded++
+ mail_list += mail
+ if(loaded)
+ user.visible_message(span_notice("[user] loads \the [src] with \the [thingy]."), \
+ span_notice("You load \the [src] with \the [thingy]."))
+ if(length(thingy.contents))
+ to_chat(user, span_warning("Some items are refused."))
+ return TRUE
+ else
+ to_chat(user, span_warning("There is nothing in \the [thingy] to put in the [src]!"))
+ return FALSE
+ else if (istype(thingy, /obj/item/mail))
+ if (length(mail_list) + 1 > MAIL_CAPACITY )
+ to_chat(user, span_warning("There is no space for more mail in [src]!"))
+ else
+ thingy.forceMove(src)
+ mail_list += thingy
+ to_chat(user, span_notice("The [src] whizzles as it accepts the [thingy]."))
+
+/// Prompts the user to select an anvelope from the list of all the envelopes inside.
+/obj/machinery/mailsorter/proc/pick_mail(mob/user)
+ if(!length(mail_list))
+ return
+ var/obj/item/mail/mail_throw = tgui_input_list(user, "Choose the envelope to eject","Mail Sorting", mail_list)
+ if(!mail_throw)
+ return
+ currentstate = STATE_SORTING
+ update_appearance(UPDATE_OVERLAYS)
+ playsound(src, 'sound/machines/mail_sort.ogg', 20, TRUE)
+ addtimer(CALLBACK(src, PROC_REF(pick_envelope), user, mail_throw), 50)
+
+/// Ejects a single envelope the player has picked onto the `unload_turf`.
+/obj/machinery/mailsorter/proc/pick_envelope(mob/user, obj/item/mail/mail_throw)
+ to_chat(user, span_notice("[src] reluctantly spits out [mail_throw]."))
+ var/turf/unload_turf = get_unload_turf()
+ mail_throw.forceMove(unload_turf)
+ mail_throw.throw_at(unload_turf, 2, 3)
+ mail_list -= mail_throw
+ currentstate = STATE_IDLE
+ update_appearance(UPDATE_OVERLAYS)
+
+/// Tries to load something into the machine.
+/obj/machinery/mailsorter/proc/load(obj/item/thingy, mob/user)
+ if(ismob(thingy.loc))
+ var/mob/owner = thingy.loc
+ if(!owner.transferItemToLoc(thingy, src))
+ to_chat(owner, span_warning("\the [thingy] is stuck to your hand, you cannot put it in \the [src]!"))
+ return FALSE
+ return TRUE
+ else
+ if(thingy.loc.atom_storage)
+ return thingy.loc.atom_storage.attempt_remove(thingy, src, silent = TRUE)
+ else
+ thingy.forceMove(src)
+ return TRUE
+
+/obj/machinery/mailsorter/click_alt(mob/living/user)
+ if(!panel_open)
+ return CLICK_ACTION_BLOCKING
+ output_dir = turn(output_dir, -90)
+ to_chat(user, span_notice("You change [src]'s I/O settings, setting the output to [dir2text(output_dir)]."))
+ update_appearance(UPDATE_OVERLAYS)
+ return CLICK_ACTION_SUCCESS
+
+
+/obj/machinery/mailsorter/update_overlays()
+ . = ..()
+ if(!powered())
+ return
+ if(!(machine_stat & BROKEN))
+ var/image/mail_output = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_[output_dir]")
+ switch(output_dir)
+ if(NORTH)
+ mail_output.pixel_y = 32
+ if(SOUTH)
+ mail_output.pixel_y = -32
+ if(EAST)
+ mail_output.pixel_x = 32
+ if(WEST)
+ mail_output.pixel_x = -32
+ mail_output.color = COLOR_CRAYON_ORANGE
+ var/mutable_appearance/light_out = emissive_appearance(mail_output.icon, mail_output.icon_state, offset_spokesman = src, alpha = mail_output.alpha)
+ light_out.pixel_y = mail_output.pixel_y
+ light_out.pixel_x = mail_output.pixel_x
+ . += mail_output
+ . += light_out
+ . += mutable_appearance(base_icon_state, currentstate)
+ if(panel_open)
+ . += panel_type
+ if(light_mask && !(machine_stat & BROKEN))
+ . += emissive_appearance(icon, light_mask, src)
+
+/obj/machinery/mailsorter/update_icon_state()
+ icon_state = "[base_icon_state][powered() ? null : "-off"]"
+ if(machine_stat & BROKEN)
+ icon_state = "[base_icon_state]-broken"
+ return ..()
+
+#undef STATE_SORTING
+#undef STATE_IDLE
+#undef STATE_YES
+#undef STATE_NO
+#undef MAIL_CAPACITY
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index 8be4c15851b40..6fdd8f5d25e1c 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -202,6 +202,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE)
/obj/item/storage/bag/mail = 3,
/obj/item/radio/headset/headset_cargo = 3,
/obj/item/clothing/accessory/pocketprotector = 3,
+ /obj/item/flatpack/mailsorter = 1,
)
premium = list(
/obj/item/clothing/head/costume/mailman = 1,
@@ -479,12 +480,6 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE)
/obj/item/plunger = 2,
/obj/item/wirebrush = 2,
/obj/item/radio/headset/headset_srv = 2,
- /obj/item/clothing/head/hats/janitor_doppler = 3,
- /obj/item/clothing/shoes/galoshes/doppler = 2,
- /obj/item/clothing/gloves/botanic_leather/janitor = 3,
- /obj/item/clothing/suit/apron/janitor_cloak = 3,
- /obj/item/clothing/under/rank/civilian/janitor/doppler = 3,
- /obj/item/clothing/under/rank/civilian/janitor/doppler_ct = 3,
)
refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe
default_price = PAYCHECK_CREW
diff --git a/code/modules/wiremod/components/action/laserpointer.dm b/code/modules/wiremod/components/action/laserpointer.dm
index 0eb7f822db1ea..8693a5c1ab18b 100644
--- a/code/modules/wiremod/components/action/laserpointer.dm
+++ b/code/modules/wiremod/components/action/laserpointer.dm
@@ -11,8 +11,8 @@
/// The input port
var/datum/port/input/target_input
- var/datum/port/input/image_pixel_x = 0
- var/datum/port/input/image_pixel_y = 0
+ var/datum/port/input/image_pixel_x
+ var/datum/port/input/image_pixel_y
var/max_range = 7
diff --git a/code/modules/wiremod/components/admin/getvar.dm b/code/modules/wiremod/components/admin/getvar.dm
index 2fe8f18b09e3d..e467963fe345b 100644
--- a/code/modules/wiremod/components/admin/getvar.dm
+++ b/code/modules/wiremod/components/admin/getvar.dm
@@ -45,7 +45,7 @@
output_value.set_datatype(expected_output_type.value)
/obj/item/circuit_component/get_variable/input_received(datum/port/input/port)
- var/atom/object = entity?.value
+ var/datum/object = entity?.value
if(getvar_options.value == "Global")
object = GLOB
diff --git a/code/modules/wiremod/components/math/arithmetic.dm b/code/modules/wiremod/components/math/arithmetic.dm
index 083616f1e0e54..20474ec949295 100644
--- a/code/modules/wiremod/components/math/arithmetic.dm
+++ b/code/modules/wiremod/components/math/arithmetic.dm
@@ -2,6 +2,7 @@
#define COMP_ARITHMETIC_SUBTRACT "Subtract"
#define COMP_ARITHMETIC_MULTIPLY "Multiply"
#define COMP_ARITHMETIC_DIVIDE "Divide"
+#define COMP_ARITHMETIC_MODULO "Modulo"
#define COMP_ARITHMETIC_MIN "Minimum"
#define COMP_ARITHMETIC_MAX "Maximum"
@@ -34,6 +35,7 @@
COMP_ARITHMETIC_SUBTRACT,
COMP_ARITHMETIC_MULTIPLY,
COMP_ARITHMETIC_DIVIDE,
+ COMP_ARITHMETIC_MODULO,
COMP_ARITHMETIC_MIN,
COMP_ARITHMETIC_MAX,
)
@@ -75,6 +77,8 @@
result = null
break
result /= value
+ if(COMP_ARITHMETIC_MODULO)
+ result %= value
if(COMP_ARITHMETIC_MAX)
result = max(result, value)
if(COMP_ARITHMETIC_MIN)
@@ -86,5 +90,6 @@
#undef COMP_ARITHMETIC_SUBTRACT
#undef COMP_ARITHMETIC_MULTIPLY
#undef COMP_ARITHMETIC_DIVIDE
+#undef COMP_ARITHMETIC_MODULO
#undef COMP_ARITHMETIC_MIN
#undef COMP_ARITHMETIC_MAX
diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm
index 29147aefa9458..b31f3ce151bcd 100644
--- a/code/modules/wiremod/shell/brain_computer_interface.dm
+++ b/code/modules/wiremod/shell/brain_computer_interface.dm
@@ -93,8 +93,6 @@
var/datum/port/output/user_port
- var/datum/weakref/user
-
var/obj/item/organ/cyberimp/bci/bci
/obj/item/circuit_component/bci_core/populate_ports()
@@ -111,19 +109,18 @@
/obj/item/circuit_component/bci_core/proc/update_charge_action()
CIRCUIT_TRIGGER
- var/mob/living/carbon/resolved_owner = user?.resolve()
if (show_charge_meter.value)
if (charge_action)
return
charge_action = new(src)
- if (resolved_owner)
- charge_action.Grant(resolved_owner)
+ if (bci.owner)
+ charge_action.Grant(bci.owner)
bci.actions += charge_action
else
if (!charge_action)
return
- if (resolved_owner)
- charge_action.Remove(resolved_owner)
+ if (bci.owner)
+ charge_action.Remove(bci.owner)
bci.actions -= charge_action
QDEL_NULL(charge_action)
@@ -139,9 +136,8 @@
bci = shell
if (charge_action)
- var/mob/living/carbon/resolved_owner = user?.resolve()
- if (resolved_owner)
- charge_action.Remove(resolved_owner)
+ if (bci.owner)
+ charge_action.Remove(bci.owner)
bci.actions -= charge_action
QDEL_NULL(charge_action)
@@ -158,14 +154,13 @@
if (!sent_message)
return
- var/mob/living/carbon/resolved_owner = user?.resolve()
- if (isnull(resolved_owner))
+ if (isnull(bci.owner))
return
- if (resolved_owner.stat == DEAD)
+ if (bci.owner.stat == DEAD)
return
- to_chat(resolved_owner, "You hear a strange, robotic voice in your head... \"[span_robot("[html_encode(sent_message)]")]\"")
+ to_chat(bci.owner, "You hear a strange, robotic voice in your head... \"[span_robot("[html_encode(sent_message)]")]\"")
/obj/item/circuit_component/bci_core/proc/on_organ_implanted(datum/source, mob/living/carbon/owner)
SIGNAL_HANDLER
@@ -173,7 +168,6 @@
update_charge_action()
user_port.set_output(owner)
- user = WEAKREF(owner)
RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(on_borg_charge))
@@ -183,7 +177,6 @@
SIGNAL_HANDLER
user_port.set_output(null)
- user = null
UnregisterSignal(owner, list(
COMSIG_ATOM_EXAMINE,
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index f6f21b7e1eed1..e524bdee5cb94 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -23,26 +23,19 @@
GLOB.zombie_infection_list -= src
. = ..()
-/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags)
+/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/new_owner, special = FALSE, movement_flags)
. = ..()
-
+ RegisterSignal(new_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died))
START_PROCESSING(SSobj, src)
-/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE)
+/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/new_owner, special = FALSE, movement_flags)
. = ..()
STOP_PROCESSING(SSobj, src)
- if(iszombie(M) && old_species && !special)
- M.set_species(old_species)
+ if(iszombie(new_owner) && old_species && !special)
+ new_owner.set_species(old_species)
if(timer_id)
deltimer(timer_id)
-
-/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special)
- . = ..()
- RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died))
-
-/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special)
- . = ..()
- UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH)
+ UnregisterSignal(new_owner, COMSIG_LIVING_DEATH)
/obj/item/organ/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed)
SIGNAL_HANDLER
diff --git a/config/config.txt b/config/config.txt
index 96a8c869f4c7c..510988803c616 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -9,6 +9,7 @@ $include resources.txt
$include interviews.txt
$include lua.txt
$include auxtools.txt
+$include map_vote.txt
# You can use the @ character at the beginning of a config option to lock it from being edited in-game
# Example usage:
@@ -609,3 +610,9 @@ UPLOAD_LIMIT 524288
## Restricts admin client uploads to the server, defined in bytes, default is 5MB
UPLOAD_LIMIT_ADMIN 5242880
+
+## Uncomment to allow admins with +DEBUG to start the byond-tracy profiler during the round.
+#ALLOW_TRACY_START
+
+## Uncomment to allow admins with +DEBUG to queue the next round to run the byond-tracy profiler.
+#ALLOW_TRACY_QUEUE
diff --git a/config/game_options.txt b/config/game_options.txt
index 239ec8d43e1b9..952a02651395a 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -514,6 +514,9 @@ MAXFINE 2000
## How many played hours of DRONE_REQUIRED_ROLE required to be a Maintenance Done
#DRONE_ROLE_PLAYTIME 14
+## Will drones be restricted from interacting with the supermatter and atmopherics area?
+#DRONE_AREA_INTERACTION_RESTRICT 1
+
## Whether native FoV is enabled for all people.
#NATIVE_FOV
diff --git a/config/maps.txt b/config/maps.txt
index 3004238631e8b..ccb393621480c 100644
--- a/config/maps.txt
+++ b/config/maps.txt
@@ -37,11 +37,6 @@ map metastation
votable
endmap
-map northstar
- minplayers 50
- votable
-endmap
-
map tramstation
minplayers 35
votable
diff --git a/dependencies.sh b/dependencies.sh
index d9b286e61aed5..1046b72c12d77 100644
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -8,7 +8,7 @@ export BYOND_MAJOR=515
export BYOND_MINOR=1637
#rust_g git tag
-export RUST_G_VERSION=3.3.0
+export RUST_G_VERSION=3.5.1
#node version
export NODE_VERSION_LTS=22.11.0
diff --git a/html/changelogs/AutoChangeLog-pr-87773.yml b/html/changelogs/AutoChangeLog-pr-87773.yml
deleted file mode 100644
index beb2605ec2748..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87773.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Holoo-1"
-delete-after: True
-changes:
- - bugfix: "fixed roundstart borgs not being synced to ai"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87818.yml b/html/changelogs/AutoChangeLog-pr-87818.yml
deleted file mode 100644
index 84037f8dcd987..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87818.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed special DNA infusions from squids and pufferfish."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87819.yml b/html/changelogs/AutoChangeLog-pr-87819.yml
deleted file mode 100644
index 5e7cfe01c003d..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87819.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed bombing non-turfs fishing spots not spawning loot correctly."
- - balance: "Explosive bombing no longer spawns bottled messages/photos."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87825.yml b/html/changelogs/AutoChangeLog-pr-87825.yml
deleted file mode 100644
index 15258c679ad04..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87825.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed fish not being able to reproduce with other fish of the same type without the crossbreeding trait."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87827.yml b/html/changelogs/AutoChangeLog-pr-87827.yml
deleted file mode 100644
index 153c3581b473c..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87827.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed fish still being hungry when fed if in aquarium with the 'growth and reproduction' option disabled."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87832.yml b/html/changelogs/AutoChangeLog-pr-87832.yml
deleted file mode 100644
index 4ebb0e20d35a8..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87832.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "SmArtKar"
-delete-after: True
-changes:
- - bugfix: "Xenobio console puts sucked up slimes into stasis so they no longer split up inside"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87834.yml b/html/changelogs/AutoChangeLog-pr-87834.yml
deleted file mode 100644
index 8a0ada8f2cd2d..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87834.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "harryob"
-delete-after: True
-changes:
- - bugfix: "certain tgui inputs no longer require 2 clicks to open"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87835.yml b/html/changelogs/AutoChangeLog-pr-87835.yml
deleted file mode 100644
index ab2ded648b722..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87835.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "sqnztb"
-delete-after: True
-changes:
- - map: "tramstation tool storage trash no longer routes to the barber shop"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87836.yml b/html/changelogs/AutoChangeLog-pr-87836.yml
deleted file mode 100644
index dcac7fdd74dd8..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87836.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Goat"
-delete-after: True
-changes:
- - qol: "You can now examine labelers to tell how many more labels it has."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87837.yml b/html/changelogs/AutoChangeLog-pr-87837.yml
deleted file mode 100644
index 96a44be2edb83..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87837.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "tmyqlfpir"
-delete-after: True
-changes:
- - bugfix: "Airlock shells are properly assigned circuit cameras modules"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87838.yml b/html/changelogs/AutoChangeLog-pr-87838.yml
deleted file mode 100644
index 6e8027cf19a73..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87838.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Neocloudy"
-delete-after: True
-changes:
- - bugfix: "examine tags now use regex for checking if a tag has \"and\" in it"
- - spellcheck: "the tooltip for the morbid examine tag doesn't try to use html anymore"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87839.yml b/html/changelogs/AutoChangeLog-pr-87839.yml
deleted file mode 100644
index 43aafa3b23640..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87839.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Rhials"
-delete-after: True
-changes:
- - qol: "Makes some minor updates to Runtimestation, including event spawn points and a cargo bounty pad."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87840.yml b/html/changelogs/AutoChangeLog-pr-87840.yml
deleted file mode 100644
index 2ce6d8d10d9c9..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87840.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "EmptyLullaby"
-delete-after: True
-changes:
- - bugfix: "Goliath cloaks are no longer so hard on the calves that they force digitigrade legs to disable."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87841.yml b/html/changelogs/AutoChangeLog-pr-87841.yml
deleted file mode 100644
index 83704f38ee57b..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87841.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Goat"
-delete-after: True
-changes:
- - qol: "Curator console's inventory screen will now update when you change pages or remove items."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87843.yml b/html/changelogs/AutoChangeLog-pr-87843.yml
deleted file mode 100644
index 168494cd29b45..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87843.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Goat"
-delete-after: True
-changes:
- - map: "The library's scanner on Birdshot is now close enough to connect to the computer and was also given a book binder."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87845.yml b/html/changelogs/AutoChangeLog-pr-87845.yml
deleted file mode 100644
index 9a9672e710500..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87845.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "timothymtorres"
-delete-after: True
-changes:
- - bugfix: "Fix missing screentips plasmaman helmets and MOD suit hat stabilizer helmets."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87846.yml b/html/changelogs/AutoChangeLog-pr-87846.yml
deleted file mode 100644
index 3423cb647db77..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87846.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "timothymtorres"
-delete-after: True
-changes:
- - bugfix: "Fix broken link to issue manager guide in Github contributor guide"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87847.yml b/html/changelogs/AutoChangeLog-pr-87847.yml
deleted file mode 100644
index b1290b19944e4..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87847.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Absolucy"
-delete-after: True
-changes:
- - bugfix: "You can no longer crush random unsuspecting people with vendors by ventcrawling while cursed."
- - qol: "AFK players don't count as \"watchers\" for cursed stuff."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87849.yml b/html/changelogs/AutoChangeLog-pr-87849.yml
deleted file mode 100644
index 394c7b39a0d9d..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87849.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "timothymtorres"
-delete-after: True
-changes:
- - bugfix: "Fix holymelon armor not inheriting magic resistance"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87850.yml b/html/changelogs/AutoChangeLog-pr-87850.yml
deleted file mode 100644
index b84618840865c..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87850.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "OrionTheFox"
-delete-after: True
-changes:
- - bugfix: "(DeltaStation) Fixed unwired APCs in the Electronic Marketing Den, Abandoned Garden, Security Maintenance, and Private Investigator's Office"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87851.yml b/html/changelogs/AutoChangeLog-pr-87851.yml
deleted file mode 100644
index e2c0c757c4ee3..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87851.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "SmArtKar"
-delete-after: True
-changes:
- - bugfix: "Fixed hat stabilizer ignoring clothing worn_y_offset"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87852.yml b/html/changelogs/AutoChangeLog-pr-87852.yml
deleted file mode 100644
index 50ad199495d90..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87852.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "SmArtKar"
-delete-after: True
-changes:
- - bugfix: "Fixed basic mob performance impact created by the factorio PR"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87855.yml b/html/changelogs/AutoChangeLog-pr-87855.yml
deleted file mode 100644
index e31cdb3c8d3a2..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87855.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "00-Steven"
-delete-after: True
-changes:
- - bugfix: "Fixed auto-reel fishing line item catching logic."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87856.yml b/html/changelogs/AutoChangeLog-pr-87856.yml
deleted file mode 100644
index df597780aa209..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-87856.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-author: "SyncIt21"
-delete-after: True
-changes:
- - bugfix: "flatpacker accepts circuitboards with left click"
- - bugfix: "rcd can deconstruct tables"
- - bugfix: "you can open panels of destructive analyzers with screwdriver right click. Use right click or combat mode with items for default interactions"
- - bugfix: "flatpacker & machines with local storage can be RPED'd again"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-88254.yml b/html/changelogs/AutoChangeLog-pr-88254.yml
new file mode 100644
index 0000000000000..e2ee830005d84
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-88254.yml
@@ -0,0 +1,5 @@
+author: "SyncIt21"
+delete-after: True
+changes:
+ - bugfix: "Turbine converts energy to power correctly & shows correct reading with multitool"
+ - refactor: "turbine code has been overall improved. report bugs on github"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-88435.yml b/html/changelogs/AutoChangeLog-pr-88435.yml
new file mode 100644
index 0000000000000..0f91aa47c2209
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-88435.yml
@@ -0,0 +1,4 @@
+author: "tontyGH"
+delete-after: True
+changes:
+ - bugfix: "Underlining your messages in loud mode shouldn't break anymore"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-88492.yml b/html/changelogs/AutoChangeLog-pr-88492.yml
new file mode 100644
index 0000000000000..3b1598c748c0f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-88492.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+ - qol: "Jetpacks should ACTUALLY feel better now"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-88508.yml b/html/changelogs/AutoChangeLog-pr-88508.yml
new file mode 100644
index 0000000000000..30b95cd438a3c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-88508.yml
@@ -0,0 +1,4 @@
+author: "JoshAdamPowell"
+delete-after: True
+changes:
+ - map: "In the new year's budget the syndicate have decided that chemists need beakers to do their job properly."
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-11.yml b/html/changelogs/archive/2024-11.yml
index dc1ca68e5f858..571b5e5983590 100644
--- a/html/changelogs/archive/2024-11.yml
+++ b/html/changelogs/archive/2024-11.yml
@@ -401,3 +401,687 @@
grungussuss:
- qol: you can now mitigate motion sickness from screen shake by enabling "darken
screen shake" in preferences
+2024-11-13:
+ 00-Steven:
+ - bugfix: Fixed auto-reel fishing line item catching logic.
+ Absolucy:
+ - bugfix: You can no longer crush random unsuspecting people with vendors by ventcrawling
+ while cursed.
+ - qol: AFK players don't count as "watchers" for cursed stuff.
+ EmptyLullaby:
+ - bugfix: Goliath cloaks are no longer so hard on the calves that they force digitigrade
+ legs to disable.
+ Ghommie:
+ - bugfix: Fixed special DNA infusions from squids and pufferfish.
+ - bugfix: Fixed fish still being hungry when fed if in aquarium with the 'growth
+ and reproduction' option disabled.
+ - bugfix: Fixed bombing non-turfs fishing spots not spawning loot correctly.
+ - balance: Explosive bombing no longer spawns bottled messages/photos.
+ - bugfix: Fixed fish not being able to reproduce with other fish of the same type
+ without the crossbreeding trait.
+ Goat:
+ - map: The library's scanner on Birdshot is now close enough to connect to the computer
+ and was also given a book binder.
+ - qol: Curator console's inventory screen will now update when you change pages
+ or remove items.
+ - qol: You can now examine labelers to tell how many more labels it has.
+ Holoo-1:
+ - bugfix: fixed roundstart borgs not being synced to ai
+ Neocloudy:
+ - bugfix: examine tags now use regex for checking if a tag has "and" in it
+ - spellcheck: the tooltip for the morbid examine tag doesn't try to use html anymore
+ OrionTheFox:
+ - bugfix: (DeltaStation) Fixed unwired APCs in the Electronic Marketing Den, Abandoned
+ Garden, Security Maintenance, and Private Investigator's Office
+ Rhials:
+ - qol: Makes some minor updates to Runtimestation, including event spawn points
+ and a cargo bounty pad.
+ SmArtKar:
+ - bugfix: Xenobio console puts sucked up slimes into stasis so they no longer split
+ up inside
+ - bugfix: Fixed basic mob performance impact created by the factorio PR
+ - bugfix: Fixed hat stabilizer ignoring clothing worn_y_offset
+ SyncIt21:
+ - bugfix: flatpacker accepts circuitboards with left click
+ - bugfix: rcd can deconstruct tables
+ - bugfix: you can open panels of destructive analyzers with screwdriver right click.
+ Use right click or combat mode with items for default interactions
+ - bugfix: flatpacker & machines with local storage can be RPED'd again
+ harryob:
+ - bugfix: ghosts observing ghosts can no longer click on their screen alerts
+ - bugfix: certain tgui inputs no longer require 2 clicks to open
+ sqnztb:
+ - map: tramstation tool storage trash no longer routes to the barber shop
+ timothymtorres:
+ - bugfix: Fix holymelon armor not inheriting magic resistance
+ - bugfix: Fix broken link to issue manager guide in Github contributor guide
+ - bugfix: Fix missing screentips plasmaman helmets and MOD suit hat stabilizer helmets.
+ tmyqlfpir:
+ - bugfix: Airlock shells are properly assigned circuit cameras modules
+2024-11-14:
+ 00-Steven:
+ - bugfix: A bitrunner avatar spawning with the exact same name as a name currently
+ on the records no longer updates that record to match when the hacker alias
+ gets applied.
+ - qol: Net avatar ID cards use the net avatar's name instead of being generic.
+ Fikou:
+ - bugfix: a modsuit being deleted will delete its parts correctly
+ - bugfix: a modsuit needs its boots out to be moved by an AI
+ - qol: you can extend or retract a modsuits parts from the ui panel
+ - qol: modsuit cores have colorcoded charge bars in the ui panel
+ - qol: weapon recall module makes you pick up the weapon if its on your tile
+ - code_imp: tether module has its own button for cutting tethers instead of stealing
+ it from pins
+ - bugfix: armor booster doesnt protect from head injury without the helmet on
+ LT3:
+ - bugfix: Server config will now read the map vote configuration file
+ MTandi:
+ - qol: Chem dispenser UI droplets now have a shadow to not blend with the background
+ Majkl-J:
+ - qol: mech fabricator output direction can now be changed with a drag pull
+ Rhials:
+ - qol: Crayon bounties are less demanding, and require less crayons for payout.
+ SmArtKar:
+ - bugfix: Fixed ayylmao's brain examine lines
+ - bugfix: Fixed stingbangs using wrong sprites
+ - bugfix: Fixed detective action palette being invisible
+ SyncIt21:
+ - bugfix: holosign creators interact with storage items correctly
+ grungussuss:
+ - sound: party popper no longer makes reagent sloshing sounds
+ - sound: shoes pickup volume is louder now
+ mc-oofert:
+ - bugfix: meatlovers flatbread no longer tastes raw
+ timothymtorres:
+ - bugfix: Fix using chairs in holodeck to create infinite metal
+ xPokee, waterpig:
+ - code_imp: cleaned up beserk.dm
+2024-11-15:
+ Absolucy:
+ - refactor: The ORM, "ore container", and order console UIs (produce, mining, bitrunner
+ vendors) now load icons in a more efficient manner.
+ - bugfix: Admin-deleting a mob now ghostizes it beforehand, preventing a runtime
+ error.
+ Ben10Omintrix:
+ - bugfix: fixes seedling ai getting stuck when trying to refill water from emptied
+ water tanks
+ Dawnseer:
+ - bugfix: removes the gas mask check for if the gas mask mouth is covered. Now it
+ only checks for filters and other cigs
+ GremlinSeeker:
+ - bugfix: Syndicate Biodome fixes
+ Majkl-J:
+ - bugfix: Fixes SSWardrobe stealing a camera from the camera app when on a dummy,
+ causing a harddel
+ Melbert:
+ - image: Speeds up some frames of the dust animation slightly
+ - image: Dust/remains spawned after being dusted are now aligned towards the bottom
+ of the tile
+ - image: Bigger mobs now produce bigger piles of ash
+ - image: Plasmamen now dust into plasma bones
+ SmArtKar:
+ - bugfix: Many years later, projectiles finally can pass through portals - this
+ time without crashing the server.
+ - bugfix: Fixed tenacity effect printing its messages when it shouldn't be, and
+ not removing its' effects when it should've.
+ - bugfix: Fixed scanner gates saying both bypass and detection lines when malfunctioning
+ SyncIt21:
+ - bugfix: Fixed visual glitches when inserting items from an slot other than the
+ hands into evidence bags & other storages that have quick gather mode enabled
+ - bugfix: silo connection on some machines won't time out when changing FPS settings
+ - code_imp: improved attack chain code for silo connection
+ Time-Green:
+ - bugfix: Nooartrium heart damage can no longer be bypassed with non-organic hearts
+ carlarctg:
+ - bugfix: you now snip cuffs with right click to prevent accidental cuts
+ - spellcheck: 'spellecheck: existence not existance'
+ - balance: Significantly buffed the anomalock modules.
+ - balance: Anomalock modules can be used with eachother.
+ - balance: Antigravity module costs 2 complexity.
+ - balance: Teleporter module is thrice as fast at teleporting with a slightly reduced
+ cooldown, but has a much larger power cost.
+ - code_imp: Changed how teleporter tracks maximum range to be less painful to the
+ end user.
+ - refactor: Refactored LoS checks to be a proc on atom, los_check
+ - balance: Kinesis module's default range has been extended to 8.
+ - balance: Kinesis module can drag around people in critical condition or worse.
+ - bugfix: vampires are a human subtype & have stomachs/lungs
+ grungussuss:
+ - sound: sandstone blocks have the correct sound now
+ - qol: added feedback for cutting mulebot wires
+ larentoun:
+ - bugfix: Fixes a runtime when wingless creature flaps their wings
+ mc-oofert:
+ - bugfix: Added dehydrator to birdshot kitchen. Surgery theatre now has a surgery
+ tray and surplus prosthetics. An unwired hallway APC is now wired. 1st SM filter
+ is now set to Nitrogen. Chemistry closet in pharmacy now contains extra chemicals
+ to compensate for not having a chemical storage. Atmos air for distro mixer
+ now mixes correctly
+ timothymtorres:
+ - balance: Lower the telecrystal price of the singularity beacon from 10 to 4 and
+ reduce the timer to 20 minutes before it can be purchased.
+ xPokee:
+ - bugfix: fixed brains turning invisible after being washed
+2024-11-16:
+ Hardly:
+ - bugfix: Fixes watchers not attacking their targets in melee range
+ TheRealSpriteMan1337:
+ - spellcheck: Fixed some of the typos in computers' build & repair tips, adjusted
+ wording
+ Xander3359:
+ - bugfix: fix furious steel and blade ascension being jank
+ carlarctg:
+ - rscadd: Adds the Perceptomatrix Helm, a hallucination anomaly core item
+ zxaber:
+ - bugfix: Firelocks opened by a mech will correctly close when the mech moves out
+ of range.
+2024-11-17:
+ Fikou:
+ - bugfix: xeno princesses no longer lose their unique identifier
+ JagOfTroy:
+ - bugfix: 'Fixed Automatic Announcement System bug with the Research Node Announcement
+ message not updating properly. It will now properly save and announce whatever
+ input the user desires!
+
+ :cl:'
+ SmArtKar:
+ - rscdel: Removed N-Spect scanner's and scanner gate's ability to scan people for
+ contraband.
+ - bugfix: Fixed cats not begging people for food
+ - bugfix: Fixed a mixup in ripley plate sprites
+ - bugfix: Fixed tethers being able to move immovable objects (and delete gravgens)
+ - bugfix: Fixed a missing arg in fish release code causing runtimes
+ carlarctg:
+ - bugfix: '[no gbp] renmoves bartender skillchip from chipped quirk'
+ timothymtorres:
+ - bugfix: Fix radio jammer screentips
+2024-11-18:
+ BurgerBB:
+ - qol: Reworks the Druggy visual effect to cause less eye strain.
+ EOBGames:
+ - rscadd: DONK CO. HAS UNVEILED A NEW RANGE OF READY-DONK PRODUCTS! GET THEM AT
+ CARGO TODAY!
+ - image: 'READY-DONK: NEW LOOK, SAME GREAT TASTE'
+ EnterTheJake:
+ - rscadd: New internal sleeper module for the Clarke.
+ - balance: Clarke Integrity has been bumped from 200 to 250 HP, melee armor bumped
+ from 20 to 40.
+ - balance: Exo mining module can now be used to scan vents and begin the wave defense
+ event.
+ - balance: The Clarke Ore Storage Module can now collect boulders and internally
+ smelt them.
+ - balance: Mech Pka is now bundled within the Clarke tech node, it now does more
+ damage and comes with the AOE upgrade preinstalled.
+ - balance: Exo mining drills are now a utility module rather than a weapon.
+ - balance: Applied Bluespace Research and Controlled Plasma tech nodes are no longer
+ hardlocked behind surveys, they instead favor from a discount if they are completed.
+ - bugfix: Fixes Exo Mech modules not granting life support to housed patients.
+ Ghommie:
+ - bugfix: You can no longer deploy survival/fishing capsules by the holodeck and
+ permanently brick it.
+ - balance: Tendril chests and mystery boxes can now be fished multiple times with
+ a 30 minutes cooldown.
+ - balance: other previously fishing loot available in limited amount, such as adamantine
+ and runite from plasma rivers, regenerate over time.
+ - rscadd: Using the gibber on people with fish tails now yield some fish tail fillets.
+ OrionTheFox:
+ - code_imp: The Greytide event will now play bolt audio and update the icon when
+ toggling door bolts.
+ Sothanforax:
+ - sound: Added sounds for the escape menu opening/closing/being open
+ TheBoondock:
+ - sound: added ignition and roaring fire sound to plasma/tritium fire
+ Vekter:
+ - map: Removes extra privacy shutters in the HoS' office on NebulaStation
+ Xackii:
+ - qol: heretic living heart now points to the target with an arrow.
+ - bugfix: pinpointer no longer breaks if scanned target disappears from our reality.
+ aaaa1023:
+ - bugfix: Birdshot Atmospherics now has an Air alarm
+ - bugfix: Birdshot Atmospherics pumping room APC is now connected to the main grid
+ - bugfix: Birdshot Port Primary Hallway APC is now connected to the main grid
+ carlarctg:
+ - bugfix: actually adds the perceptomatrix to the techweb
+ - bugfix: Reverts change that altered pyrokinesis recipe to require firebreath instead
+ of fiery sweat
+ grungussuss:
+ - sound: changed the welding hat toggle sfx
+ - qol: some hats now "compress" your hair to fit it the headwear better
+ - bugfix: xenos take more damage to husk
+ mc-oofert:
+ - bugfix: You may no longer use a climbing hook to phase through catwalks and such.
+ On the other hand, improved climbing hook aim and you may climb onto lattices
+ or catwalks
+ - balance: makes reputation locked gear instead be very very expensive and get cheaper
+ as you get to that rep
+ - bugfix: manufacturing sort-routers can no longer crawl
+ sqnztb:
+ - map: metastation's security mail chute no longer has an extra erroneous pipe.
+ thegrb93:
+ - bugfix: Fix broken cyborg inducer
+ timothymtorres:
+ - map: Fix missing CE Office Shutter Buttons on Icebox. Also removes a duplicate
+ keycard auth device.
+2024-11-19:
+ Fikou:
+ - bugfix: Fixed chaplain divine archer outfit rolled down sprite
+ Jackal-boop:
+ - balance: syndicate GMO researchers have increased the effectiveness of their 'hot
+ potato'
+ carlarctg:
+ - qol: Improved fish lure descriptions to be easier to grok
+ fevryk:
+ - rscadd: Added new weapon carpenter hammer to black market uplink
+ - rscadd: Added killsound feature
+ tontyGH:
+ - bugfix: Haunted 8-balls are now usable again (FINALLY)
+ - bugfix: Haunted 8-ball UI now correctly displays your selected answer
+ - qol: Made the haunted 8-ball UI look a pinch better. Just a smidge.
+ - code_imp: Haunted 8-balls no longer use a duplicate answer list
+2024-11-20:
+ Ben10Omintrix:
+ - refactor: floorbots have been refactored, please report any bugs
+ - rscadd: adds repairbots to the game!
+ Dawnseer:
+ - rscadd: Unleashed a great evil upon hoplines, in the form of a paperwork implant.
+ Dmeto:
+ - map: 'removes a unused disposal pipe from Cargo, fixes mining dock intercom.
+
+ map:adds access helper to disposals south airlock.'
+ EnterTheJake:
+ - bugfix: FIxes insulated modsuits not granting full insulation.
+ Gaxeer:
+ - bugfix: AI controlled monkeys can again activate items in active hand
+ Hatterhat:
+ - bugfix: Crate Chaos's encrypted cache is now randomly placed again.
+ Jewelry-x:
+ - bugfix: changeling memories of victims no longer include `` and ` `
+ Melbert:
+ - balance: Having a broken arm affects your accuracy with ranged weapons fired with
+ that arm. Utilizing a painkiller will nullify this effect, however.
+ - balance: Painkillers will prevent your punches from being cancelled due to having
+ a broken arm. You'll still take damage, though.
+ - balance: Being drunk now affects your accuracy with ranged weapon. The bartender
+ is immune to this effect via their skillchip.
+ - code_imp: A lot of code involving left and right hand handling has been cleaned
+ up, easier to read. Report any oddities, like left and rights being flipped
+ grungussuss:
+ - bugfix: mobs can no longer hear their own breathing while deaf
+ - bugfix: a bug regarding orderable items has been fixed
+ - server: drone area restrictions are now config
+ - balance: drones now take less time to become "un-shy" of something after it's
+ been touched.
+ larentoun:
+ - bugfix: 'Mafia: Psych''s reveal ability now correctly has a single use'
+ - bugfix: 'Mafia: Fugitive''s vest ability now correctly should have two uses'
+2024-11-21:
+ Ghommie:
+ - refactor: refactored aquariums heavily. Please report any fishy bug.
+ - rscadd: Added portable/handheld fish tanks to the game. They can be crafted with
+ an aquarium kit and 5 sheets of plastic. While portable, they cannot store fish
+ that are too big or if there're too many already. This restriction can be removed
+ by using the new "bluespace fish tank kit" techweb item.
+ - map: Replaced the lawyer's stationary pet aquarium with a fish tank, so you can
+ carry McGill around.
+ - balance: Reduced the iron cost of stationary aquariums a little.
+ - bugfix: Fixed a couple nits with the water visuals not appearing on objects with
+ a very low layer (rendered just above the floor), as well as atmos pipes looking
+ a bit funky on untiled turfs beside catwalks and platings when beside connected,
+ under-floored pipes.
+ SmArtKar:
+ - refactor: Firestacks, burning/acid/decaying effects and (brought back after being
+ temporarily removed) slimed status effects now use a new "shared" particles
+ system, which should considerably improve client performance when encountering
+ a lot of burning/slimed entities.
+ - bugfix: Berets no longer make you go bald above your earline.
+ SyncIt21:
+ - bugfix: plumbing pill press advertises the correct maximum volume of your selected
+ product instead of always 50u on the UI
+ - code_imp: plumbing pill press validates selected container to prevent href exploits
+ - code_imp: plumbing pill press validates input volume to see if it's a number
+ grungussuss:
+ - sound: the glove pickup sound will no longer play for modsuits undeploying
+ mc-oofert:
+ - qol: alerts that do stuff when clicked glow gold
+ necromanceranne:
+ - balance: 'After months of rigorous training montages, handwork and dedication.
+ Nanotrasen can proudly say that their staff is now more capable of performing
+ various judo techniques to disable and incapacitate any would-be troublemakers.
+ They have proclaimed the Spinward ''safer than ever''. Unfortunately for Nanotrasen
+ and the Spinward as a whole,, most of these same techniques have been incorporated
+ into the Tunnel Arts through the use of Khan spies. (See: Extremely bored assistants
+ who are getting tired of suplexing the clown). Is this the end for the Spinward
+ Sector? Will anyone be able to stop Maint Khan''s advance?'
+ - balance: Being grabbed can be harder to break out of depending on how vulnerable
+ you are; being prone, staggered and wounded, or just being a pushover (the quirk)
+ makes it easier to keep hold of you. Particularly if more than one of these
+ is true. Though if you're a fishman, you probably can't get grabbed at all.
+ - balance: Your arm power now contributes to the stamina damage someone is dealt
+ when they attempt and fail to break out of your grab.
+ - balance: Bartenders while drunk are great at grappling.
+ - bugfix: The values used for determining at what point you must resist if you have
+ taken damage and are staggered are now correctly set to 40, not incorrectly
+ to 80.
+ timothymtorres, MrMelbert:
+ - bugfix: Fix lustrous brain trauma not removing during polymorph
+2024-11-22:
+ Acantharctia:
+ - balance: Numb quirk now stops you from screaming and seeing the damage overlay
+ when damaged. Better keep a close eye on your health.
+ Ben10Omintrix:
+ - bugfix: fixes monkey AI not being able to attack
+ Dawnseer:
+ - bugfix: Turns Cap (White) into a white cap in loadout
+ KikoWen0:
+ - map: Nebula Arrivals stairs are now easier to navigate
+ - map: Fixed unconnected wire in dormitories on Nebula
+ - map: Fixed engineers having free pass to cargo department on Nebula
+ Melbert:
+ - bugfix: Monkeys no longer ignore basic rules such as "you can't escape a passive
+ grab if you're cuffed or in crit"
+ - bugfix: Fixes some atmos and record related log messages
+ SmArtKar:
+ - bugfix: Reconnected Wawa's sci to atmos distro
+ - bugfix: Fixed incorrect coverage descriptions
+ - refactor: Converted most common particle sources to use our new pooling system.
+ - bugfix: Fixed all hoverboards having holyboard space slowdown effect
+ - bugfix: Fixed limping status effect harddels
+ SyncIt21:
+ - bugfix: Labour stacker machine gives points for sheets again
+ carlarctg:
+ - rscdel: Replaces UZI domain reward with ballistic chameleon gun
+ - rscadd: Also added a separate possible reward for an uzi bitrunning disk.
+ grungussuss:
+ - sound: the "curse you" sfx has been replaced
+ - admin: admins can now control the volume that some admin triggered sounds are
+ played at
+ jlsnow301:
+ - bugfix: TGUI panel light mode should no longer be gross gray
+ mc-oofert:
+ - rscdel: removed quiet succumb which is pointless now that the bug got fixed
+ necromanceranne:
+ - image: Cleans up some redundant pixels on the bowman sprites.
+ - image: Kitchen and eating utensils now have suit storage sprites.
+ - code_imp: The cost for Core Equipment for nuclear operatives will always be equal
+ to the cost of the contained items if purchased directly from the uplink.
+ - bugfix: Improves the descriptions for some uplink entries.
+ - bugfix: Correctly applies resistance and EMP proofing to the broadcasting camera
+ so that it doesn't cause weird things to happen.
+ tontyGH:
+ - code_imp: made /proc/getviewsize() pure
+ - refactor: mob/eye/ai_eye has been restructured, now inheriting from a generic
+ mob/eye/camera type
+ - refactor: advanced cameras and their subtypes are now mob/eye/camera/remote subtypes
+ - code_imp: the cameranet no longer expects the user to be an AI eye
+ - code_imp: remote camera eyes have had their initialization streamlined
+ - code_imp: remote cameras handle assigning and unassigning users by themselves
+ now
+ - code_imp: remote cameras now use weakrefs instead of hard referencing owners and
+ origins
+ - code_imp: also the sentient disease is_define was removed (we don't have those
+ anymore)
+ - bugfix: AI eyes no longer assign real names to themselves, fixing their orbit
+ name
+ wallem:
+ - image: Updates slot machine sprites
+2024-11-23:
+ EOBGames:
+ - rscadd: 'A new series of shipping containers have been added: keep an eye out
+ for them at your local cargo terminus.'
+ EnterTheJake:
+ - bugfix: fixes atmos goggles not showing the temperature of turfs.
+ Fikou:
+ - admin: you no longer get auto deadminned on localhost
+ - admin: default prefs are now to be deadminned as antag/head/sec/silicon
+ Ghommie:
+ - bugfix: Fixes ink spit not respecting its 21 seconds cooldown.
+ SmArtKar:
+ - balance: Armor now decreases the chances of getting your eye blown out by a rogue
+ bullet
+ - admin: Implemented final type filtering for spawn commands - putting * at the
+ end of a spawn string will signify that there should be no subtypes offered!
+ SyncIt21:
+ - bugfix: inducers can be inserted into storage objects again
+ - bugfix: fixes grown foods(like pineapples) getting deleted sometimes inside crates
+ and stuff
+2024-11-24:
+ Ben10Omintrix:
+ - bugfix: fixes the chipped quirk displaying the skill chip's typepath rather than
+ its name
+ - bugfix: fixes chipped quirk's itchy effect not working
+ - bugfix: the chipped quirk's itchy effect now goes away when the skillchip is removed
+ - refactor: projectile dampeners have been refactored. please report any bugs
+ SmArtKar:
+ - qol: Projectiles now visually impact their targets instead of disappearing about
+ a tile short of it.
+ - bugfix: Fixed multiple minor issues with projectile behavior
+ - refactor: Completely rewrote almost all of our projectile code - if anything broke
+ or started looking/behaving oddly, make an issue report!
+ - bugfix: Fixed full augmentation scan experiment being uncompletable
+ - bugfix: Organ manipulation can be completed once again and doesn't cause you to
+ be un-melee-able in some cases.
+ - bugfix: Fixed a rare runtime in jetpack component code
+ - bugfix: Fixed parsnip sabre not receiving a jousting component
+ grungussuss:
+ - bugfix: entertainment screens now properly show their tooltip for muting sound
+ lovegreenstuff:
+ - bugfix: synthmeat is no longer an nft
+ thimothymtorres:
+ - bugfix: Fix wrong status effect for watery tile
+ timothymtorres:
+ - bugfix: Fix coffee maker smoke particles not deleting
+ - bugfix: Fix fireplace particles runtimes.
+ timothymtorres, SmArtKar:
+ - bugfix: Fix chewable bubblegum not metabolizing due to microdose
+2024-11-25:
+ Absolucy:
+ - refactor: Cleaned up code relating to heretic ascension announcements and traits.
+ ArcaneMusic:
+ - rscadd: Adds a canned disease that can show randomly in space occasionally, causing
+ the target to begin to providing chemicals resulting in the target to avoid
+ needing to be affected by gravity.
+ Auris456852:
+ - bugfix: Makes a sliced baklava pie keep its complexity after slicing
+ Dawnseer:
+ - bugfix: fixed some erronous spriting on the zippo
+ EnterTheJake:
+ - image: Heretic's Moon Blade has received a new sprite.
+ Ghommie:
+ - balance: Nerfed slipperiness from fish infusion. It no longer knockdowns but it
+ staggers and slides the user one or two tiles away.
+ - balance: Added a slight natural weakness to fire/heat to the fish infusion, which,
+ taking the minor general damage resistance resistance when wet, is pretty mild.
+ - balance: hot temperature projectiles from the temperature gun (and watchers I
+ think) also dry living creatures hit by them.
+ GoblinBackwards:
+ - bugfix: fixed the fire effect not appearing on burning gasses
+ Mifutus:
+ - rscadd: Added new moth customizations available in the character creation under
+ the name "Dipped"
+ - image: 'added icons for the moth wings, antennae and markings
+
+ :cl:'
+ - bugfix: fixed the pulse rifle not spawning when won
+ - code_imp: 'added get_turf to the pulserifle when the odds are beat.
+
+ :cl:'
+ SmArtKar:
+ - code_imp: Cleaned up organ code
+ - bugfix: Fixed meteors freezing in place if they continiously miss the station
+ on a looping z level
+ - image: Muzzle flash now is attached to your sprite, meaning you won't run over
+ it if you fire while moving
+ - bugfix: Fixed some issues with defib paddle retraction.
+ - bugfix: Fixed atrocinator module footstep spam when you're moving on a tram
+ - qol: Reagent grinders display number of material sheets they hold instead of defaulting
+ to 1
+ - image: Changing clipboard skins now changes the inhands sprite as well
+ - bugfix: Fixed a runtime in cranial fissure remove code
+ - bugfix: Fixed fishing turfs not lazyloading
+ - bugfix: Blind people no longer make eye contact with their hands
+ - bugfix: Blindfolds and other sorts of opaque eye coverage now prevent eye contact
+ from occuring
+ - bugfix: Fixed a random zero in nuke ops uplink UI
+ - bugfix: Fixed a runtime caused by logging out while your runechat message was
+ appearing.
+ carlarctg:
+ - qol: carpenter hammer fits on belt slot
+ - code_imp: renames belt_icon_state to inside_belt_icon_state for intelligibiility
+ grungussuss:
+ - sound: changelings now have a sound for absorbing
+ mc-oofert:
+ - bugfix: fixed some wiring on wawastation, added an additional distro/scrubbers
+ connection to sciences network
+ - bugfix: damage done by thrown objects to objects respects their demolition modifier
+ timothymtorres:
+ - bugfix: Fix weather effects ignoring certain areas like space.
+ - bugfix: Fix coffee maker items teleporting to AI/Cyborg locations
+ - code_imp: Change some status effects to use SECONDS define.
+2024-11-26:
+ Ben10Omintrix:
+ - bugfix: raptors no longer break their trough upon interacting with it
+ - balance: removed the troublesome trait from raptors, they now wont go out to attack
+ their colleagues.
+ - rscadd: you can now give pet collars to ur raptors to rename them
+ Ghommie:
+ - bugfix: Fixed pixel position of fish overlays for aquariums.
+ - bugfix: The Aquarium ui won't show the user contents rather than that of the aquarium
+ itself
+ Hardly:
+ - bugfix: Ghosts can no longer emit spooky analyzing sounds when scanning
+ Isratosh:
+ - balance: Time-gated traitor uplink gear is returned to being hard reputation locked
+ with a static price.
+ OrionTheFox:
+ - qol: added an examine note to lighters showing their fuel
+ SmArtKar:
+ - code_imp: Projectile impacts no longer fetch mobs' armor values thrice
+ - code_imp: Converted pills and patches into interact_with_atom
+ - bugfix: Fixed a non-player facing runtime in portable atmos machinery code.
+ - bugfix: Ensures that if your brain is removed you die
+ - bugfix: Fixed a (non-player facing) runtime in organ manipulation surgery
+ grungussuss:
+ - rscdel: The northstar arcship has been removed. :(
+2024-11-27:
+ Boviro:
+ - qol: Atmos MODsuits can now hold extinguishers on their suit slot
+ Ghommie:
+ - bugfix: FIsh flops again.
+ Melbert:
+ - balance: Morphine's sedative power has been halved. It now takes ~10 units to
+ guarantee sleep, up from ~5.
+ - balance: Morphine now causes mild disgust.
+ - balance: Morphine is now twice as addictive, causing addiction if you down over
+ ~30 units without pause.
+ SmArtKar:
+ - sound: Reduced volume of fire sounds
+ Time-Green:
+ - bugfix: No more "is blacking out!"
+ - bugfix: Brain transplants work again
+ carlarctg:
+ - spellcheck: Fixes a typo in legionnaire abilities
+2024-11-28:
+ Absolucy:
+ - bugfix: ACTUALLY allow dot radio prefixes to also work with the tgui-say radio
+ prefix display.
+ Ben10Omintrix:
+ - bugfix: repairbots no longer get flashed by their own welder
+ - bugfix: repairbots no longer break glass tables they step on
+ - bugfix: repairbots can no longer flush their own welders
+ - bugfix: fixes some runtimes when emagged repairbots try to deconstruct things
+ - bugfix: fixes sentient repairbots not being able to see or remove their material
+ counts
+ Melbert:
+ - bugfix: Frozen slimes can't latch on to you (but they can still attack you technically)
+ - bugfix: Maybe fixes some organ manipulation bugs
+ - bugfix: Mulebot wire hacking is less fourth wall breaking
+ - bugfix: Stuff like the SM exploding will no longer output to your OOC tab
+ Mothblocks:
+ - qol: IV drips now create a beam from their spout to your body, and will visually
+ pull you closer.
+ SmArtKar:
+ - bugfix: Fixed colossus committing suicide on a regular basis
+ SyncIt21:
+ - bugfix: chainsaw is not invisible when turned off in hand
+ - bugfix: chainsaw won't play ping sound when turned on
+ - bugfix: mounted chainsaw has a new animated sprite when turned on & won't go invisible
+ in hand
+ ValuedEmployee:
+ - rscadd: New purr and meow emotes for players with felinid tongues
+2024-11-29:
+ Ghommie:
+ - bugfix: Player-controlled lobstrosities, space dragons, space carps and penguins
+ can fish again.
+ - bugfix: Bombing someone during organ manipulation no longer summons new organs.
+ Runi-c:
+ - rscadd: digitigrade lizards can wear certain shoes and suits
+ - image: added digitigrade shoes & oversuit templates
+ - refactor: improved digi clothing generator code
+ TealSeer:
+ - bugfix: Using a bonesetter to correct a dislocated limb should no longer cause
+ you to hit the patient with it too.
+ carlarctg:
+ - qol: Added some tips of the round.
+ - balance: Increased Rusted Harvester health from 35 to 45.
+ - balance: Increased haunted longsword's demolition mod by 20%.
+ - bugfix: Rusted harvesters won't get narsie telling them to bring her their victims.
+ - bugfix: Heretic summons aren't affected by void chill anymore.
+ - rscadd: Centcom's janitorial department has gotten tired of scooping up discarded
+ scarves from the floor and has instead assigned MODlink scryers to some stations'
+ crew in an attempt to spice up the disposal team's jobs.
+ - rscadd: Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow.
+ Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks.
+ - rscadd: Aquatic mobs can be hooked by fishing rods, even without a jawed fishing
+ hook installed.
+ - rscadd: The carp and fish infusion sets now give the infusee the aquatic biotype.
+ Added support for infusions adding a biotype.
+ - rscadd: You can check for a fish's pulse with a stethoscope, which will tell you
+ its status even without fishing skill.
+ - qol: Refined fish health status checks to be more precise.
+ - rscadd: Added 'Fishy' Reagent, a version of strange reagent that only works for
+ fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin
+ or tetrodotoxin.
+ - rscadd: Added a lifish chemical reaction that creates fish.
+ - rscadd: You can now wear a hat on any modsuit, even w/o the stabilizing module.
+ But it may easily fall off...
+ - rscadd: Added the Atrocinator, Hat Stabilizer, and Tanning modules to the black
+ market.
+ - rscadd: Added the loose hat component to bio/bomb/rad hoods and space helmets.
+ necromanceranne:
+ - bugfix: Civilian bounty pads refuse to send holographic items. Nanotrasen have
+ received far too many holographic fish for their liking. Officer Mathews is
+ still weeping in a corner after all the clownfish in his aquarium turned to
+ dust before his very eyes...
+ - code_imp: Cleans up the bounty pad code just a smidge.
+ oranges:
+ - rscadd: Teleporting a leaning person will now make them fall over
+ paganiy:
+ - rscadd: 'Add a new item to the chef traitor''s uplink: Molt''Obeso sauce. A sauce
+ that makes people want to eat too much.'
+2024-11-30:
+ Absolucy:
+ - bugfix: Light Step now properly prevents your hands and clothes from getting covered
+ in blood when stepping in it.
+ - bugfix: Fixed double-encoded messages with AI shuttle call reasons.
+ CRITAWAKETS:
+ - rscadd: Added in the modulo operator to the circuit arithmetic component.
+ Ghommie:
+ - bugfix: Aquariums are now potential fishing spots.
+ - balance: Aquarium kits can now be printed from cargo, service, science protolathes
+ as well as the autolathe. They no longer have to be ordered from cargo.
+ - balance: Revamped the "Growth/Reproduction" setting for aquarium to "Safe Mode",
+ which also disables the food, temperature and water requiremenets of aquariums,
+ making it useful for purely decorative aquariums.
+ - balance: Replaced the "Aggressive" fish trait with "Territorial". No more angelfish
+ shanking the goldfish and guppy in prefilled aquariums with less than 5 fishes.
+ - qol: Added screentips to aquariums.
+ - rscadd: Icemoon lavaloops (now named plasmaloops) fish now look different.
+ Melbert:
+ - bugfix: You should be afflicted by the "Curse of Mundanity" far, far less
+ - bugfix: Fixed play local sound for admins
+ OrionTheFox:
+ - image: resprited the worn sprites of all Fannypacks
+ SmArtKar:
+ - bugfix: Fixed Nebula's robotics fabricators being obstructed roundstart
+ - bugfix: Fixed damage overlays hiding themselves or flickering when you get wounded.
+ - bugfix: Fixed projectile parrying
diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml
new file mode 100644
index 0000000000000..210a0f1e6f04a
--- /dev/null
+++ b/html/changelogs/archive/2024-12.yml
@@ -0,0 +1,396 @@
+2024-12-01:
+ KingkumaArt:
+ - bugfix: Etherials no longer lose overcharge really slowly.
+ - bugfix: Etherial Wine/Telepole no longer overcharges etherials with one sip.
+ OrionTheFox:
+ - image: resprited the (Analog) Wall Clock
+ SmArtKar:
+ - bugfix: Fixed cargo ticket and pet adventure drone loot pools not working
+ - bugfix: Fixed plasmamen envirosuits being unrepairable
+ SmArtKar, Kapu:
+ - bugfix: Atmospheric tanks no longer fetch icons every tick
+ distributivgesetz:
+ - bugfix: The labor shuttle can no longer be cheesed by piggybacking a prisoner
+ who has completed their sentence.
+ larentoun:
+ - bugfix: Printed advanced robotic right leg now has correct name, instead of being
+ "heavy"
+ - bugfix: Printed Moth X-Ray eyes are now correctly named, instead of being just
+ "robotic eyes"
+ timothymtorres:
+ - rscadd: The revenant defile spell now affects showers by removing all water recyclers
+ and reagents that gets replaced with blood.
+ - rscadd: Showering in clean water (+70%) results in positive mood/regen/stamina
+ effects. It will wash off the mob.
+ - rscadd: Showering in dirty water results in negative mood effects and disgust.
+ It will NOT wash off the mob.
+ - rscadd: Showering with radioactive reagents (+20%) results in the preventing the
+ shower from washing off the radiation.
+ - rscadd: Showering in blood (+70%) results in severe negative mood effects and
+ disgust. (unless you are morbid, evil, or undead then it's considered positive)
+ It will cover the mob in blood.
+ - rscadd: Water effects that interact with a mob from touch or vapor (showering/spray
+ bottles/etc.) will now heal sleep, unconsciousness, confusion, drowsiness, jitters,
+ dizziness, and drunkenness.
+ - bugfix: Fix bloody showers not covering objects in blood.
+ - bugfix: Tossing or spraying a container full of blood now covers objects/mobs
+ in blood
+ - bugfix: Fix wrong status effect for watery tile
+ - image: Add new alert icons for bloody/dirty showers
+ - code_imp: Refactored some expose_obj reagent code to support method types.
+ - code_imp: Improved mood typecasting for owner to allow checking of mob biotypes.
+2024-12-02:
+ Ghommie:
+ - balance: brought fishing difficulty of all fishing spots a bit closer to their
+ original value following a small oopsie that made them unexpectingly easier
+ for more than two months.
+ - bugfix: Fixed fishing lures.
+ OrionTheFox:
+ - bugfix: fixed the "tactical combat/engineering uniform" allowing toggling with
+ no alt sprite
+ SmArtKar:
+ - bugfix: Fixed lunar parade soundloop
+ - bugfix: You cannot have more than one MODtether (excluding manual connections)
+ - qol: Tethers are easier to cut (require less pixelhunting)
+ - bugfix: Fixed flipped fishing hooks
+ - bugfix: You can no longer stick a butter on a stick on a stick
+ - qol: Mining drills are now active by default
+ - bugfix: Fixes mining drill displaying drilling messages while inactive
+ githubuser4141:
+ - bugfix: fixes splinter cell pistols causing mechs to suddenly have all their flags
+ deleted
+ mc-oofert:
+ - bugfix: fixed the museum password puzzle (to the cafeteria), and the scrubbers
+ and vents there now look correctly (also fixed a rare visual bug)
+ - bugfix: it is now harder to bypass indestructible windows and grilles (those are
+ placed there for a reason, you know!)
+ norsvenska:
+ - spellcheck: You are no longer faced with a typo after either not writing on paper,
+ or attempting to stamp a paper that's been stamped too many times.
+2024-12-03:
+ Absolucy:
+ - bugfix: Made the broadcast camera's sprite more consistent, it hopefully shouldn't
+ reset to the inactive sprite while recording in some weird scenarios now.
+ - bugfix: Abductor doohickeys (i.e abductor device circuit boards, mental interface
+ device, silencer, science tool, and omnitool) now properly unlock alien tech
+ via the experimentor.
+ EnterTheJake:
+ - balance: Wraith Module recloaking timer bumped from 5 to 20 seconds.
+ - balance: The Wraith Module's cloak now dissipates on ranged attacks and any type
+ of bump.
+ - balance: Wraith Module can no longer be installed In suits with the armor booster
+ module .
+ SmArtKar:
+ - bugfix: Fixed Hilbert's rigged analyzer not being able to scan the hotel orb
+ - bugfix: Fixed all parried projectiles only going up or down
+ - bugfix: Fixed "Leave Body" escape menu tab runtiming
+ - bugfix: Fixed smoker addictions not refreshing
+ ValuedEmployee:
+ - bugfix: Only players with Felinid tongues get to meow and purr for real this time,
+ and other carbons cannot
+ - bugfix: Mimes can no longer meow out loud and have their own mime message
+ - bugfix: Stopped delay on meow and purr emotes where they had to be used twice
+ to work the first time they're used
+ - rscdel: Removed redundant text warning for players that can't use the meow or
+ purr emotes
+ norsvenska:
+ - spellcheck: Station commission plaques (the gold ones that have the date they
+ were added) have been updated, adding Nebula's, fixing Wawa's, and decommissioning
+ Northstar's.
+ thegrb93:
+ - bugfix: Borg lights not turning off when flashed or empd
+ - bugfix: Air alarms stuck in warning state when area alarms are cleared
+2024-12-04:
+ Absolucy:
+ - bugfix: Fixed a runtime error related to the balloon alert from folding a paper
+ plane.
+ Ghommie:
+ - bugfix: Aquarium safe mode is now safe.
+ - bugfix: Fish are no longer still hungry after being fed.
+ - bugfix: Fixing some errors when removing brains with skillchips in them.
+ Melbert:
+ - refactor: A ton of things now use the more correct method of applying damage to
+ you. Which means they will correctly factor in damage modifiers and are less
+ likely to break your sprite. Some examples include embedded objects jostling
+ around, chiropractice, and tackling a wall. Report any oddities, such as extreme
+ damage or bodyparts being wrongly affected.
+ - bugfix: Having acid splashed on your face may now disfigure you and make you bald,
+ as it once did three years ago.
+ - bugfix: Itchy heretic trauma now better checks if the bodypart is covered or not
+ before determining if you should itch.
+ - bugfix: '"Repair Puncture" logs no longer mistakenly report you are "Incising
+ burned flesh"'
+ SmArtKar:
+ - bugfix: Fixed a zero g pushoff runtime
+ - sound: Modsuits no longer horrifically screech when taken off
+ - bugfix: Fixed a board GPS imprintion runtime
+ - bugfix: Fixed a runtime in detomatix logging
+ Wallem:
+ - image: Updates slime potion sprites, adds some new colors and rearranges some
+ others.
+2024-12-05:
+ 13spacemen:
+ - rscdel: Time Dilation no longer shows in the hub text
+ Ben10Omintrix:
+ - bugfix: repairbots now gain their destructive abilities when hacked by an AI
+ - bugfix: repairbot crafting recipes have been updated
+ Majkl-J:
+ - bugfix: Ruins will now correctly spawn their tied ruins in
+ - bugfix: The map_logging test now runs proper
+ - code_imp: The stacked_lights test now screams with area names too.
+ SmArtKar:
+ - qol: Shifted the escape menu stat panel down a bit
+2024-12-06:
+ Autisem:
+ - refactor: Nanotrasen has introducted new upgrades into the aging station shield
+ statalites, they require a but longer to toggle on however
+ OrionTheFox:
+ - bugfix: fixed the Icebox Phonebooth air alarm being on the outside, thus triggering
+ because the planet is, indeed, cold. It is now inside and all-access so that
+ callers can turn it off when they decide the phone's more important than their
+ health and safety.
+ SmArtKar:
+ - bugfix: Fixed atrocinator not yeeting you up
+ - bugfix: Fixed a qdel loop in hypnosis brain trauma
+ imedial:
+ - bugfix: Map vote now cares about current player count
+2024-12-07:
+ Ben10Omintrix:
+ - qol: u can now directly feed animals from ur hands, like raptors or cats, by clicking
+ on them with their preferred food.
+ - balance: u can now heal ur raptors mid or post battles by hand feeding them ores
+ FlufflesTheDog:
+ - spellcheck: paywall firing pins no longer set the gun description to the pin's
+ description on removal
+ LT3:
+ - bugfix: Tram spoilers correctly provide welder or multitool hints depending on
+ their damage
+ - bugfix: Malfunctioning tram controller flashes orange and can be preemptively
+ fixed before it crashes
+ SmArtKar:
+ - qol: AI laws and tape recorders no longer cause radio blips
+ - balance: Removed organ "refreshing" from legion cores, magic wands and regenerative
+ crossbreeds so they no longer get rid of your implants
+ - bugfix: Fixed an edge case with meteor moveloop code
+ - bugfix: Fixed projectile homing
+ - rscadd: Toolboxes can be used on any object to pull out and use a tool from it
+ as long as your offhand is free.
+ - qol: Jetpacks are significantly smoother and nicer to use now - and not affected
+ by lag anymore!
+ - code_imp: Cleaned up spacemove/jetpack code a bit and moved some common code to
+ helpers.
+ - refactor: Wings are now... jetpacks. They behave exactly the same and this should
+ reduce the amount of copypaste code in spacemove significantly.
+ SmArtKar, Kapu:
+ - code_imp: Implemented caching for icon sizes which should significantly improve
+ mob health performance due to HUDs constantly fetching icons
+ SyncIt21:
+ - code_imp: improved code for machinery
+ - code_imp: slightly improved code for borg inducer
+ - spellcheck: fixes examines & screentips for borg inducer
+ - code_imp: condensed code for reagent grinder
+ - bugfix: reagent grinder won't break when 2 or more people are simultaneously interacting
+ with it
+ - bugfix: ejecting contents & examining the reagent grinder as an AI via the radial
+ menu does not require it to be powered or anchored
+ - bugfix: examine block for reagent grinder as an AI is properly formatted
+ Time-Green:
+ - balance: Bioscramblers are no longer immortal
+ - balance: Anomalies give 20 extra seconds to defuse! Or 20 extra seconds for them
+ to reach havoc...
+ - balance: Material anomalies only teleport 1-4 times before detonating
+ carlarctg:
+ - bugfix: Recovered crew no longer show up on roundend report
+ - rscadd: Surgery trays now have a small chance to become medical toolboxes. Autopsy
+ trays can become coroner toolboxes.
+ - rscadd: Added a 1 in 1.000.000 chance for a toolbox to have four latches.
+ mc-oofert:
+ - balance: A mutation in gatfruit seeds has led to a drastic alteration in the observable
+ traits of the plant, which now fires hardened peas that deal less damage, but
+ poison the target. Additionally, its poison can be, with some botanical engineering,
+ replaced with whatever you wish.
+ - balance: burglars finesse spell range increased from 4 to 6 and it may loot any
+ back storage object, caretakers refuge cooldown is only applied when exiting
+ refuge, labyrinth handbook accepts any crayon instead of a white crayon
+ - qol: you may click an id with the knock heretic id card to make it consume it
+ - rscadd: janitor modsuit space cleaner mister module
+ - bugfix: manufacturing assembling machine crafts junk shells and lizard boots properly,
+ may no longer craft anchored objects (broken check), and sends its crafted stuff
+ at once
+ - balance: changeling last resort works as a monkey or animal
+ timothymtorres:
+ - bugfix: Fix drink labels for alcohol bottles
+ - rscadd: Add medical human organ crate emergency medical holodeck simulation
+ - bugfix: Fix gravity not updating for mobs when teleporting, wormhole jaunters,
+ wizard spells, tile creation/destruction, mech entry/ejection and other methods.
+ - bugfix: Fix gravity for areas in space near station (solars, nearspace, bomb testing,
+ etc.)
+ tontyGH:
+ - bugfix: runetext fades in correctly in bulk. signers rejoice
+ zxaber:
+ - bugfix: Mechs with crowbar-like tools can now hold adjacent firelocks open correctly.
+2024-12-08:
+ SyncIt21:
+ - refactor: improved attack chain code for rapid pipe dispenser
+ - code_imp: organized lists & global vars for rapid pipe dispenser into their own
+ respective files & improved a bunch of code
+2024-12-09:
+ FlufflesTheDog:
+ - bugfix: Dimensional shifter relics work more reliably.
+ Ghommie:
+ - bugfix: You should be once again able to fish moonfish and other fish used in
+ lizard cuisine from tiziran water turfs.
+ Melbert:
+ - rscdel: Some crowbars on Wawa, Nebula, and Birdboat are significantly less heavy
+ SmArtKar:
+ - image: Added unique sprites for Endotherm wintercoats
+ - image: Wintercoat hoods now show a bit of your hair!
+ grungussuss:
+ - rscadd: pointing now has interactions with the amount of limbs/organs you have
+ - balance: you can now point while restrained
+ - sound: pointing with your head makes a sound
+ grungussuss and Sothanforax:
+ - rscadd: hiss emote
+ - sound: hissssssing sounds
+ mc-oofert:
+ - bugfix: The Men in Grey may no longer access birdshots engineering via a certain
+ maintenance airlock
+ - bugfix: multitile airlock assemblies from a broken multitile airlock are the same
+ direction
+ mcbalaam:
+ - rscadd: Added the mail sorting unit - working with mail has never been simpler!
+ - rscadd: Added two flatpack pre-defined subtypes for the flatpacker and the mail
+ sorter.
+ timothymtorres:
+ - code_imp: Add better logging for ruins
+ tontyGH:
+ - bugfix: Pubby's whiteship no longer breaks when it tries to dock
+ - bugfix: /datum/component/PostTransfer() procs that didn't have their new_parent
+ arguments have now been fixed
+ - bugfix: This means that turning into a Domain gondola shouldn't RR people anymore
+2024-12-10:
+ MelokGleb:
+ - qol: changes Chronic Illness quirk name, description and icon to match it's dangerousness
+2024-12-11:
+ Ghommie:
+ - bugfix: Fixed feeding fish only increasing their size but not the weight.
+ - bugfix: Fixing remote/ghost alt-click functioning on aquariums
+ - bugfix: Added missing plasma tetra to freshwater fishing spots.
+ - balance: plasma tetra is now smaller and qualifies as baitfish.
+ LT3:
+ - bugfix: Map vote will no longer sometimes ignore the winning choice and pick a
+ cached, ineligible map
+ SmArtKar:
+ - bugfix: Removed rogue sand decals from Island Brawl domain walls
+ WebcomicArtist:
+ - bugfix: Durand shield now uses proper amount of power upon taking damage
+ - bugfix: Mech plasma generator now produces the correct amount of charge, previously
+ bugged to be 10% of intended.
+ carlarctg:
+ - rscadd: Adds suicides to fish. Like, a lot of suicides. Almost all of them very
+ unique. I'm too lazy to make a video, but they've been thoroughly tested.
+ grungussuss:
+ - bugfix: fixed *me emote being called when using the *help emote
+ - bugfix: you will no longer slip off your mount when traversing slippery surfaces
+ - bugfix: fixed being unable to remove bar seating holograms
+ - bugfix: fixed an error with slipping
+ - bugfix: fixed items not falling from a lattice after being deconstructed/destroyed
+2024-12-12:
+ Kocma-san:
+ - admin: moves all admin requests in admin stuff section. Now they have type Prayers
+ SmArtKar:
+ - bugfix: Made wendigo's bullet hell lag less, at cost of its visuals.
+ - bugfix: Toolboxes can now be placed onto tables/into crates
+ - bugfix: Fixed toolboxes automatically using the first item in them
+2024-12-13:
+ Majkl-J:
+ - bugfix: Fauna can no longer push necropolis gates
+ Melbert:
+ - bugfix: Words in other languages will be randomized far less often (depending
+ on how commonly they are used). This bug was 10 years old.
+ - qol: Hovering over clickable screen elements will now update your mouse cursor
+ to indicate they're clickable
+ - qol: Hovering over small wall mounts (light switches, buttons, fire alarms) will
+ now update to mouse cursor indicating you're hovering them
+ - qol: Cauterizing bleeding wounds now plays the cautery sfx.
+ - qol: Bleeding wounds will now go away the moment they're fully healed, rather
+ than a second or two later.
+ - qol: Suture / Mesh treatment is now uniform! meaning healing bruises with a suture
+ is now the same thing as healing cuts with a suture. This has very little difference
+ in practice, but it should generally result in a lot smoother experience.
+ - qol: 'Suture / Mesh usage has been reworked slightly, and now offers two modes
+ of use:'
+ - qol: LEFT CLICKING will heal in AUTO MODE, which will AUTOMATICALLY switch between
+ damaged bodyparts, prioritizing your targeted limb. You cannot change target
+ mid-heal; changing target simply changes your priority for your NEXT heal.
+ - qol: RIGHT CLICKING will heal in MANUAL MODE, which functions like it does currently
+ - allowing you to change your target before you finish your heal and giving
+ you a 1 second "assessment" step to change your target when you're done healing
+ a limb. Manual mode is 10% faster than Auto mode.
+ SmArtKar:
+ - image: Scarves have received a minor update to their sprites
+ - bugfix: Fixed moths only being able to fly if they spawn in zero gravity
+ grungussuss:
+ - bugfix: '*me emote works again'
+2024-12-14:
+ EnterTheJake:
+ - bugfix: temporary blocks such as blade heretic orbiting knives properly stop body
+ throws.
+ Ghommie:
+ - bugfix: Actually fixed alt-clicking aquariums.
+ Majkl-J:
+ - bugfix: Aloe cream no longer catches fire seconds after finishing baking
+ - bugfix: Overcharged SMESes no longer spam runtime when timers chug up
+ NecromancerAnne (code), orcacora (sprites):
+ - rscadd: Adds NT BR-38 Battle Rifles. A hybrid weapon. Find it in your local armory
+ and cargo catalogue today. (Keep away from EMPs)
+ Runi-c:
+ - balance: medical doctors can buy Reagent Dartgun from traitor uplink
+ SmArtKar:
+ - bugfix: Fixes primed stingbangs being invisible
+ SmArtKar, LemonInTheDark:
+ - rscadd: Changed how spraycans color items - "old" mode is still availible via
+ right click.
+ - refactor: Refactored how some items and effects color things so that they look
+ prettier.
+ SyncIt21:
+ - code_imp: improved code for leaning
+ distributivgesetz:
+ - code_imp: Fixed rare cases where moving an object somewhere could silently fail,
+ but still run unintended code. Report any weird issues on Github
+ grungussuss:
+ - bugfix: fixed regal rat attack logic
+ - bugfix: fixed access on birdshot engi mulebot delivery window
+ mcbalaam:
+ - qol: Now all antagonists are visible to an admin in the orbit menu!
+ norsvenska:
+ - spellcheck: The Lance and Raven shuttle airlocks are now properly labelled emergency
+ airlocks, rather than emegency airlocks.
+ - spellcheck: The radio jammer now releases disruptor waves, rather than distruptor
+ waves.
+ timothymtorres:
+ - sound: Add water sound to sinks
+2024-12-15:
+ Ghommie:
+ - bugfix: Fixed the displayed stats when examining fishing rods twice.
+ LT3:
+ - bugfix: Fixed unconstructed solar panels on Nebulastation port aft solars
+ Melbert:
+ - rscadd: Adds Syndol to the chemical kit, an addictive hallucinogen that applies
+ bonus effects when security officers, assistants, or clowns are exposed.
+ - bugfix: Metalgen works as a lockpick; igniting a crate metalgen'd into plasma
+ will properly drop its contents.
+ - code_imp: Hiding stuff in food should generally work more consistently now.
+ - bugfix: Fixes players not doing the "searching for item" do-after for items hidden
+ in food.
+ - qol: When dragging an item (like, with your mouse cursor. not physically), your
+ cursor updates when hovering humans or cyborgs to indicate you're hovering over
+ a human or cyborg.
+ Paxilmaniac:
+ - bugfix: Fixes resin sprayers not working if the target is more than one tile away
+ from you
+ necromanceranne:
+ - code_imp: Various mob attack procs are treated as unarmed attacks as a baseline
+ assumption, rather than melee attacks.
+ timothymtorres:
+ - code_imp: Improve looping sounds to allow nested and non-associative lists
diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi
index 38921a6e48402..83d7c14d0cc1b 100644
Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ
diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi
index 85d450e03bdd6..41bdf992bbf41 100644
Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ
diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi
index 113e16163ecdc..b48164f8795a1 100644
Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ
diff --git a/icons/hud/64x16_actions.dmi b/icons/hud/64x16_actions.dmi
index 812d888846ebd..23865a80f0354 100644
Binary files a/icons/hud/64x16_actions.dmi and b/icons/hud/64x16_actions.dmi differ
diff --git a/icons/hud/fishing_hud.dmi b/icons/hud/fishing_hud.dmi
index f9d2d2ff9c457..84f739f9db228 100644
Binary files a/icons/hud/fishing_hud.dmi and b/icons/hud/fishing_hud.dmi differ
diff --git a/icons/hud/radial.dmi b/icons/hud/radial.dmi
index f6e141ab6855a..5e32a89fe5d06 100644
Binary files a/icons/hud/radial.dmi and b/icons/hud/radial.dmi differ
diff --git a/icons/hud/radial_fishing.dmi b/icons/hud/radial_fishing.dmi
index 8b914f32613be..daa4ce8abda3e 100644
Binary files a/icons/hud/radial_fishing.dmi and b/icons/hud/radial_fishing.dmi differ
diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi
index d540a55d344ba..4fd8b3c8592d1 100644
Binary files a/icons/hud/screen_alert.dmi and b/icons/hud/screen_alert.dmi differ
diff --git a/icons/hud/screen_full.dmi b/icons/hud/screen_full.dmi
index dfe3bd12091d9..be4571638b10f 100644
Binary files a/icons/hud/screen_full.dmi and b/icons/hud/screen_full.dmi differ
diff --git a/icons/hud/screen_gen.dmi b/icons/hud/screen_gen.dmi
index 5b1c24d7789cc..c38725e43e433 100644
Binary files a/icons/hud/screen_gen.dmi and b/icons/hud/screen_gen.dmi differ
diff --git a/icons/mob/actions/actions_silicon.dmi b/icons/mob/actions/actions_silicon.dmi
index 9c4b7ec7fbe85..b8f5caafc3fa3 100644
Binary files a/icons/mob/actions/actions_silicon.dmi and b/icons/mob/actions/actions_silicon.dmi differ
diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi
index a67830ac5e917..9fd317494ad8b 100644
Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ
diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi
index 62cc25aaf33ad..8d70197537c52 100644
Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ
diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi
index 01cf7b38913f5..0ffdb70219cf4 100644
Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ
diff --git a/icons/mob/clothing/digi_template.dmi b/icons/mob/clothing/digi_template.dmi
new file mode 100644
index 0000000000000..319bd875041c7
Binary files /dev/null and b/icons/mob/clothing/digi_template.dmi differ
diff --git a/icons/mob/clothing/ears.dmi b/icons/mob/clothing/ears.dmi
index cd7f6cc9e2bc9..beca6060b70db 100644
Binary files a/icons/mob/clothing/ears.dmi and b/icons/mob/clothing/ears.dmi differ
diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi
index 8a8c893577882..5ff2a5b792070 100644
Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ
diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi
index 2f3161b0331a1..3eee250ca66d5 100644
Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ
diff --git a/icons/mob/clothing/head/hats.dmi b/icons/mob/clothing/head/hats.dmi
index 01ed2679f23b3..7f59060129712 100644
Binary files a/icons/mob/clothing/head/hats.dmi and b/icons/mob/clothing/head/hats.dmi differ
diff --git a/icons/mob/clothing/head/helmet.dmi b/icons/mob/clothing/head/helmet.dmi
index db48dda1fd61c..05fe660a33a29 100644
Binary files a/icons/mob/clothing/head/helmet.dmi and b/icons/mob/clothing/head/helmet.dmi differ
diff --git a/icons/mob/clothing/head/winterhood.dmi b/icons/mob/clothing/head/winterhood.dmi
index ba722a5a0f281..a173364c99454 100644
Binary files a/icons/mob/clothing/head/winterhood.dmi and b/icons/mob/clothing/head/winterhood.dmi differ
diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi
index bd57cb6eee916..cb02e72603bbe 100644
Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ
diff --git a/icons/mob/clothing/suits/utility.dmi b/icons/mob/clothing/suits/utility.dmi
index 4b6235d740ad3..f05fcf6514efd 100644
Binary files a/icons/mob/clothing/suits/utility.dmi and b/icons/mob/clothing/suits/utility.dmi differ
diff --git a/icons/mob/clothing/suits/wintercoat.dmi b/icons/mob/clothing/suits/wintercoat.dmi
index 9bcfca4d6a3a1..921e3991846ff 100644
Binary files a/icons/mob/clothing/suits/wintercoat.dmi and b/icons/mob/clothing/suits/wintercoat.dmi differ
diff --git a/icons/mob/clothing/under/civilian.dmi b/icons/mob/clothing/under/civilian.dmi
index 3511731eac3ca..63788c8d1ed13 100644
Binary files a/icons/mob/clothing/under/civilian.dmi and b/icons/mob/clothing/under/civilian.dmi differ
diff --git a/icons/mob/clothing/under/digi_template.dmi b/icons/mob/clothing/under/digi_template.dmi
deleted file mode 100644
index 0c9db80eb1c88..0000000000000
Binary files a/icons/mob/clothing/under/digi_template.dmi and /dev/null differ
diff --git a/icons/mob/clothing/under/masking_helpers.dmi b/icons/mob/clothing/under/masking_helpers.dmi
index dfbec7d1cb8ec..26e1cc446685f 100644
Binary files a/icons/mob/clothing/under/masking_helpers.dmi and b/icons/mob/clothing/under/masking_helpers.dmi differ
diff --git a/icons/mob/dust_animation.dmi b/icons/mob/dust_animation.dmi
index 459fc2aa3c4b3..10d8418a14453 100644
Binary files a/icons/mob/dust_animation.dmi and b/icons/mob/dust_animation.dmi differ
diff --git a/icons/mob/human/hair_masks.dmi b/icons/mob/human/hair_masks.dmi
index 5dbd4917a87e3..bb7b55e0cc3a4 100644
Binary files a/icons/mob/human/hair_masks.dmi and b/icons/mob/human/hair_masks.dmi differ
diff --git a/icons/mob/human/species/moth/moth_antennae.dmi b/icons/mob/human/species/moth/moth_antennae.dmi
index a40013e93576f..e6d024668084b 100644
Binary files a/icons/mob/human/species/moth/moth_antennae.dmi and b/icons/mob/human/species/moth/moth_antennae.dmi differ
diff --git a/icons/mob/human/species/moth/moth_markings.dmi b/icons/mob/human/species/moth/moth_markings.dmi
index a6ebc2cedb517..1c8173eaf3903 100644
Binary files a/icons/mob/human/species/moth/moth_markings.dmi and b/icons/mob/human/species/moth/moth_markings.dmi differ
diff --git a/icons/mob/human/species/moth/moth_wings.dmi b/icons/mob/human/species/moth/moth_wings.dmi
index 91c0d8b2b2cd1..1d3aaea5e776d 100644
Binary files a/icons/mob/human/species/moth/moth_wings.dmi and b/icons/mob/human/species/moth/moth_wings.dmi differ
diff --git a/icons/mob/human/textures.dmi b/icons/mob/human/textures.dmi
index 4408c3e067281..78bf3a18e10dc 100644
Binary files a/icons/mob/human/textures.dmi and b/icons/mob/human/textures.dmi differ
diff --git a/icons/mob/inhands/64x64_lefthand.dmi b/icons/mob/inhands/64x64_lefthand.dmi
index e5dc62260453a..d46d2b439f514 100644
Binary files a/icons/mob/inhands/64x64_lefthand.dmi and b/icons/mob/inhands/64x64_lefthand.dmi differ
diff --git a/icons/mob/inhands/64x64_righthand.dmi b/icons/mob/inhands/64x64_righthand.dmi
index 5f153cece749c..8adb31df8546d 100644
Binary files a/icons/mob/inhands/64x64_righthand.dmi and b/icons/mob/inhands/64x64_righthand.dmi differ
diff --git a/icons/mob/inhands/equipment/toolbox_lefthand.dmi b/icons/mob/inhands/equipment/toolbox_lefthand.dmi
index e3aca82d9e839..3dbd5ea013d42 100644
Binary files a/icons/mob/inhands/equipment/toolbox_lefthand.dmi and b/icons/mob/inhands/equipment/toolbox_lefthand.dmi differ
diff --git a/icons/mob/inhands/equipment/toolbox_righthand.dmi b/icons/mob/inhands/equipment/toolbox_righthand.dmi
index a7b538a130002..13dc226fcea31 100644
Binary files a/icons/mob/inhands/equipment/toolbox_righthand.dmi and b/icons/mob/inhands/equipment/toolbox_righthand.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index f38ce00161941..82f46b35c6cc1 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index 4639b290fe371..b2e2fc8033b89 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/chainsaw_lefthand.dmi b/icons/mob/inhands/weapons/chainsaw_lefthand.dmi
index 5235f1510102a..e7da8d0ee5da6 100644
Binary files a/icons/mob/inhands/weapons/chainsaw_lefthand.dmi and b/icons/mob/inhands/weapons/chainsaw_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/chainsaw_righthand.dmi b/icons/mob/inhands/weapons/chainsaw_righthand.dmi
index 0800a5273156c..902c2b4ee07aa 100644
Binary files a/icons/mob/inhands/weapons/chainsaw_righthand.dmi and b/icons/mob/inhands/weapons/chainsaw_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi
index 90df2a892f984..369365131c6de 100644
Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi
index eebed61656aa4..fb77baa515b08 100644
Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/hammers_lefthand.dmi b/icons/mob/inhands/weapons/hammers_lefthand.dmi
index d065edd86e75a..aaae035e056f1 100644
Binary files a/icons/mob/inhands/weapons/hammers_lefthand.dmi and b/icons/mob/inhands/weapons/hammers_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/hammers_righthand.dmi b/icons/mob/inhands/weapons/hammers_righthand.dmi
index 022b281e4626a..6ff58389894e8 100644
Binary files a/icons/mob/inhands/weapons/hammers_righthand.dmi and b/icons/mob/inhands/weapons/hammers_righthand.dmi differ
diff --git a/icons/mob/rideables/mecha.dmi b/icons/mob/rideables/mecha.dmi
index 5960d05413781..a52a3ff5d4be5 100644
Binary files a/icons/mob/rideables/mecha.dmi and b/icons/mob/rideables/mecha.dmi differ
diff --git a/icons/mob/silicon/aibots.dmi b/icons/mob/silicon/aibots.dmi
index 86c450ef1ceae..819eecea0b739 100644
Binary files a/icons/mob/silicon/aibots.dmi and b/icons/mob/silicon/aibots.dmi differ
diff --git a/icons/obj/aquarium/fish.dmi b/icons/obj/aquarium/fish.dmi
index 53a218bc780a1..49856cc649fe9 100644
Binary files a/icons/obj/aquarium/fish.dmi and b/icons/obj/aquarium/fish.dmi differ
diff --git a/icons/obj/aquarium/supplies.dmi b/icons/obj/aquarium/supplies.dmi
index 08f4923a0abdd..73a1f5ffe345a 100644
Binary files a/icons/obj/aquarium/supplies.dmi and b/icons/obj/aquarium/supplies.dmi differ
diff --git a/icons/obj/aquarium/tanks.dmi b/icons/obj/aquarium/tanks.dmi
index 44f526f8c9980..b4a5e06471f8b 100644
Binary files a/icons/obj/aquarium/tanks.dmi and b/icons/obj/aquarium/tanks.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index 454f2195e837d..3928c2246f1ed 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/clothing/head/helmet.dmi b/icons/obj/clothing/head/helmet.dmi
index 621afe57ddce4..e213773717591 100644
Binary files a/icons/obj/clothing/head/helmet.dmi and b/icons/obj/clothing/head/helmet.dmi differ
diff --git a/icons/obj/clothing/head/winterhood.dmi b/icons/obj/clothing/head/winterhood.dmi
index 34e0abf39beef..591f99ec313fb 100644
Binary files a/icons/obj/clothing/head/winterhood.dmi and b/icons/obj/clothing/head/winterhood.dmi differ
diff --git a/icons/obj/clothing/modsuit/mod_modules.dmi b/icons/obj/clothing/modsuit/mod_modules.dmi
index 9811af0b54838..f91f9f0b9dcaf 100644
Binary files a/icons/obj/clothing/modsuit/mod_modules.dmi and b/icons/obj/clothing/modsuit/mod_modules.dmi differ
diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi
index ca90eb8a3291b..3a1bd3d2ccff3 100644
Binary files a/icons/obj/clothing/neck.dmi and b/icons/obj/clothing/neck.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index 58d4791adc882..ea87b1dc293bb 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/suits/utility.dmi b/icons/obj/clothing/suits/utility.dmi
index 8c12f056e21fe..31de04d33a731 100644
Binary files a/icons/obj/clothing/suits/utility.dmi and b/icons/obj/clothing/suits/utility.dmi differ
diff --git a/icons/obj/clothing/suits/wintercoat.dmi b/icons/obj/clothing/suits/wintercoat.dmi
index 377c9ef61e30e..a70b4eb6cbe98 100644
Binary files a/icons/obj/clothing/suits/wintercoat.dmi and b/icons/obj/clothing/suits/wintercoat.dmi differ
diff --git a/icons/obj/clothing/under/civilian.dmi b/icons/obj/clothing/under/civilian.dmi
index 6707876c244b7..a81e3681deb20 100644
Binary files a/icons/obj/clothing/under/civilian.dmi and b/icons/obj/clothing/under/civilian.dmi differ
diff --git a/icons/obj/devices/mecha_equipment.dmi b/icons/obj/devices/mecha_equipment.dmi
index ebfa5438ae911..e22b021ae236b 100644
Binary files a/icons/obj/devices/mecha_equipment.dmi and b/icons/obj/devices/mecha_equipment.dmi differ
diff --git a/icons/obj/devices/new_assemblies.dmi b/icons/obj/devices/new_assemblies.dmi
index 7bf96e5ba92e3..f80f89ce20a09 100644
Binary files a/icons/obj/devices/new_assemblies.dmi and b/icons/obj/devices/new_assemblies.dmi differ
diff --git a/icons/obj/fishing.dmi b/icons/obj/fishing.dmi
index d97384f1f7994..58ab9944366dd 100644
Binary files a/icons/obj/fishing.dmi and b/icons/obj/fishing.dmi differ
diff --git a/icons/obj/fluff/containers.dmi b/icons/obj/fluff/containers.dmi
index 8aed1ffbb9a99..0e966c9f794fb 100644
Binary files a/icons/obj/fluff/containers.dmi and b/icons/obj/fluff/containers.dmi differ
diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi
index 7b6afcc37ffbe..acc932a40049d 100644
Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ
diff --git a/icons/obj/food/lizard.dmi b/icons/obj/food/lizard.dmi
index 9e60c814a2e5a..44dc43e84de9d 100644
Binary files a/icons/obj/food/lizard.dmi and b/icons/obj/food/lizard.dmi differ
diff --git a/icons/obj/machines/computer.dmi b/icons/obj/machines/computer.dmi
index 9fcc46bf9b4e8..34f632044c162 100644
Binary files a/icons/obj/machines/computer.dmi and b/icons/obj/machines/computer.dmi differ
diff --git a/icons/obj/machines/engine/turbine.dmi b/icons/obj/machines/engine/turbine.dmi
index 1ae45eb2a1b1f..afd9839af1341 100644
Binary files a/icons/obj/machines/engine/turbine.dmi and b/icons/obj/machines/engine/turbine.dmi differ
diff --git a/icons/obj/machines/mailsorter.dmi b/icons/obj/machines/mailsorter.dmi
new file mode 100644
index 0000000000000..8d09e36796f95
Binary files /dev/null and b/icons/obj/machines/mailsorter.dmi differ
diff --git a/icons/obj/machines/manufactorio.dmi b/icons/obj/machines/manufactorio.dmi
index 31abf6f6a20ee..58b08e4ab440b 100644
Binary files a/icons/obj/machines/manufactorio.dmi and b/icons/obj/machines/manufactorio.dmi differ
diff --git a/icons/obj/machines/vending.dmi b/icons/obj/machines/vending.dmi
index 319771e4e7fb5..8c39296a155f7 100644
Binary files a/icons/obj/machines/vending.dmi and b/icons/obj/machines/vending.dmi differ
diff --git a/icons/obj/medical/chemical.dmi b/icons/obj/medical/chemical.dmi
index e362c5126e193..8b1a3f574f828 100644
Binary files a/icons/obj/medical/chemical.dmi and b/icons/obj/medical/chemical.dmi differ
diff --git a/icons/obj/service/janitor.dmi b/icons/obj/service/janitor.dmi
index 9f28c6bbe046e..1ec087a7667f6 100644
Binary files a/icons/obj/service/janitor.dmi and b/icons/obj/service/janitor.dmi differ
diff --git a/icons/obj/signs.dmi b/icons/obj/signs.dmi
index 4e0ce76cd8672..f9a3301d82852 100644
Binary files a/icons/obj/signs.dmi and b/icons/obj/signs.dmi differ
diff --git a/icons/obj/storage/toolbox.dmi b/icons/obj/storage/toolbox.dmi
index 9ca99565f3174..49385d5b73cf2 100644
Binary files a/icons/obj/storage/toolbox.dmi and b/icons/obj/storage/toolbox.dmi differ
diff --git a/icons/obj/weapons/grenade.dmi b/icons/obj/weapons/grenade.dmi
index c65f6d0e9fb80..628b271d423e5 100644
Binary files a/icons/obj/weapons/grenade.dmi and b/icons/obj/weapons/grenade.dmi differ
diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi
index 2dab0cb3d8d08..0f3b0620198ee 100644
Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ
diff --git a/icons/obj/weapons/guns/ballistic.dmi b/icons/obj/weapons/guns/ballistic.dmi
index ef61f1d24949d..6f208f4d8b1cd 100644
Binary files a/icons/obj/weapons/guns/ballistic.dmi and b/icons/obj/weapons/guns/ballistic.dmi differ
diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi
index d3ecd385a7094..2776fbd4961a8 100644
Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ
diff --git a/icons/obj/weapons/guns/wide_guns.dmi b/icons/obj/weapons/guns/wide_guns.dmi
index 7e18f60eeb864..a193dcc53015f 100644
Binary files a/icons/obj/weapons/guns/wide_guns.dmi and b/icons/obj/weapons/guns/wide_guns.dmi differ
diff --git a/icons/obj/weapons/hammer.dmi b/icons/obj/weapons/hammer.dmi
index 751e626779890..2b4e0cc820488 100644
Binary files a/icons/obj/weapons/hammer.dmi and b/icons/obj/weapons/hammer.dmi differ
diff --git a/icons/obj/weapons/khopesh.dmi b/icons/obj/weapons/khopesh.dmi
index 20b084396aa6d..257ccc800dfb8 100644
Binary files a/icons/obj/weapons/khopesh.dmi and b/icons/obj/weapons/khopesh.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index ff9d1e62e9b31..3b67fc7927e51 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/icons/ui/repairbotmanagement/repairbot_smile.dmi b/icons/ui/repairbotmanagement/repairbot_smile.dmi
new file mode 100644
index 0000000000000..6dad3497910d7
Binary files /dev/null and b/icons/ui/repairbotmanagement/repairbot_smile.dmi differ
diff --git a/modular_doppler/bitrunning_prefs_disks/code/disks/prefs_disk.dm b/modular_doppler/bitrunning_prefs_disks/code/disks/prefs_disk.dm
new file mode 100644
index 0000000000000..6079e81de4beb
--- /dev/null
+++ b/modular_doppler/bitrunning_prefs_disks/code/disks/prefs_disk.dm
@@ -0,0 +1,119 @@
+/**
+ * Bitrunning tech disks which let you load a custom character preference for your bit avatar.
+ * This uses a preference selected from your character list.
+ * Optionally, this may include the loadout as well.
+ *
+ * For the sake of domain restrictions:
+ * - ability blocks block the application of character prefs.
+ * - item blocks block the application of character loadout.
+ */
+/obj/item/bitrunning_disk/preferences
+ name = "bitrunning program: personalized avatar"
+ desc = "A disk containing source code. It can be used to override your bit avatar's standard appearance. Further avatar disks will be ignored."
+
+ // Allows it to be held in the pocket
+ w_class = WEIGHT_CLASS_SMALL
+
+ /// Our chosen preference.
+ var/datum/preferences/chosen_preference
+ /// Whether we include the loadout as well.
+ var/include_loadout = FALSE
+ /// Mock client we use for forwarding to quirk assignment (beware, evil hacks).
+ var/datum/prefs_disk_client_interface/mock_client
+
+/obj/item/bitrunning_disk/preferences/Initialize(mapload)
+ . = ..()
+ register_context()
+
+/obj/item/bitrunning_disk/preferences/examine(mob/user)
+ . = ..()
+ if(isnull(chosen_preference))
+ return
+
+ . += span_info("Loadout application is currently [include_loadout ? "enabled" : "disabled"].")
+ . += span_notice("Ctrl-click to toggle loadout application.")
+
+/obj/item/bitrunning_disk/preferences/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
+ var/result = NONE
+ if(isnull(chosen_preference) && (held_item == src))
+ context[SCREENTIP_CONTEXT_LMB] = "Select avatar"
+ result = CONTEXTUAL_SCREENTIP_SET
+ if(!isturf(src.loc))
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Toggle loadout"
+ result = CONTEXTUAL_SCREENTIP_SET
+
+ return result
+
+/obj/item/bitrunning_disk/preferences/Destroy()
+ QDEL_NULL(chosen_preference)
+ QDEL_NULL(mock_client)
+ return ..()
+
+/obj/item/bitrunning_disk/preferences/attack_self(mob/user, modifiers)
+ . = ..()
+
+ if(isnull(user.client) || chosen_preference)
+ return
+
+ var/list/character_profiles = user.client.prefs?.create_character_profiles()
+ if(isnull(character_profiles) || !length(character_profiles))
+ return
+
+ var/choice = tgui_input_list(user, message = "Select a character", title = "Bitrunning Avatar", items = character_profiles)
+ if(isnull(choice) || !user.is_holding(src))
+ return
+
+ choice_made = choice
+ chosen_preference = new(user.client)
+ chosen_preference.load_character(character_profiles.Find(choice))
+
+ // Perform our evil hacks
+ if(isnull(mock_client))
+ mock_client = new
+ mock_client.prefs = chosen_preference
+ // Done loading from the client, so replace reference to the real client
+ chosen_preference.parent = mock_client
+
+ balloon_alert(user, "avatar set!")
+ playsound(user, 'sound/items/click.ogg', 50, TRUE)
+
+/obj/item/bitrunning_disk/preferences/item_ctrl_click(mob/user)
+ if(isturf(src.loc)) // If on a turf, we skip to dragging
+ return NONE
+ if(isnull(chosen_preference))
+ balloon_alert(user, "set preference first!")
+ return CLICK_ACTION_BLOCKING
+ include_loadout = !include_loadout
+ balloon_alert(user, include_loadout ? "loadout enabled!" : "loadout disabled!")
+
+ // High frequency range when enabled, low when disabled. More tactile.
+ var/toggle_frequency = include_loadout ? rand(45000, 55000) : rand(32000, 42000)
+ playsound(user, 'sound/items/click.ogg', 50, TRUE, frequency = toggle_frequency)
+
+ return CLICK_ACTION_SUCCESS
+
+/**
+ * Allows for ordering of the prefs disk.
+ */
+/datum/orderable_item/bitrunning_tech/prefs_disk
+ cost_per_order = 1000
+ purchase_path = /obj/item/bitrunning_disk/preferences
+ desc = "This disk contains a program that lets you load in custom bit avatars."
+
+/**
+ * Evil hack that allows us to assign quirks without needing to forward a real client.
+ * Using this instead of the normal mock client allows us to include only what we need without editing the base,
+ * or interfering with things like `mock_client_uid`.
+ *
+ * Much the same, this should match the interface of /client wherever necessary.
+ */
+/datum/prefs_disk_client_interface
+ /// Player preferences datum for the client
+ var/datum/preferences/prefs
+
+ /// The mob the client controls
+ var/mob/mob
+
+/// We don't actually care about award status, but we don't want it to runtime due to not existing.
+/datum/prefs_disk_client_interface/proc/get_award_status(achievement_type, mob/user, value = 1)
+ return 0
diff --git a/modular_doppler/bitrunning_prefs_disks/code/outfit_overrides/bitrunner_outfit_override.dm b/modular_doppler/bitrunning_prefs_disks/code/outfit_overrides/bitrunner_outfit_override.dm
new file mode 100644
index 0000000000000..fbbf76ed1b12a
--- /dev/null
+++ b/modular_doppler/bitrunning_prefs_disks/code/outfit_overrides/bitrunner_outfit_override.dm
@@ -0,0 +1,4 @@
+
+// Spawns a single preferences disk to start with for all bitrunners.
+/datum/outfit/job/bitrunner
+ r_pocket = /obj/item/bitrunning_disk/preferences
diff --git a/modular_doppler/bitrunning_prefs_disks/readme.md b/modular_doppler/bitrunning_prefs_disks/readme.md
new file mode 100644
index 0000000000000..b953df82da844
--- /dev/null
+++ b/modular_doppler/bitrunning_prefs_disks/readme.md
@@ -0,0 +1,47 @@
+
+
+SOON
+
+## Bitrunning Avatar Preference Disks
+
+Module ID: BITRUNNING_PREFS_DISKS
+
+### Description:
+
+Allows bitrunners to buy a personalized avatar disk, which lets them load in a given character preference, with all that entails.
+This includes even quirks through evil hacks, and optionally loadouts.
+Preference application and quirks are blocked if a domain blocks spells/abilities, loadouts are blocked if a domain blocks items.
+The evil hacks this performs are using a barebones mock client to allow for quirk assignment without forwarding or affecting the real client.
+
+
+
+### TG Proc/File Changes:
+
+- `code/modules/bitrunning/server/obj_generation.dm`: `proc/stock_gear`
+
+
+### Modular Overrides:
+
+- N/A
+
+
+### Defines:
+
+- N/A
+
+
+### Included files that are not contained in this module:
+
+- N/A
+
+
+### Credits: 00-Steven
+
+
\ No newline at end of file
diff --git a/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm b/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm
index 6b4a9b82821f3..3ee0efd219e47 100644
--- a/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm
+++ b/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm
@@ -15,9 +15,9 @@
layer = ABOVE_MOB_LAYER
can_change_cable_layer = TRUE
/// How much power the turbine makes without a storm
- var/regular_power_production = 2500
+ var/regular_power_production = 1 KILO WATTS
/// How much power the turbine makes during a storm
- var/storm_power_production = 10000
+ var/storm_power_production = 5 KILO WATTS
/// Is our pressure too low to function?
var/pressure_too_low = FALSE
/// Minimum external pressure needed to work
diff --git a/modular_doppler/colony_fabricator/code/colony_fabricator.dm b/modular_doppler/colony_fabricator/code/colony_fabricator.dm
index b9c38bd3090bc..946ad8322fecd 100644
--- a/modular_doppler/colony_fabricator/code/colony_fabricator.dm
+++ b/modular_doppler/colony_fabricator/code/colony_fabricator.dm
@@ -13,8 +13,6 @@
allowed_buildtypes = COLONY_FABRICATOR
/// The item we turn into when repacked
var/repacked_type = /obj/item/flatpacked_machine
- /// The sound loop played while the fabricator is making something
- var/datum/looping_sound/colony_fabricator_running/soundloop
/obj/machinery/rnd/production/colony_lathe/Initialize(mapload)
. = ..()
@@ -22,14 +20,9 @@
AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER)
// We don't get new designs but can't print stuff if something's not researched, so we use the web that has everything researched
stored_research = locate(/datum/techweb/admin) in SSresearch.techwebs
- soundloop = new(src, FALSE)
if(!mapload)
flick("colony_lathe_deploy", src) // Sick ass deployment animation
-/obj/machinery/rnd/production/colony_lathe/Destroy()
- QDEL_NULL(soundloop)
- return ..()
-
// formerly NO_DECONSTRUCTION
/obj/machinery/rnd/production/colony_lathe/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver)
return NONE
@@ -45,14 +38,12 @@
return
/obj/machinery/rnd/production/colony_lathe/start_printing_visuals()
- soundloop.start()
set_light(l_range = 1.5)
icon_state = "colony_lathe_working"
update_appearance()
/obj/machinery/rnd/production/colony_lathe/finalize_build()
. = ..()
- soundloop.stop()
set_light(l_range = 0)
icon_state = base_icon_state
update_appearance()
diff --git a/modular_doppler/colony_fabricator/code/looping_sounds.dm b/modular_doppler/colony_fabricator/code/looping_sounds.dm
index a1f26b8fb8d88..f93e7288a5b2e 100644
--- a/modular_doppler/colony_fabricator/code/looping_sounds.dm
+++ b/modular_doppler/colony_fabricator/code/looping_sounds.dm
@@ -1,17 +1,3 @@
-/datum/looping_sound/colony_fabricator_running
- start_sound = 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav'
- start_length = 1
- mid_sounds = list(
- 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav' = 1,
- 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav' = 1,
- 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav' = 1,
- 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav' = 1,
- )
- mid_length = 3 SECONDS
- end_sound = 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav'
- volume = 100
- falloff_exponent = 3
-
/datum/looping_sound/arc_furnace_running
mid_sounds = list(
'modular_doppler/colony_fabricator/sounds/arc_furnace/arc_furnace_mid_1.wav' = 1,
diff --git a/modular_doppler/colony_fabricator/code/machines/solar_panels.dm b/modular_doppler/colony_fabricator/code/machines/solar_panels.dm
index b66640e731315..8d32d5b18a308 100644
--- a/modular_doppler/colony_fabricator/code/machines/solar_panels.dm
+++ b/modular_doppler/colony_fabricator/code/machines/solar_panels.dm
@@ -14,7 +14,7 @@
return
/obj/machinery/power/solar/deployable/on_deconstruction(disassembled)
- var/obj/item/solar_assembly/assembly = locate() in src
+ var/obj/item/solar_assembly/assembly = locate() in contents
if(assembly)
qdel(assembly)
return ..()
@@ -69,7 +69,7 @@
return NONE
/obj/machinery/power/tracker/deployable/on_deconstruction(disassembled)
- var/obj/item/solar_assembly/assembly = locate() in src
+ var/obj/item/solar_assembly/assembly = locate() in contents
if(assembly)
qdel(assembly)
return ..()
diff --git a/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm b/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm
index 86bd78f1d062b..e68d48a6a9964 100644
--- a/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm
+++ b/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm
@@ -14,7 +14,7 @@
anchored = TRUE
max_sheets = 25
time_per_sheet = parent_type::time_per_sheet * (5 / 3) //66.6% better
- power_gen = parent_type::power_gen * 2.5
+ power_gen = 10 KILO JOULES
drag_slowdown = 1.5
sheet_path = /obj/item/stack/sheet/mineral/plasma
/// The item we turn into when repacked
diff --git a/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm b/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm
index fcd14acb0d78d..370a528107454 100644
--- a/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm
+++ b/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm
@@ -20,7 +20,7 @@
/// What this thing deconstructs into
var/deconstruction_type = /obj/item/flatpacked_machine/stirling_generator
/// Maximum efficient heat difference, at what heat difference does more difference stop meaning anything for power?
- var/max_efficient_heat_difference = 8000
+ var/max_efficient_heat_difference = 6000
/// Maximum power output from this machine
var/max_power_output = 100 KILO WATTS
/// How much power the generator is currently making
diff --git a/modular_doppler/colony_fabricator/code/tools/tools.dm b/modular_doppler/colony_fabricator/code/tools/tools.dm
index c48670058f7c7..0ffef60ebde68 100644
--- a/modular_doppler/colony_fabricator/code/tools/tools.dm
+++ b/modular_doppler/colony_fabricator/code/tools/tools.dm
@@ -7,7 +7,7 @@
not much quicker than unpowered tools ."
icon = 'modular_doppler/colony_fabricator/icons/tools.dmi'
icon_state = "drill"
- belt_icon_state = null
+ inside_belt_icon_state = null
inhand_icon_state = "drill"
worn_icon_state = "drill"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
diff --git a/modular_doppler/colony_fabricator/sounds/attributions.txt b/modular_doppler/colony_fabricator/sounds/attributions.txt
index 565a818121207..534c8d0c85406 100644
--- a/modular_doppler/colony_fabricator/sounds/attributions.txt
+++ b/modular_doppler/colony_fabricator/sounds/attributions.txt
@@ -3,9 +3,6 @@ a contributor who no longer wishes to be named
specifically for free open source use from the novasector codebase, so don't worry about it.
modular_doppler/colony_fabricator/sound/arc_furnace/arc_furnace_mid_(1 - 4).wav
-modular_doppler/colony_fabricator/sound/fabricator/fabricator_mid_(1 - 4).wav
-modular_doppler/colony_fabricator/sound/fabricator/fabricator_end.wav
-modular_doppler/colony_fabricator/sound/fabricator/fabricator_start.wav
The following sounds are from https://pixabay.com/sound-effects/wall-air-conditioner-43901/
diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav
deleted file mode 100644
index 90e16a116fb7d..0000000000000
Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav and /dev/null differ
diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav
deleted file mode 100644
index 5a70874cda7a4..0000000000000
Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav and /dev/null differ
diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav
deleted file mode 100644
index a8ea099036c83..0000000000000
Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav and /dev/null differ
diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav
deleted file mode 100644
index b5d0a0117c5cb..0000000000000
Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav and /dev/null differ
diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav
deleted file mode 100644
index 1700b0fc379bb..0000000000000
Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav and /dev/null differ
diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav
deleted file mode 100644
index 673a9da8b41c3..0000000000000
Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav and /dev/null differ
diff --git a/modular_doppler/deathmatch/deathmatch_loadouts.dm b/modular_doppler/deathmatch/deathmatch_loadouts.dm
new file mode 100644
index 0000000000000..1ac6040ce9ea0
--- /dev/null
+++ b/modular_doppler/deathmatch/deathmatch_loadouts.dm
@@ -0,0 +1,12 @@
+/**
+ * CYBERSUN SIM
+ */
+/datum/outfit/deathmatch_loadout/cybersun_sim
+ name = "DM: Cybersun Grunt"
+ display_name = "Cybersun Grunt"
+
+ uniform = /obj/item/clothing/under/syndicate/combat
+ mask = /obj/item/clothing/mask/neck_gaiter/cybersun
+ shoes = /obj/item/clothing/shoes/combat
+ gloves = /obj/item/clothing/gloves/combat
+ id = /obj/item/card/id/advanced/chameleon
diff --git a/modular_doppler/deathmatch/deathmatch_maps.dm b/modular_doppler/deathmatch/deathmatch_maps.dm
new file mode 100644
index 0000000000000..303a34411a161
--- /dev/null
+++ b/modular_doppler/deathmatch/deathmatch_maps.dm
@@ -0,0 +1,10 @@
+/**
+ * CYBERSUN SIM
+ */
+/datum/lazy_template/deathmatch/cybersun_sim
+ map_dir = "_maps/doppler/deathmatch"
+ name = "Cybersun Training Simulator"
+ max_players = 4
+ allowed_loadouts = list(/datum/outfit/deathmatch_loadout/cybersun_sim)
+ map_name = "cybersun_sim"
+ key = "cybersun_sim"
diff --git a/modular_doppler/deathmatch/deathmatch_structures.dm b/modular_doppler/deathmatch/deathmatch_structures.dm
new file mode 100644
index 0000000000000..6510ae9c43a82
--- /dev/null
+++ b/modular_doppler/deathmatch/deathmatch_structures.dm
@@ -0,0 +1,8 @@
+/obj/structure/emergency_shield/timer
+ icon_state = "shield-greyscale"
+ color = "#ff0000b9"
+ resistance_flags = INDESTRUCTIBLE
+
+/obj/structure/emergency_shield/timer/Initialize(mapload)
+ . = ..()
+ QDEL_IN(src, 15 SECONDS)
diff --git a/modular_doppler/deforest_medical_items/code/cargo_packs.dm b/modular_doppler/deforest_medical_items/code/cargo_packs.dm
index 5dced06ad9d9e..5904f201097f5 100644
--- a/modular_doppler/deforest_medical_items/code/cargo_packs.dm
+++ b/modular_doppler/deforest_medical_items/code/cargo_packs.dm
@@ -29,34 +29,15 @@
/obj/item/storage/medkit/combat_surgeon/stocked = 3,
)
-/datum/supply_pack/medical/kit_technician
- name = "Heavy Duty Medical Kit Crate - Technician"
- crate_name = "technician kit crate"
- desc = "Contains a pink medical technician kit."
- access = ACCESS_MEDICAL
- cost = CARGO_CRATE_VALUE * 5.5
- contains = list(
- /obj/item/storage/backpack/duffelbag/deforest_paramedic/stocked,
- )
-
-/datum/supply_pack/medical/kit_surgical
- name = "Heavy Duty Medical Kit Crate - Surgical"
- crate_name = "surgical kit crate"
- desc = "Contains a grey first responder surgical kit."
- access = ACCESS_MEDICAL
- cost = CARGO_CRATE_VALUE * 5
- contains = list(
- /obj/item/storage/backpack/duffelbag/deforest_surgical/stocked,
- )
-
/datum/supply_pack/medical/kit_medical
- name = "Heavy Duty Medical Kit Crate - Medical"
+ name = "Heavy Duty Medical Kit Crate"
crate_name = "medical kit crate"
- desc = "Contains an orange satchel medical kit."
+ desc = "Contains two heavy-duty medical kits for emergencies."
access = ACCESS_MEDICAL
- cost = CARGO_CRATE_VALUE * 4.5
+ cost = CARGO_CRATE_VALUE * 11
contains = list(
/obj/item/storage/backpack/duffelbag/deforest_medkit/stocked,
+ /obj/item/storage/backpack/duffelbag/deforest_surgical/stocked,
)
/datum/supply_pack/medical/deforest_vendor_refill
diff --git a/modular_doppler/deforest_medical_items/code/healing_stack_items.dm b/modular_doppler/deforest_medical_items/code/healing_stack_items.dm
index 245ba6699f93a..9c8cf1f35ca58 100644
--- a/modular_doppler/deforest_medical_items/code/healing_stack_items.dm
+++ b/modular_doppler/deforest_medical_items/code/healing_stack_items.dm
@@ -33,7 +33,7 @@
var/treatment_sound = 'sound/items/duct_tape/duct_tape_rip.ogg'
// This is only relevant for the types of wounds defined, we can't work if there are none
-/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/user, silent, looping)
+/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/user, silent, looping, auto_change_zone = FALSE)
if(patient.has_status_effect(/datum/status_effect/vulnerable_to_damage))
patient.balloon_alert(user, "still recovering from last use!")
diff --git a/modular_doppler/deforest_medical_items/code/illegal_injectors.dm b/modular_doppler/deforest_medical_items/code/illegal_injectors.dm
index 7c3059f5d976e..59b91db488b64 100644
--- a/modular_doppler/deforest_medical_items/code/illegal_injectors.dm
+++ b/modular_doppler/deforest_medical_items/code/illegal_injectors.dm
@@ -1,18 +1,3 @@
-// Twitch, because having sandevistans be implants is for losers, just inject it!
-/obj/item/reagent_containers/hypospray/medipen/deforest/twitch
- name = "TWitch sensory stimulant injector"
- desc = "A Deforest branded autoinjector, loaded with 'TWitch' among other reagents. This drug is known to make \
- those who take it 'see faster', whatever that means."
- base_icon_state = "twitch"
- icon_state = "twitch"
- list_reagents = list(
- /datum/reagent/drug/twitch = 10,
- /datum/reagent/drug/maint/tar = 5,
- /datum/reagent/medicine/silibinin = 5,
- /datum/reagent/toxin/leadacetate = 5,
- )
- custom_price = PAYCHECK_COMMAND * 3.5
-
// Demoneye, for when you feel the need to become "fucking invincible"
/obj/item/reagent_containers/hypospray/medipen/deforest/demoneye
name = "DemonEye steroid injector"
@@ -54,10 +39,11 @@
/datum/reagent/medicine/c2/penthrite = 5,
/datum/reagent/medicine/polypyr = 5,
/datum/reagent/medicine/silibinin = 5,
- /datum/reagent/medicine/omnizine = 5,
+ /datum/reagent/medicine/omnizine = 10,
/datum/reagent/inverse/healing/tirimol = 5,
)
custom_price = PAYCHECK_COMMAND * 2.5
+ volume = 30
// Combat stimulant that makes you immune to slowdowns for a bit
/obj/item/reagent_containers/hypospray/medipen/deforest/synalvipitol
diff --git a/modular_doppler/deforest_medical_items/code/injectors.dm b/modular_doppler/deforest_medical_items/code/injectors.dm
index 02558b52bb102..27ab2969f9d45 100644
--- a/modular_doppler/deforest_medical_items/code/injectors.dm
+++ b/modular_doppler/deforest_medical_items/code/injectors.dm
@@ -77,7 +77,7 @@
/datum/reagent/medicine/synaptizine = 5,
/datum/reagent/medicine/inaprovaline = 5,
/datum/reagent/determination = 10,
- /datum/reagent/toxin/histamine = 5,
+ /datum/reagent/toxin/lipolicide = 5,
)
// Morpital, heals a small amount of damage and kills pain for a bit
@@ -87,9 +87,9 @@
base_icon_state = "morpital"
icon_state = "morpital"
list_reagents = list(
- /datum/reagent/medicine/morphine = 5,
- /datum/reagent/medicine/omnizine/protozine = 15,
- /datum/reagent/toxin/staminatoxin = 5,
+ /datum/reagent/medicine/mine_salve = 5,
+ /datum/reagent/medicine/omnizine = 15,
+ /datum/reagent/toxin/lipolicide = 5,
)
// Lipital, heals more damage than morpital but doesnt work much at higher damages
@@ -102,7 +102,7 @@
list_reagents = list(
/datum/reagent/medicine/lidocaine = 5,
/datum/reagent/medicine/omnizine = 5,
- /datum/reagent/medicine/c2/probital = 10,
+ /datum/reagent/medicine/c2/libital = 10,
)
// Anti-poisoning injector, with a little bit of radiation healing as a treat
@@ -115,7 +115,7 @@
list_reagents = list(
/datum/reagent/medicine/c2/multiver = 10,
/datum/reagent/medicine/potass_iodide = 10,
- /datum/reagent/nitrous_oxide = 5,
+ /datum/reagent/toxin/lipolicide = 5,
)
// Epinephrine and helps a little bit against stuns and stamina damage
@@ -141,7 +141,7 @@
/datum/reagent/medicine/atropine = 10,
/datum/reagent/medicine/coagulant/fabricated = 5,
/datum/reagent/medicine/salbutamol = 5,
- /datum/reagent/toxin/staminatoxin = 5,
+ /datum/reagent/toxin/lipolicide = 5,
)
// Coagulant, really not a whole lot more
@@ -180,7 +180,7 @@
/datum/reagent/medicine/mine_salve = 5,
/datum/reagent/medicine/leporazine = 5,
/datum/reagent/medicine/c2/lenturi = 10,
- /datum/reagent/toxin/staminatoxin = 5,
+ /datum/reagent/toxin/lipolicide = 5,
)
// Stabilizes a lot of stats like drowsiness, sanity, dizziness, so on
diff --git a/modular_doppler/deforest_medical_items/code/medstation.dm b/modular_doppler/deforest_medical_items/code/medstation.dm
deleted file mode 100644
index 019cc57320d9e..0000000000000
--- a/modular_doppler/deforest_medical_items/code/medstation.dm
+++ /dev/null
@@ -1,55 +0,0 @@
-/obj/machinery/biogenerator/medstation
- name = "wall med-station"
- desc = "An advanced machine seen in frontier outposts and colonies capable of turning organic plant matter into \
- various emergency medical supplies and injectors. You can find one of these in the medical sections of just about \
- any frontier installation."
- icon = 'modular_doppler/deforest_medical_items/icons/medstation.dmi'
- circuit = null
- anchored = TRUE
- density = FALSE
- efficiency = 1
- productivity = 1
- show_categories = list(
- RND_CATEGORY_DEFOREST_MEDICAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
- /// The item we turn into when repacked
- var/repacked_type = /obj/item/wallframe/frontier_medstation
-
-MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/biogenerator/medstation, 29)
-
-/obj/machinery/biogenerator/medstation/RefreshParts()
- . = ..()
- efficiency = 1
- productivity = 1
-
-/obj/machinery/biogenerator/medstation/default_unfasten_wrench(mob/user, obj/item/wrench/tool, time)
- user.balloon_alert(user, "deconstructing...")
- tool.play_tool_sound(src)
- if(tool.use_tool(src, user, 1 SECONDS))
- playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE)
- deconstruct(TRUE)
- return
-
-/obj/machinery/biogenerator/medstation/on_deconstruction(disassembled)
- if(disassembled)
- new repacked_type(drop_location())
-
-/obj/machinery/biogenerator/medstation/default_deconstruction_crowbar()
- return
-
-// Deployable item for cargo for the medstation
-
-/obj/item/wallframe/frontier_medstation
- name = "unmounted wall med-station"
- desc = "The innovative technology of a biogenerator to print medical supplies, but able to be mounted neatly on a wall out of the way."
- icon = 'modular_doppler/deforest_medical_items/icons/medstation.dmi'
- icon_state = "biogenerator_parts"
- w_class = WEIGHT_CLASS_NORMAL
- result_path = /obj/machinery/biogenerator/medstation
- pixel_shift = 29
- custom_materials = list(
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5,
- /datum/material/silver = SHEET_MATERIAL_AMOUNT * 3,
- /datum/material/gold = SHEET_MATERIAL_AMOUNT,
- )
diff --git a/modular_doppler/deforest_medical_items/code/medstation_designs/blood.dm b/modular_doppler/deforest_medical_items/code/medstation_designs/blood.dm
deleted file mode 100644
index 0d523d14f4fa7..0000000000000
--- a/modular_doppler/deforest_medical_items/code/medstation_designs/blood.dm
+++ /dev/null
@@ -1,131 +0,0 @@
-/datum/design/organic_bloodbag_aplus
- name = "A+ Blood Pack"
- id = "organic_bloodbag_aplus"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/a_plus
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_aminus
- name = "A- Blood Pack"
- id = "organic_bloodbag_aminus"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/a_minus
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_bplus
- name = "B+ Blood Pack"
- id = "organic_bloodbag_bplus"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/b_plus
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_bminus
- name = "B- Blood Pack"
- id = "organic_bloodbag_bminus"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/b_minus
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_oplus
- name = "O+ Blood Pack"
- id = "organic_bloodbag_oplus"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/o_plus
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_ominus
- name = "O- Blood Pack"
- id = "organic_bloodbag_ominus"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 150)
- build_path = /obj/item/reagent_containers/blood/o_minus
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_lizard
- name = "L Blood Pack"
- id = "organic_bloodbag_lizard"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/lizard
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_ethereal
- name = "LE Blood Pack"
- id = "organic_bloodbag_ethereal"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/ethereal
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_plant
- name = "H2O Blood Pack"
- id = "organic_bloodbag_plant"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 50)
- build_path = /obj/item/reagent_containers/blood/podperson
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_slimeperson
- name = "TOX Blood Pack"
- id = "organic_bloodbag_slimeperson"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/toxin
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_robot
- name = "R Blood Pack"
- id = "organic_bloodbag_robot"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/robot
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
-
-/datum/design/organic_bloodbag_bug
- name = "I Blood Pack"
- id = "organic_bloodbag_bug"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/reagent_containers/blood/bug
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_BLOOD,
- )
diff --git a/modular_doppler/deforest_medical_items/code/medstation_designs/medical.dm b/modular_doppler/deforest_medical_items/code/medstation_designs/medical.dm
deleted file mode 100644
index 7eb8106e3a4e4..0000000000000
--- a/modular_doppler/deforest_medical_items/code/medstation_designs/medical.dm
+++ /dev/null
@@ -1,98 +0,0 @@
-/datum/design/organic_printer_balm
- name = "Red Sun Balm"
- id = "organic_sun_balm"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 50)
- build_path = /obj/item/stack/medical/ointment/red_sun
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_gauze
- name = "Sealed Aseptic Guaze"
- id = "organic_gauze"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 50)
- build_path = /obj/item/stack/medical/gauze/sterilized
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_coagulant_f
- name = "Coagulant-F Packet"
- id = "organic_coagulant_pack"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 50)
- build_path = /obj/item/stack/medical/suture/coagulant
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_ointment
- name = "Ointment"
- id = "organic_ointment"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 25)
- build_path = /obj/item/stack/medical/ointment
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_bruise_pack
- name = "Bruise Packs"
- id = "organic_bruise_packs"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 25)
- build_path = /obj/item/stack/medical/bruise_pack
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_amollin_pill
- name = "Amollin Painkiller"
- id = "organic_printer_amollin_pill"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 25)
- build_path = /obj/item/reagent_containers/pill/amollin
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_bandaid
- name = "First Aid Bandage"
- id = "organic_bandaid"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/stack/medical/bandage
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_bone_gel
- name = "Bone Gel"
- id = "organic_bone_gel"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/stack/medical/bone_gel
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
-
-/datum/design/organic_printer_surgical_tape
- name = "Surgical Tape"
- id = "organic_surgical_tape"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 100)
- build_path = /obj/item/stack/sticky_tape/surgical
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_DEFOREST_MEDICAL,
- )
diff --git a/modular_doppler/deforest_medical_items/code/storage_items.dm b/modular_doppler/deforest_medical_items/code/storage_items.dm
index 4380b66587921..bff050345dea5 100644
--- a/modular_doppler/deforest_medical_items/code/storage_items.dm
+++ b/modular_doppler/deforest_medical_items/code/storage_items.dm
@@ -393,104 +393,3 @@
/obj/item/bodybag,
/obj/item/storage/hypospraykit,
))
-
-// Midrange bag for paramedics, hypospray and more flexible item wise than surgical, but restricted to small items only
-/obj/item/storage/backpack/duffelbag/deforest_paramedic
- name = "medical technician kit"
- desc = "Compared to its sibling the first responder surgical kit, this variant is equipped with a hypospray hit for roving paramedics. Featuring rapid access pockets that are lightweight, it can however only hold smaller items."
- icon = 'modular_doppler/deforest_medical_items/icons/storage.dmi'
- icon_state = "technician"
- lefthand_file = 'modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi'
- righthand_file = 'modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi'
- inhand_icon_state = "technician"
- worn_icon = 'modular_doppler/deforest_medical_items/icons/worn/worn.dmi'
-// worn_icon_teshari = 'modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi'
- equip_sound = 'sound/items/equip/jumpsuit_equip.ogg'
- pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
- drop_sound = 'sound/items/handling/cloth_drop.ogg'
- slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT
- storage_type = /datum/storage/duffel/deforest_paramedic
- zip_slowdown = 0.3 // Midrange between the other two bags
- unzip_duration = 1.2 SECONDS
-
-/obj/item/storage/backpack/duffelbag/deforest_paramedic/stocked
-
-/obj/item/storage/backpack/duffelbag/deforest_paramedic/stocked/PopulateContents()
- var/static/items_inside = list(
- /obj/item/scalpel = 1,
- /obj/item/hemostat = 1,
- /obj/item/retractor = 1,
- /obj/item/circular_saw = 1,
- /obj/item/bonesetter = 1,
- /obj/item/cautery = 1,
- /obj/item/surgical_drapes = 1,
- /obj/item/stack/medical/bone_gel = 1,
- /obj/item/stack/medical/wound_recovery = 1,
- /obj/item/stack/medical/wound_recovery/rapid_coagulant = 1,
- /obj/item/stack/medical/mesh/advanced = 2,
- /obj/item/stack/medical/suture/medicated = 2,
- /obj/item/stack/medical/gauze/sterilized = 1,
- /obj/item/storage/pill_bottle/painkiller = 1,
- /obj/item/hypospray/mkii/piercing/atropine = 1,
- /obj/item/reagent_containers/cup/hypovial/small/libital = 1,
- /obj/item/reagent_containers/cup/hypovial/small/lenturi = 1,
- /obj/item/reagent_containers/cup/hypovial/small/seiver = 1,
- /obj/item/healthanalyzer = 1,
- )
- generate_items_inside(items_inside,src)
-
-/datum/storage/duffel/deforest_paramedic
- max_specific_storage = WEIGHT_CLASS_SMALL
- max_total_storage = 21 * WEIGHT_CLASS_SMALL
- max_slots = 21
-
-/datum/storage/duffel/deforest_paramedic/New()
- . = ..()
-
- can_hold = typecacheof(list(
- /obj/item/bonesetter,
- /obj/item/cautery,
- /obj/item/circular_saw,
- /obj/item/clothing/neck/stethoscope,
- /obj/item/clothing/mask/breath,
- /obj/item/clothing/mask/muzzle,
- /obj/item/clothing/mask/surgical,
- /obj/item/clothing/suit/toggle/labcoat/hospitalgown,
- /obj/item/dnainjector,
- /obj/item/extinguisher/mini,
- /obj/item/flashlight/pen,
- /obj/item/geiger_counter,
- /obj/item/healthanalyzer,
- /obj/item/hemostat,
- /obj/item/holosign_creator/medical,
- /obj/item/hypospray,
- /obj/item/implant,
- /obj/item/implantcase,
- /obj/item/implanter,
- /obj/item/lazarus_injector,
- /obj/item/lighter,
- /obj/item/pinpointer/crew,
- /obj/item/reagent_containers/blood,
- /obj/item/reagent_containers/dropper,
- /obj/item/reagent_containers/cup/beaker,
- /obj/item/reagent_containers/cup/bottle,
- /obj/item/reagent_containers/cup/hypovial,
- /obj/item/reagent_containers/cup/tube,
- /obj/item/reagent_containers/hypospray,
- /obj/item/reagent_containers/medigel,
- /obj/item/reagent_containers/pill,
- /obj/item/reagent_containers/spray,
- /obj/item/reagent_containers/syringe,
- /obj/item/retractor,
- /obj/item/scalpel,
- /obj/item/surgical_drapes,
- /obj/item/stack/medical,
- /obj/item/stack/sticky_tape,
- /obj/item/sensor_device,
- /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/pill_bottle,
- /obj/item/tank/internals/emergency_oxygen,
- /obj/item/storage/box/bandages,
- /obj/item/bodybag,
- /obj/item/storage/hypospraykit,
- ))
diff --git a/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm b/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm
index 78a9a0dd7dc7b..0ecdefeb3f81e 100644
--- a/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm
+++ b/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm
@@ -5,7 +5,7 @@
desc = "A massive glowing holosign warning you to keep out of it, there's probably some important stuff happening in there!"
icon = 'modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi'
icon_state = "treatment_zone"
- layer = BELOW_OBJ_LAYER
+ layer = BOT_PATH_LAYER
pixel_x = -32
pixel_y = -32
use_vis_overlay = FALSE
diff --git a/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi b/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi
index 61e9fb5f7501c..c53eab3ba9d76 100644
Binary files a/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi and b/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi differ
diff --git a/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi b/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi
index b09d02d258a6c..c5a2099e96b20 100644
Binary files a/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi and b/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi differ
diff --git a/modular_doppler/deforest_medical_items/icons/injectors.dmi b/modular_doppler/deforest_medical_items/icons/injectors.dmi
index 8ee669c0bc6b6..50f4f2c4db8a4 100644
Binary files a/modular_doppler/deforest_medical_items/icons/injectors.dmi and b/modular_doppler/deforest_medical_items/icons/injectors.dmi differ
diff --git a/modular_doppler/deforest_medical_items/icons/medstation.dmi b/modular_doppler/deforest_medical_items/icons/medstation.dmi
deleted file mode 100644
index 2de94bc420a8a..0000000000000
Binary files a/modular_doppler/deforest_medical_items/icons/medstation.dmi and /dev/null differ
diff --git a/modular_doppler/deforest_medical_items/icons/stack_items.dmi b/modular_doppler/deforest_medical_items/icons/stack_items.dmi
index c9e82f1375f79..40fb1dc18507b 100644
Binary files a/modular_doppler/deforest_medical_items/icons/stack_items.dmi and b/modular_doppler/deforest_medical_items/icons/stack_items.dmi differ
diff --git a/modular_doppler/deforest_medical_items/icons/storage.dmi b/modular_doppler/deforest_medical_items/icons/storage.dmi
index 513aed6e2a1bd..bd4c2f7b0dd0a 100644
Binary files a/modular_doppler/deforest_medical_items/icons/storage.dmi and b/modular_doppler/deforest_medical_items/icons/storage.dmi differ
diff --git a/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi b/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi
index 8596bce378d80..5c99df6db6e34 100644
Binary files a/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi and b/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi differ
diff --git a/modular_doppler/deforest_medical_items/icons/worn/worn.dmi b/modular_doppler/deforest_medical_items/icons/worn/worn.dmi
index 942715fe56a7c..bf394833ef356 100644
Binary files a/modular_doppler/deforest_medical_items/icons/worn/worn.dmi and b/modular_doppler/deforest_medical_items/icons/worn/worn.dmi differ
diff --git a/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi b/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi
index 276804f908b30..ea7249f36dc4d 100644
Binary files a/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi and b/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi differ
diff --git a/modular_doppler/doppler_command_uniforms/hop/icon.dmi b/modular_doppler/doppler_command_uniforms/hop/icon.dmi
new file mode 100644
index 0000000000000..ef048c4a3e1c1
Binary files /dev/null and b/modular_doppler/doppler_command_uniforms/hop/icon.dmi differ
diff --git a/modular_doppler/doppler_command_uniforms/hop/overrides.dm b/modular_doppler/doppler_command_uniforms/hop/overrides.dm
new file mode 100644
index 0000000000000..3b2ac56100e61
--- /dev/null
+++ b/modular_doppler/doppler_command_uniforms/hop/overrides.dm
@@ -0,0 +1,66 @@
+/obj/item/clothing/under/rank/civilian/head_of_personnel
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "uniform"
+ inhand_icon_state = null
+
+/obj/item/clothing/under/rank/civilian/head_of_personnel/skirt
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "skirt"
+ inhand_icon_state = null
+
+/obj/item/clothing/under/rank/civilian/head_of_personnel/suit // This wasn't resprited, so we set the icon back to normal
+ icon = 'icons/obj/clothing/under/civilian.dmi'
+ worn_icon = 'icons/mob/clothing/under/civilian.dmi'
+
+/obj/item/clothing/suit/armor/vest/hop
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "jacket"
+ inhand_icon_state = null
+
+/obj/item/clothing/head/hats/hopcap
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "hat"
+ inhand_icon_state = null
+
+/obj/item/clothing/suit/hooded/wintercoat/hop
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "wintercoat"
+ inhand_icon_state = null
+
+/obj/item/clothing/head/hooded/winterhood/hop
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "winterhood"
+ inhand_icon_state = null
+
+/obj/item/clothing/neck/cloak/hop
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "cloak"
+ inhand_icon_state = null
+
+/obj/item/clothing/under/plasmaman/head_of_personnel
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "plasma_suit"
+ inhand_icon_state = null
+
+/obj/item/clothing/head/helmet/space/plasmaman/head_of_personnel
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "plasma_helmet"
+ inhand_icon_state = null
+
+/obj/item/clothing/gloves/color/plasmaman/head_of_personnel
+ // Old desc references them looking like the captain's gloves
+ desc = "Covers up those scandalous, bony hands. They come with a sleek, black-and-purple finish to hide those pesky ink stains."
+
+ icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi'
+ worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi'
+ icon_state = "plasma_gloves"
+ inhand_icon_state = null
diff --git a/modular_doppler/doppler_command_uniforms/hop/worn.dmi b/modular_doppler/doppler_command_uniforms/hop/worn.dmi
new file mode 100644
index 0000000000000..5fdd797438df4
Binary files /dev/null and b/modular_doppler/doppler_command_uniforms/hop/worn.dmi differ
diff --git a/modular_doppler/epic_loot/code/_basetype.dm b/modular_doppler/epic_loot/code/_basetype.dm
new file mode 100644
index 0000000000000..48a1a91349a38
--- /dev/null
+++ b/modular_doppler/epic_loot/code/_basetype.dm
@@ -0,0 +1,83 @@
+/obj/structure/maintenance_loot_structure
+ name = "abandoned crate"
+ icon = 'modular_doppler/epic_loot/icons/loot_structures.dmi'
+ density = TRUE
+ anchored = TRUE
+ layer = BELOW_OBJ_LAYER
+ obj_flags = CAN_BE_HIT
+ pass_flags_self = LETPASSTHROW|LETPASSCLICKS
+ max_integrity = 200
+
+ /// What storage datum we use
+ var/storage_datum_to_use = /datum/storage/maintenance_loot_structure
+ /// Weighted list of the loot that can spawn in this
+ var/list/loot_weighted_list = list(
+ /obj/effect/spawner/random/maintenance = 1,
+ )
+ /// This one is going to be weird, a string of dice to use when rolling number of contents
+ var/loot_spawn_dice_string = "2d4+1"
+
+/obj/structure/maintenance_loot_structure/Initialize(mapload)
+ . = ..()
+ create_storage(storage_type = storage_datum_to_use)
+ make_contents()
+
+/obj/structure/maintenance_loot_structure/examine(mob/user)
+ . = ..()
+ . += span_engradio("It might have other things you're looking for if you look again later ?")
+ return .
+
+// Since it doesn't want to play nice for whatever reason
+/obj/structure/maintenance_loot_structure/attack_hand(mob/living/user)
+ if(!user.can_perform_action(src, NEED_HANDS))
+ return ..()
+ atom_storage.open_storage(user)
+ return TRUE
+
+/// Fills random contents into this structure's inventory, starting a loop to respawn loot if the container is empty later
+/obj/structure/maintenance_loot_structure/proc/make_contents()
+ var/refill_check_time = rand(15 MINUTES, 30 MINUTES)
+ spawn_loot()
+ addtimer(CALLBACK(src, PROC_REF(make_contents)), refill_check_time)
+
+/// Spawns a random amount of loot into the structure, random numbers based on the amount of storage slots inside it
+/obj/structure/maintenance_loot_structure/proc/spawn_loot()
+ if(length(contents))
+ for(var/obj/thing in contents)
+ qdel(thing)
+ var/random_loot_amount = roll(loot_spawn_dice_string)
+ for(var/loot_spawn in 1 to random_loot_amount)
+ var/obj/new_loot = pick_weight(loot_weighted_list)
+ new new_loot(src)
+ Shake(2, 2, 1 SECONDS)
+
+/datum/storage/maintenance_loot_structure
+ max_slots = 9
+ max_specific_storage = WEIGHT_CLASS_GIGANTIC
+ max_total_storage = WEIGHT_CLASS_BULKY * 6
+ numerical_stacking = FALSE
+ rustle_sound = FALSE
+ screen_max_columns = 3
+ /// What sound this makes when people open it's storage
+ var/opening_sound = 'modular_doppler/epic_loot/sound/plastic.mp3'
+
+/datum/storage/maintenance_loot_structure/open_storage(mob/to_show)
+ . = ..()
+ if(!.)
+ return
+ playsound(parent, opening_sound, 50, TRUE)
+
+// Loot items basetype, for convenience
+/obj/item/epic_loot
+ name = "epic loot!!!!!"
+ desc = "Unknown purpose, unknown maker, unknown value. The only thing I know for real: There will be loot."
+ icon = 'modular_doppler/epic_loot/icons/epic_loot.dmi'
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
+ inhand_icon_state = "binoculars"
+ w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/epic_loot/examine(mob/user)
+ . = ..()
+ . += span_engradio("You should probably sell or recycle this.")
+ return .
diff --git a/modular_doppler/epic_loot/code/loot_items/components.dm b/modular_doppler/epic_loot/code/loot_items/components.dm
new file mode 100644
index 0000000000000..116507d6923e8
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_items/components.dm
@@ -0,0 +1,214 @@
+/datum/export/epic_loot_components
+ cost = PAYCHECK_COMMAND
+ unit_name = "low value salvage"
+ export_types = list(
+ /obj/item/epic_loot/grenade_fuze,
+ /obj/item/epic_loot/nail_box,
+ /obj/item/epic_loot/cold_weld,
+ /obj/item/epic_loot/signal_amp,
+ /obj/item/epic_loot/fuel_conditioner,
+ )
+
+/datum/export/epic_loot_components_super
+ cost = PAYCHECK_COMMAND * 2
+ unit_name = "salvage"
+ export_types = list(
+ /obj/item/epic_loot/water_filter,
+ /obj/item/epic_loot/thermometer,
+ /obj/item/epic_loot/current_converter,
+ /obj/item/epic_loot/electric_motor,
+ )
+
+/datum/export/epic_loot_components_super_super
+ cost = PAYCHECK_COMMAND * 3
+ unit_name = "high value salvage"
+ export_types = list(
+ /obj/item/epic_loot/thermal_camera,
+ /obj/item/epic_loot/shuttle_gyro,
+ /obj/item/epic_loot/phased_array,
+ /obj/item/epic_loot/shuttle_battery,
+ )
+
+// Grenade fuze, an old design from an old time past. You can still make a pretty good grenade with it though
+/obj/item/epic_loot/grenade_fuze
+ name = "grenade fuze"
+ desc = "Just the fuze of a grenade, missing the explosive and arguably most important half of the grenade."
+ icon_state = "fuze"
+ inhand_icon_state = "pen"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+// The filter part of a water filter machine, though these machines are insanely rare due to modern synthesis technology
+/obj/item/epic_loot/water_filter
+ name = "water filter cartridge"
+ desc = "A blue polymer tube filled with filter medium for use in an industrial water filtration unit."
+ icon_state = "water_filter"
+ inhand_icon_state = "miniFE"
+ drop_sound = 'sound/items/handling/tools/weldingtool_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/weldingtool_pickup.ogg'
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3,
+ /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+// Analog thermometer, how to tell temperature before gas analyzers were cool
+/obj/item/epic_loot/thermometer
+ name = "analog thermometer"
+ desc = "An outdated, and likely broken, analog thermometer."
+ icon_state = "thermometer"
+ inhand_icon_state = "razor"
+ drop_sound = 'sound/items/handling/tools/multitool_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/multitool_pickup.ogg'
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT,
+ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+// A box of nails, impossible tech on a space station
+/obj/item/epic_loot/nail_box
+ name = "box of nails"
+ desc = "A pristine box of nails, a method of keeping things together that we... can't really use here, in a space station."
+ icon_state = "nails"
+ inhand_icon_state = "rubberducky"
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT,
+ /datum/material/cardboard = SHEET_MATERIAL_AMOUNT,
+ )
+
+// Used for joining together plastics, ideally.
+/obj/item/epic_loot/cold_weld
+ name = "tube of cold weld"
+ desc = "A tube of cold weld, used to join together plastics, usually for repair."
+ icon_state = "cold_weld"
+ inhand_icon_state = "razor"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+// An electronic motor
+/obj/item/epic_loot/electric_motor
+ name = "electric motor"
+ desc = "An electrically driven motor for industrial applications."
+ icon_state = "motor"
+ inhand_icon_state = "miniFE"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SHEET_MATERIAL_AMOUNT,
+ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+// Current converters, these change one rating of current into another in a mostly safe manner
+/obj/item/epic_loot/current_converter
+ name = "current converter"
+ desc = "A device for regulating electric current that passes through it."
+ icon_state = "current_converter"
+ inhand_icon_state = "miniFE"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/tools/weldingtool_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/weldingtool_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT,
+ /datum/material/gold = SHEET_MATERIAL_AMOUNT,
+ )
+
+// Signal amplifiers, used to take a faint signal and return it stronger than before
+/obj/item/epic_loot/signal_amp
+ name = "signal amplifier"
+ desc = "A device for taking weakened input signals and strengthening them for use or listening."
+ icon_state = "signal_amp"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT,
+ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+// Thermal camera modules
+/obj/item/epic_loot/thermal_camera
+ name = "thermal camera module"
+ desc = "An infrared sensing device used for the production of thermal camera systems."
+ icon_state = "thermal"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SHEET_MATERIAL_AMOUNT,
+ /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+// Shuttle gyroscopes, AKA how a shuttle realizes which way it's pointing
+/obj/item/epic_loot/shuttle_gyro
+ name = "shuttle gyroscope"
+ desc = "A bulky device used by shuttles and other space faring vessels to find the direction they are facing."
+ icon_state = "shuttle_gyro"
+ inhand_icon_state = "miniFE"
+ w_class = WEIGHT_CLASS_BULKY
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3,
+ /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4,
+ /datum/material/gold = SHEET_MATERIAL_AMOUNT * 4
+ )
+
+/obj/item/epic_loot/shuttle_gyro/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/two_handed, require_twohands = TRUE)
+
+// Phased array elements, combine a bunch together to get god's strongest radar, or whatever else you can think of
+/obj/item/epic_loot/phased_array
+ name = "phased array element"
+ desc = "An element of a larger phased array. These combine together to produce sensing and scanning devices used on most common space-faring vessels."
+ icon_state = "phased_array"
+ inhand_icon_state = "blankplaque"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT,
+ /datum/material/gold = SHEET_MATERIAL_AMOUNT,
+ )
+
+// Shuttle batteries, used to power electronics while the engines are off
+/obj/item/epic_loot/shuttle_battery
+ name = "shuttle battery"
+ desc = "A massive shuttle-grade battery, used to keep the electronics of space-faring vessel powered while the main engines are de-activated."
+ icon_state = "ship_battery"
+ inhand_icon_state = "blankplaque"
+ w_class = WEIGHT_CLASS_BULKY
+ drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 10,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4,
+ /datum/material/gold = SHEET_MATERIAL_AMOUNT * 4,
+ )
+
+/obj/item/epic_loot/shuttle_battery/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/two_handed, require_twohands = TRUE)
+
+// Industrial fuel conditioner, used to keep most fuel-burning machines within regulations for waste emissions
+/obj/item/epic_loot/fuel_conditioner
+ name = "fuel conditioner"
+ desc = "A plastic container of fuel conditioner for industrial size plasma generators. \
+ Any generator that would need this is either much too large or much too old to be seen around here."
+ icon_state = "fuel_conditioner"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg'
diff --git a/modular_doppler/epic_loot/code/loot_items/electronics.dm b/modular_doppler/epic_loot/code/loot_items/electronics.dm
new file mode 100644
index 0000000000000..5719a1ed842e6
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_items/electronics.dm
@@ -0,0 +1,143 @@
+/datum/export/epic_loot_electronics
+ cost = PAYCHECK_COMMAND
+ unit_name = "electronic salvage"
+ export_types = list(
+ /obj/item/epic_loot/device_fan,
+ /obj/item/epic_loot/display_broken,
+ /obj/item/epic_loot/civilian_circuit,
+ /obj/item/epic_loot/processor,
+ /obj/item/epic_loot/disk_drive,
+ )
+
+/datum/export/epic_loot_electronics_super
+ cost = PAYCHECK_COMMAND * 2
+ unit_name = "high value electronic salvage"
+ export_types = list(
+ /obj/item/epic_loot/display,
+ /obj/item/epic_loot/graphics,
+ /obj/item/epic_loot/military_circuit,
+ /obj/item/epic_loot/power_supply,
+ )
+
+// Computer fans
+/obj/item/epic_loot/device_fan
+ name = "device fan"
+ desc = "An electronics cooling fan, used to keep computers and the like at reasonable temperatures while working."
+ icon_state = "device_fan"
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 9,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT,
+ )
+
+// A display of some sort, this one probably still works
+/obj/item/epic_loot/display
+ name = "display"
+ desc = "An electronic display, used in any number of machines to display information to users."
+ icon_state = "display"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5,
+ /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT,
+ )
+
+// A display of some sort, this one for sure does not work
+/obj/item/epic_loot/display_broken
+ name = "broken display"
+ desc = "An electronic display, used in any number of machines to display information to users. This one is broken."
+ icon_state = "display_broken"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5,
+ /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT,
+ )
+
+// Martian made very high quality no scam 质量非常高
+/obj/item/epic_loot/graphics
+ name = "graphics processor"
+ desc = "A large processor card for the handling of computer generated graphics."
+ icon_state = "graphics"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+// A military general-use circuit board
+/obj/item/epic_loot/military_circuit
+ name = "military-grade circuit board"
+ desc = "A small circuit board commonly seen used by military-grade electronics."
+ icon_state = "circuit_military"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 6,
+ /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+// A civilian general-use circuit board
+/obj/item/epic_loot/civilian_circuit
+ name = "general-purpose circuit board"
+ desc = "A small circuit board commonly seen used by general-purpose electronics."
+ icon_state = "civilian_circuit"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 6,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+// A computer processor unit
+/obj/item/epic_loot/processor
+ name = "processor core"
+ desc = "The processing core of a computer, the small chip responsible for all of the inner workings of most devices."
+ icon_state = "processor"
+ inhand_icon_state = "razor"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT,
+ )
+
+// A computer power supply
+/obj/item/epic_loot/power_supply
+ name = "computer power supply"
+ desc = "A computer power supply, used to provide regulated electric power to other components of a computer."
+ icon_state = "psu"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+// A drive for reading data from data disks in computers
+/obj/item/epic_loot/disk_drive
+ name = "hard-disk reader"
+ desc = "A device for reading and writing data to hard-disks, one of the most common data storage media on the frontier."
+ icon_state = "disk_drive"
+ w_class = WEIGHT_CLASS_NORMAL
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2,
+ )
diff --git a/modular_doppler/epic_loot/code/loot_items/medical.dm b/modular_doppler/epic_loot/code/loot_items/medical.dm
new file mode 100644
index 0000000000000..d645cc4160f0a
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_items/medical.dm
@@ -0,0 +1,46 @@
+/datum/export/epic_loot_super_med_tools
+ cost = PAYCHECK_COMMAND * 5
+ unit_name = "high value medical salvage"
+ export_types = list(
+ /obj/item/epic_loot/vein_finder,
+ /obj/item/epic_loot/eye_scope,
+ )
+
+// Vein finder, uses strong LED lights to reveal veins in someone's body. Perhaps the name "LEDX" rings a bell
+/obj/item/epic_loot/vein_finder
+ name = "medical vein locator"
+ desc = "A small device with a number of high intensity lights on one side. Used by medical professionals to locate veins in someone's body."
+ icon_state = "vein_finder"
+ inhand_icon_state = "headset"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+/obj/item/epic_loot/vein_finder/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
+ if(!proximity_flag)
+ return
+ if(!ishuman(target))
+ return
+ user.visible_message(
+ "[user] determines that [target] does, in fact, have veins.",
+ "You determine that [target] does, in fact, have veins."
+ )
+ new /obj/effect/temp_visual/medical_holosign(get_turf(target), user)
+
+// Eyescope, a now rare device that was used to check the eyes of patients before the universal health scanner became common
+/obj/item/epic_loot/eye_scope
+ name = "medical eye-scope"
+ desc = "An outdated device used to examine a patient's eyes. Rare now due to the outbreak of the universal health scanner."
+ icon_state = "eyescope"
+ inhand_icon_state = "zippo"
+ drop_sound = 'sound/items/handling/component_drop.ogg'
+ pickup_sound = 'sound/items/handling/component_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2,
+ )
diff --git a/modular_doppler/epic_loot/code/loot_items/valuables.dm b/modular_doppler/epic_loot/code/loot_items/valuables.dm
new file mode 100644
index 0000000000000..fb209e9a6485e
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_items/valuables.dm
@@ -0,0 +1,159 @@
+/datum/export/epic_loot_valuables
+ cost = PAYCHECK_COMMAND * 3
+ unit_name = "recovered valuables"
+ export_types = list(
+ /obj/item/epic_loot/press_pass,
+ /obj/item/epic_loot/hdd,
+ /obj/item/epic_loot/slim_diary,
+ /obj/item/epic_loot/plasma_explosive,
+ /obj/item/epic_loot/silver_chainlet,
+ )
+
+/datum/export/epic_loot_valuables_super
+ cost = PAYCHECK_COMMAND * 4
+ unit_name = "recovered high valuables"
+ export_types = list(
+ /obj/item/epic_loot/ssd,
+ /obj/item/epic_loot/military_flash,
+ /obj/item/epic_loot/diary,
+ /obj/item/epic_loot/corpo_folder,
+ /obj/item/epic_loot/intel_folder,
+ /obj/item/epic_loot/gold_chainlet,
+ )
+
+// An old press pass, perhaps of an unlucky soul who was reporting on the incident that made this place abandoned in the first place
+/obj/item/epic_loot/press_pass
+ name = "expired visitor pass"
+ desc = "An old lanyard with an expired visitor pass stuck to it. Most of the text has worn off, you can't tell who it was for or who it was issued by."
+ icon_state = "press_pass"
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ )
+
+// A computer SSD
+/obj/item/epic_loot/ssd
+ name = "solid-state drive"
+ desc = "A solid-state drive for computers, may even contain some still-valuable information on it!"
+ icon_state = "ssd"
+ inhand_icon_state = "razor"
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+// A computer hard drive
+/obj/item/epic_loot/hdd
+ name = "hard drive"
+ desc = "A hard drive for computers, may even contain some still-valuable information on it!"
+ icon_state = "hard_disk"
+ inhand_icon_state = "razor"
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+// Military-grade flash drives, made for use specifically with military computers
+/obj/item/epic_loot/military_flash
+ name = "military flash drive"
+ desc = "A military-grade flash drive for use in matching military-grade computer systems. Might even contain some still-valuable information on it!"
+ icon_state = "military_flash"
+ inhand_icon_state = "razor"
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
+ )
+
+// Someone's personal diary, or bootleg captain's log, whatever
+/obj/item/epic_loot/diary
+ name = "sealed diary"
+ desc = "An old, apparently well-kept diary with unknown information inside. May hold important data on the location it was found in."
+ icon_state = "diary"
+ drop_sound = 'sound/items/handling/book_drop.ogg'
+ pickup_sound = 'sound/items/handling/book_pickup.ogg'
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ )
+
+// A slimmer version of the regular diary
+/obj/item/epic_loot/slim_diary
+ name = "sealed slim diary"
+ desc = "An old, apparently well-kept diary with unknown information inside. May hold important data on the location it was found in."
+ icon_state = "slim_diary"
+ drop_sound = 'sound/items/handling/book_drop.ogg'
+ pickup_sound = 'sound/items/handling/book_pickup.ogg'
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ )
+
+// Straight up, a brick of plasma-cringe explosive, keep away from fire
+/obj/item/epic_loot/plasma_explosive
+ name = "brick of plasma-based explosive"
+ desc = "A really quite dangerous brick of a plasma-based explosive. Usually, a demolition charge or something of the sort, but, it's still a bomb ."
+ icon_state = "plasma_explosive"
+ drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg'
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(
+ /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3,
+ )
+
+/obj/item/epic_loot/plasma_explosive/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/explodable, 0, 1, 3, 5, 5)
+
+// A folder from some corporation with likely valuable data inside
+/obj/item/epic_loot/corpo_folder
+ name = "corporate data folder"
+ desc = "A blue folder with no label of who it's from. What is labeled, however, is the series of marks of confidential or trade secret information inside."
+ icon_state = "nt_folders"
+ drop_sound = 'sound/items/handling/book_drop.ogg'
+ pickup_sound = 'sound/items/handling/book_pickup.ogg'
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ )
+
+// Brown unlabeled folder of doom, may contain government secrets
+/obj/item/epic_loot/intel_folder
+ name = "intelligence folder"
+ desc = "A an unmarked, unassuming folder for documents. What is labeled, however, is the series of marks of confidential or trade secret information inside."
+ icon_state = "documents"
+ drop_sound = 'sound/items/handling/book_drop.ogg'
+ pickup_sound = 'sound/items/handling/book_pickup.ogg'
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8,
+ )
+
+// A small chainlet made of silver
+/obj/item/epic_loot/silver_chainlet
+ name = "silver chainlet"
+ desc = "A small chainlet for decorating clothing or other items, made from silver."
+ icon_state = "silver_chain"
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+ custom_materials = list(
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT,
+ )
+
+// A small chainlet made of gold
+/obj/item/epic_loot/gold_chainlet
+ name = "gold chainlet"
+ desc = "A small chainlet for decorating clothing or other items, made from gold."
+ icon_state = "gold_chain"
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+ custom_materials = list(
+ /datum/material/gold = SHEET_MATERIAL_AMOUNT,
+ )
diff --git a/modular_doppler/epic_loot/code/loot_structures/ammo_box.dm b/modular_doppler/epic_loot/code/loot_structures/ammo_box.dm
new file mode 100644
index 0000000000000..d9d5f0f21e060
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/ammo_box.dm
@@ -0,0 +1,34 @@
+/datum/storage/maintenance_loot_structure/ammo_box
+ max_slots = 6
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 6
+ screen_max_columns = 3
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3'
+
+/obj/structure/maintenance_loot_structure/ammo_box
+ name = "small shipping crate"
+ desc = "A small reinforced box used for shipping small items in."
+ icon_state = "ammo_box"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/ammo_box
+ loot_spawn_dice_string = "1d10-4"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_engineering = 1,
+ /obj/effect/spawner/random/epic_loot/random_provisions = 1,
+ /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/ammo_box/super_evil
+ icon_state = "cache"
+
+/obj/structure/maintenance_loot_structure/ammo_box/random
+ icon_state = "ammo_box_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "ammo_box",
+ "cache",
+ )
+
+/obj/structure/maintenance_loot_structure/ammo_box/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/computer_tower.dm b/modular_doppler/epic_loot/code/loot_structures/computer_tower.dm
new file mode 100644
index 0000000000000..b53491ae61b63
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/computer_tower.dm
@@ -0,0 +1,36 @@
+/datum/storage/maintenance_loot_structure/computer
+ max_slots = 4
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 4
+ screen_max_columns = 2
+ opening_sound = 'modular_doppler/epic_loot/sound/plastic.mp3'
+
+/obj/structure/maintenance_loot_structure/computer_tower
+ name = "computer tower"
+ desc = "A compact computer unit, missing it's monitor. May still contain valuable components inside."
+ icon_state = "alienware"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/computer
+ loot_spawn_dice_string = "1d7-3"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_computer_parts = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/computer_tower/white
+ icon_state = "alienware_honeycrisp"
+
+/obj/structure/maintenance_loot_structure/computer_tower/eighties
+ icon_state = "alienware_tan_man"
+
+/obj/structure/maintenance_loot_structure/computer_tower/random
+ icon_state = "alienware_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "alienware",
+ "alienware_honeycrisp",
+ "alienware_tan_man",
+ )
+
+/obj/structure/maintenance_loot_structure/computer_tower/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/files.dm b/modular_doppler/epic_loot/code/loot_structures/files.dm
new file mode 100644
index 0000000000000..5a0557ffcdd6f
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/files.dm
@@ -0,0 +1,32 @@
+/datum/storage/maintenance_loot_structure/file_cabinet
+ max_slots = 6
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 6
+ screen_max_columns = 2
+ opening_sound = 'modular_doppler/epic_loot/sound/cabinet.mp3'
+
+/obj/structure/maintenance_loot_structure/file_cabinet
+ name = "filing cabinet"
+ desc = "A large filing cabinet, it even comes with terrible sounding unlubricated rails!"
+ icon_state = "files"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/file_cabinet
+ loot_spawn_dice_string = "1d10-4"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_documents = 9,
+ )
+
+/obj/structure/maintenance_loot_structure/file_cabinet/white
+ icon_state = "files_clean"
+
+/obj/structure/maintenance_loot_structure/file_cabinet/random
+ icon_state = "files_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "files",
+ "files_clean",
+ )
+
+/obj/structure/maintenance_loot_structure/file_cabinet/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/grenade_box.dm b/modular_doppler/epic_loot/code/loot_structures/grenade_box.dm
new file mode 100644
index 0000000000000..df773672fec76
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/grenade_box.dm
@@ -0,0 +1,34 @@
+/datum/storage/maintenance_loot_structure/grenade_box
+ max_slots = 4
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 4
+ screen_max_columns = 2
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_2.mp3'
+
+/obj/structure/maintenance_loot_structure/grenade_box
+ name = "small shipping crate"
+ desc = "A reinforced shipping crate for the transport of small items."
+ icon_state = "grenade_box"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/grenade_box
+ loot_spawn_dice_string = "1d6-2"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_engineering = 1,
+ /obj/effect/spawner/random/epic_loot/random_provisions = 1,
+ /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/grenade_box/evil
+ icon_state = "grenade_box_evil"
+
+/obj/structure/maintenance_loot_structure/grenade_box/random
+ icon_state = "grenade_box_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "grenade_box",
+ "grenade_box_evil",
+ )
+
+/obj/structure/maintenance_loot_structure/grenade_box/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/gun_case.dm b/modular_doppler/epic_loot/code/loot_structures/gun_case.dm
new file mode 100644
index 0000000000000..fa7d384e057bd
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/gun_case.dm
@@ -0,0 +1,34 @@
+/datum/storage/maintenance_loot_structure/gun_box
+ max_slots = 4
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 4
+ screen_max_columns = 4
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3'
+
+/obj/structure/maintenance_loot_structure/gun_box
+ name = "shipping crate"
+ desc = "A reinforced shipping crate foor the transport of larger items."
+ icon_state = "guncrate"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/gun_box
+ loot_spawn_dice_string = "1d7-3"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_engineering = 1,
+ /obj/effect/spawner/random/epic_loot/random_provisions = 1,
+ /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/gun_box/evil
+ icon_state = "guncrate_dark"
+
+/obj/structure/maintenance_loot_structure/gun_box/random
+ icon_state = "guncrate_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "guncrate",
+ "guncrate_dark",
+ )
+
+/obj/structure/maintenance_loot_structure/gun_box/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/large_crate.dm b/modular_doppler/epic_loot/code/loot_structures/large_crate.dm
new file mode 100644
index 0000000000000..1164a42b17a7f
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/large_crate.dm
@@ -0,0 +1,63 @@
+/datum/storage/maintenance_loot_structure/large_crate
+ max_slots = 16
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 16
+ screen_max_columns = 4
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3'
+
+/obj/structure/maintenance_loot_structure/large_crate
+ name = "provision transport crate"
+ desc = "A large crate for transporting equally large amounts of food supplies around."
+ icon_state = "foodcrate"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/large_crate
+ loot_spawn_dice_string = "4d5-4"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_provisions = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/large_crate/medical
+ name = "medical transport crate"
+ desc = "A large crate for transporting equally large amounts of medical supplies around."
+ icon_state = "medcrate"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/medical_everything = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/large_crate/medical/airdrop
+ icon_state = "supplydrop"
+
+/obj/structure/maintenance_loot_structure/large_crate/engineering
+ name = "engineering transport crate"
+ desc = "A large crate for transporting equally large amounts of tools and components around."
+ icon_state = "toolcrate"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_engineering = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/large_crate/engineering/airdrop
+ icon_state = "supplydrop_yellow"
+
+/obj/structure/maintenance_loot_structure/large_crate/military
+ name = "reinforced transport crate"
+ desc = "A large crate for transporting equally large amounts of militar."
+ icon_state = "supplydrop_green"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_engineering = 1,
+ /obj/effect/spawner/random/epic_loot/random_provisions = 1,
+ /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1,
+ /obj/effect/spawner/random/epic_loot/medical_everything = 1,
+ )
+
+/obj/effect/spawner/random/epic_loot/random_supply_crate
+ name = "random supply crate spawner"
+ desc = "Automagically transforms into a random supply crate, hopefully filled with goodies."
+ icon = 'modular_doppler/epic_loot/icons/loot_structures.dmi'
+ icon_state = "crate_random"
+ loot = list(
+ /obj/structure/maintenance_loot_structure/large_crate,
+ /obj/structure/maintenance_loot_structure/large_crate/medical,
+ /obj/structure/maintenance_loot_structure/large_crate/medical/airdrop,
+ /obj/structure/maintenance_loot_structure/large_crate/engineering,
+ /obj/structure/maintenance_loot_structure/large_crate/engineering/airdrop,
+ /obj/structure/maintenance_loot_structure/large_crate/military,
+ )
diff --git a/modular_doppler/epic_loot/code/loot_structures/medbox.dm b/modular_doppler/epic_loot/code/loot_structures/medbox.dm
new file mode 100644
index 0000000000000..40ffab841a33d
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/medbox.dm
@@ -0,0 +1,36 @@
+/datum/storage/maintenance_loot_structure/medical_box
+ max_slots = 6
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 6
+ screen_max_columns = 3
+ opening_sound = 'modular_doppler/epic_loot/sound/plastic.mp3'
+
+/obj/structure/maintenance_loot_structure/medbox
+ name = "emergency medical box"
+ desc = "A large, atmos-sealed plastic container for holding emergency medical supplies."
+ icon_state = "medbox"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/medical_box
+ loot_spawn_dice_string = "1d8-2"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/medical_everything = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/medbox/bleu
+ icon_state = "medbox_blue"
+
+/obj/structure/maintenance_loot_structure/medbox/red
+ icon_state = "medbox_red"
+
+/obj/structure/maintenance_loot_structure/medbox/random
+ icon_state = "medbox_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "medbox",
+ "medbox_blue",
+ "medbox_red",
+ )
+
+/obj/structure/maintenance_loot_structure/medbox/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/military_case.dm b/modular_doppler/epic_loot/code/loot_structures/military_case.dm
new file mode 100644
index 0000000000000..0b26b90cf3e74
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/military_case.dm
@@ -0,0 +1,38 @@
+/datum/storage/maintenance_loot_structure/military_case
+ max_slots = 8
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 8
+ screen_max_columns = 4
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3'
+
+/obj/structure/maintenance_loot_structure/military_case
+ name = "large shipping crate"
+ desc = "A reinforced shipping crate for the transport of larger items."
+ icon_state = "military_crate"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/military_case
+ loot_spawn_dice_string = "1d10-2"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_engineering = 1,
+ /obj/effect/spawner/random/epic_loot/random_provisions = 1,
+ /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/military_case/evil
+ icon_state = "guncrate_dark"
+
+/obj/structure/maintenance_loot_structure/military_case/super_evil
+ icon_state = "larpbox"
+
+/obj/structure/maintenance_loot_structure/military_case/random
+ icon_state = "military_crate_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "military_crate",
+ "military_crate_dark",
+ "larpbox",
+ )
+
+/obj/structure/maintenance_loot_structure/military_case/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/register.dm b/modular_doppler/epic_loot/code/loot_structures/register.dm
new file mode 100644
index 0000000000000..0013d6d7761a3
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/register.dm
@@ -0,0 +1,42 @@
+/datum/storage/maintenance_loot_structure/register
+ max_slots = 2
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 2
+ screen_max_columns = 2
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_2.mp3'
+
+/obj/structure/maintenance_loot_structure/register
+ name = "credits register"
+ desc = "A compact computing unit to handle transfers of credits between accounts. May still contain currency left behind!"
+ icon_state = "register_small"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/register
+ loot_spawn_dice_string = "1d3-1"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/entertainment/coin = 1,
+ /obj/effect/spawner/random/entertainment/money_small = 2,
+ /obj/effect/spawner/random/entertainment/money = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/register/white
+ icon_state = "register_small_clean"
+
+/obj/structure/maintenance_loot_structure/register/big
+ icon_state = "register_big"
+
+/obj/structure/maintenance_loot_structure/register/big_white
+ icon_state = "register_big_clean"
+
+/obj/structure/maintenance_loot_structure/register/random
+ icon_state = "register_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "register_small",
+ "register_small_clean",
+ "register_big",
+ "register_big_clean",
+ )
+
+/obj/structure/maintenance_loot_structure/register/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/safe.dm b/modular_doppler/epic_loot/code/loot_structures/safe.dm
new file mode 100644
index 0000000000000..2b5342e028805
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/safe.dm
@@ -0,0 +1,32 @@
+/datum/storage/maintenance_loot_structure/desk_safe
+ max_slots = 2
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 2
+ screen_max_columns = 1
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3'
+
+/obj/structure/maintenance_loot_structure/desk_safe
+ name = "compact safe"
+ desc = "A not-so-secure safe meant to fit around or under desks."
+ icon_state = "safe"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/desk_safe
+ loot_spawn_dice_string = "1d3-1"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_strongbox_loot = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/desk_safe/bleu
+ icon_state = "safe_blue"
+
+/obj/structure/maintenance_loot_structure/desk_safe/random
+ icon_state = "safe_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "safe",
+ "safe_blue",
+ )
+
+/obj/structure/maintenance_loot_structure/desk_safe/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/toolbox.dm b/modular_doppler/epic_loot/code/loot_structures/toolbox.dm
new file mode 100644
index 0000000000000..43e2babff2852
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/toolbox.dm
@@ -0,0 +1,38 @@
+/datum/storage/maintenance_loot_structure/toolbox
+ max_slots = 6
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 6
+ screen_max_columns = 3
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_1.mp3'
+
+/obj/structure/maintenance_loot_structure/toolbox
+ name = "heavy toolbox"
+ desc = "An industrial grade toolbox, for when you need to carry a LOT of things to a job. \
+ It's previous owner has smartly attached this one pretty firmly to whatever surface it's on, \
+ to prevent theft."
+ icon_state = "toolbox"
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/toolbox
+ loot_spawn_dice_string = "1d8-2"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/random_engineering = 1,
+ )
+
+/obj/structure/maintenance_loot_structure/toolbox/yellow
+ icon_state = "toolbox_yellow"
+
+/obj/structure/maintenance_loot_structure/toolbox/red
+ icon_state = "toolbox_red"
+
+/obj/structure/maintenance_loot_structure/toolbox/random
+ icon_state = "toolbox_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "toolbox",
+ "toolbox_yellow",
+ "toolbox_red",
+ )
+
+/obj/structure/maintenance_loot_structure/toolbox/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/loot_structures/wall_jackets.dm b/modular_doppler/epic_loot/code/loot_structures/wall_jackets.dm
new file mode 100644
index 0000000000000..3b3bfd24b0802
--- /dev/null
+++ b/modular_doppler/epic_loot/code/loot_structures/wall_jackets.dm
@@ -0,0 +1,67 @@
+/datum/storage/maintenance_loot_structure/jacket
+ max_slots = 2
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 4
+ screen_max_columns = 2
+ opening_sound = 'sound/items/handling/cloth_pickup.ogg'
+
+/obj/structure/maintenance_loot_structure/wall_jacket
+ name = "hanging jacket"
+ desc = "Someone's old, now abandoned jacket. Maybe there's still stuff in the pockets?"
+ icon_state = "jacket_green"
+ density = FALSE
+ storage_datum_to_use = /datum/storage/maintenance_loot_structure/jacket
+ loot_spawn_dice_string = "1d3-1"
+ loot_weighted_list = list(
+ /obj/effect/spawner/random/epic_loot/pocket_sized_items = 1,
+ )
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket, 28)
+
+/obj/structure/maintenance_loot_structure/wall_jacket/Initialize(mapload)
+ . = ..()
+ find_and_hang_on_wall()
+
+/obj/structure/maintenance_loot_structure/wall_jacket/yellow
+ icon_state = "jacket_yellow"
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/yellow, 28)
+
+/obj/structure/maintenance_loot_structure/wall_jacket/blue
+ icon_state = "jacket_blue"
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/blue, 28)
+
+/obj/structure/maintenance_loot_structure/wall_jacket/police
+ icon_state = "jacket_police"
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/police, 28)
+
+/obj/structure/maintenance_loot_structure/wall_jacket/black
+ icon_state = "jacket_black"
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/black, 28)
+
+/obj/structure/maintenance_loot_structure/wall_jacket/military
+ icon_state = "jacket_military"
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/military, 28)
+
+/obj/structure/maintenance_loot_structure/wall_jacket/random
+ icon_state = "jacket_random"
+ /// The different icon states we can swap to when initializing
+ var/list/random_icon_states = list(
+ "jacket_green",
+ "jacket_yellow",
+ "jacket_blue",
+ "jacket_police",
+ "jacket_black",
+ "jacket_military",
+ )
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/random, 28)
+
+/obj/structure/maintenance_loot_structure/wall_jacket/random/Initialize(mapload)
+ . = ..()
+ icon_state = pick(random_icon_states)
+ update_appearance()
diff --git a/modular_doppler/epic_loot/code/random_spawners_real.dm b/modular_doppler/epic_loot/code/random_spawners_real.dm
new file mode 100644
index 0000000000000..a10e736d3396c
--- /dev/null
+++ b/modular_doppler/epic_loot/code/random_spawners_real.dm
@@ -0,0 +1,689 @@
+/obj/effect/spawner/random/epic_loot
+ name = "extraction loot spawner"
+ desc = "Gods please let there be nobody extract camping."
+ icon = 'modular_doppler/epic_loot/icons/epic_loot.dmi'
+ icon_state = null
+
+// Jacket pocket contents
+
+// Actual pocket items spawner
+
+/obj/effect/spawner/random/epic_loot/pocket_sized_items
+ name = "random pocket sized items"
+ icon_state = "random_pocket_valuable"
+ loot = list(
+ /obj/effect/spawner/random/epic_loot/pocket_valuable = 1,
+ /obj/effect/spawner/random/epic_loot/pocket_medical = 1,
+ /obj/effect/spawner/random/epic_loot/pocket_da_money = 1,
+ )
+
+// Chainlet, good or not good, call it
+
+/obj/effect/spawner/random/epic_loot/pocket_valuable
+ name = "random pocket valuable"
+ icon_state = "random_chain"
+ loot = list(
+ /obj/item/epic_loot/silver_chainlet = 3,
+ /obj/item/epic_loot/press_pass = 2,
+ /obj/item/epic_loot/military_flash = 2,
+ /obj/item/epic_loot/slim_diary = 2,
+ /obj/item/epic_loot/gold_chainlet = 1,
+ )
+
+// Pocket meds
+
+/obj/effect/spawner/random/epic_loot/pocket_medical
+ name = "random pocket medical item"
+ icon_state = "random_med_stack"
+ loot = list(
+ /obj/item/storage/pill_bottle/iron = 2,
+ /obj/item/storage/pill_bottle/painkiller = 2,
+ /obj/item/storage/pill_bottle/ondansetron = 1,
+ /obj/item/stack/medical/bandage = 2,
+ /obj/item/stack/medical/bandage/makeshift = 2,
+ /obj/item/stack/medical/aloe = 2,
+ /obj/item/stack/medical/ointment/red_sun = 1,
+ /obj/item/stack/medical/bruise_pack = 1,
+ /obj/item/stack/medical/gauze/sterilized = 1,
+ )
+
+// Pocket da money
+
+/obj/effect/spawner/random/epic_loot/pocket_da_money
+ name = "random pocket money"
+ icon_state = "random_pocket_valuable"
+ loot = list(
+ /obj/effect/spawner/random/entertainment/money_small = 2,
+ /obj/effect/spawner/random/entertainment/money = 1,
+ /obj/effect/spawner/random/entertainment/cigarette_pack = 1,
+ /obj/effect/spawner/random/entertainment/cigarette = 2,
+ /obj/effect/spawner/random/entertainment/wallet_lighter = 2,
+ )
+
+// Medical related spawners
+
+// The medical everything spawner
+
+/obj/effect/spawner/random/epic_loot/medical_everything
+ name = "random medical anything"
+ icon_state = "random_med_stack"
+ loot = list(
+ /obj/effect/spawner/random/epic_loot/medical_stack_item = 2,
+ /obj/effect/spawner/random/epic_loot/medical_stack_item_advanced = 1,
+ /obj/effect/spawner/random/epic_loot/chemical = 1,
+ /obj/effect/spawner/random/epic_loot/medical_tools = 2,
+ /obj/effect/spawner/random/epic_loot/medkit = 1,
+ /obj/effect/spawner/random/epic_loot/medpens = 2,
+ /obj/effect/spawner/random/epic_loot/medpens_combat_based_redpilled = 1,
+ )
+
+// Basic healing items
+
+/obj/effect/spawner/random/epic_loot/medical_stack_item
+ name = "random medical item"
+ icon_state = "random_med_stack"
+ loot = list(
+ /obj/item/stack/medical/bruise_pack = 3,
+ /obj/item/stack/medical/gauze = 3,
+ /obj/item/stack/medical/gauze/sterilized = 2,
+ /obj/item/stack/medical/suture/emergency = 3,
+ /obj/item/stack/medical/suture/coagulant = 2,
+ /obj/item/stack/medical/suture/bloody = 1,
+ /obj/item/stack/medical/ointment = 3,
+ /obj/item/stack/medical/ointment/red_sun = 2,
+ /obj/item/stack/medical/mesh = 2,
+ /obj/item/stack/medical/aloe = 2,
+ /obj/item/stack/medical/bone_gel/one = 2,
+ /obj/item/stack/medical/bone_gel = 1,
+ /obj/item/stack/medical/bandage/makeshift = 3,
+ /obj/item/stack/medical/bandage = 2,
+ /obj/item/stack/sticky_tape/surgical = 2,
+ /obj/item/reagent_containers/blood/random = 1,
+ /obj/item/stack/medical/wound_recovery/robofoam = 2,
+ // Pill bottles
+ /obj/item/storage/pill_bottle/iron = 2,
+ /obj/item/storage/pill_bottle/potassiodide = 2,
+ /obj/item/storage/pill_bottle/painkiller = 2,
+ /obj/item/storage/pill_bottle/probital = 2,
+ /obj/item/storage/pill_bottle/happinesspsych = 1,
+ /obj/item/storage/pill_bottle/lsdpsych = 1,
+ /obj/item/storage/pill_bottle/mannitol = 2,
+ /obj/item/storage/pill_bottle/multiver = 2,
+ /obj/item/storage/pill_bottle/mutadone = 1,
+ /obj/item/storage/pill_bottle/neurine = 1,
+ /obj/item/storage/pill_bottle/ondansetron = 1,
+ /obj/item/storage/pill_bottle/psicodine = 1,
+ /obj/item/storage/pill_bottle/sansufentanyl = 1,
+ )
+
+// More advanced healing items
+
+/obj/effect/spawner/random/epic_loot/medical_stack_item_advanced
+ name = "random advanced medical item"
+ icon_state = "random_med_stack_adv"
+ loot = list(
+ /obj/item/stack/medical/gauze/sterilized = 2,
+ /obj/item/stack/medical/suture = 3,
+ /obj/item/stack/medical/suture/coagulant = 3,
+ /obj/item/stack/medical/suture/bloody = 2,
+ /obj/item/stack/medical/suture/medicated = 1,
+ /obj/item/stack/medical/ointment/red_sun = 3,
+ /obj/item/stack/medical/mesh = 3,
+ /obj/item/stack/medical/mesh/bloody = 2,
+ /obj/item/stack/medical/mesh/advanced = 1,
+ /obj/item/stack/medical/aloe = 2,
+ /obj/item/stack/medical/bone_gel = 2,
+ /obj/item/stack/medical/bandage = 2,
+ /obj/item/stack/sticky_tape/surgical = 2,
+ /obj/item/stack/medical/poultice = 1,
+ /obj/item/stack/medical/wound_recovery = 1,
+ /obj/item/stack/medical/wound_recovery/rapid_coagulant = 1,
+ /obj/item/reagent_containers/blood/random = 2,
+ /obj/item/stack/medical/wound_recovery/robofoam = 3,
+ /obj/item/stack/medical/wound_recovery/robofoam_super = 2,
+ // Medigels
+ /obj/item/reagent_containers/medigel/libital = 2,
+ /obj/item/reagent_containers/medigel/aiuri = 2,
+ /obj/item/reagent_containers/medigel/sterilizine = 2,
+ /obj/item/reagent_containers/medigel/synthflesh = 1,
+ // Pill bottles
+ /obj/item/storage/pill_bottle/iron = 2,
+ /obj/item/storage/pill_bottle/potassiodide = 2,
+ /obj/item/storage/pill_bottle/painkiller = 2,
+ /obj/item/storage/pill_bottle/probital = 2,
+ /obj/item/storage/pill_bottle/happinesspsych = 1,
+ /obj/item/storage/pill_bottle/lsdpsych = 1,
+ /obj/item/storage/pill_bottle/mannitol = 2,
+ /obj/item/storage/pill_bottle/multiver = 2,
+ /obj/item/storage/pill_bottle/mutadone = 1,
+ /obj/item/storage/pill_bottle/neurine = 1,
+ /obj/item/storage/pill_bottle/ondansetron = 1,
+ /obj/item/storage/pill_bottle/psicodine = 1,
+ /obj/item/storage/pill_bottle/sansufentanyl = 1,
+ )
+
+// Chems and whatnot
+
+/obj/effect/spawner/random/epic_loot/chemical
+ name = "random chemical"
+ icon_state = "random_med_stack_adv"
+ loot = list(
+ // Chemjaks
+ /obj/item/reagent_containers/cup/bottle/epinephrine = 1,
+ /obj/item/reagent_containers/cup/bottle/morphine = 2,
+ /obj/item/reagent_containers/cup/bottle/mannitol = 1,
+ /obj/item/reagent_containers/cup/bottle/multiver = 2,
+ /obj/item/reagent_containers/cup/bottle/ammoniated_mercury = 2,
+ /obj/item/reagent_containers/cup/bottle/syriniver = 2,
+ /obj/item/reagent_containers/cup/bottle/synaptizine = 2,
+ /obj/item/reagent_containers/cup/bottle/fentanyl = 2,
+ /obj/item/reagent_containers/cup/bottle/formaldehyde = 1,
+ /obj/item/reagent_containers/cup/bottle/diphenhydramine = 1,
+ /obj/item/reagent_containers/cup/bottle/potass_iodide = 2,
+ /obj/item/reagent_containers/cup/bottle/salglu_solution = 3,
+ /obj/item/reagent_containers/cup/bottle/atropine = 2,
+ /obj/item/reagent_containers/cup/bottle/capsaicin = 2,
+ /obj/item/reagent_containers/cup/bottle/fentanyl = 1,
+ /obj/item/reagent_containers/cup/bottle/leadacetate = 1,
+ /obj/item/reagent_containers/cup/bottle/thermite = 1,
+ /obj/item/reagent_containers/cup/bottle/ethanol = 2,
+ /obj/item/reagent_containers/syringe = 2,
+ // Medigels
+ /obj/item/reagent_containers/medigel/libital = 2,
+ /obj/item/reagent_containers/medigel/aiuri = 2,
+ /obj/item/reagent_containers/medigel/sterilizine = 2,
+ /obj/item/reagent_containers/medigel/synthflesh = 1,
+ )
+
+// Medical tools spawner
+
+/obj/effect/spawner/random/epic_loot/medical_tools
+ name = "random medical tools"
+ icon_state = "random_med_tools"
+ loot = list(
+ /obj/item/bonesetter = 2,
+ /obj/item/cautery = 2,
+ /obj/item/cautery/cruel = 1,
+ /obj/item/clothing/neck/stethoscope = 2,
+ /obj/item/flashlight/pen = 2,
+ /obj/item/flashlight/pen/paramedic = 2,
+ /obj/item/healthanalyzer = 1,
+ /obj/item/healthanalyzer/simple = 2,
+ /obj/item/healthanalyzer/simple/disease = 2,
+ /obj/item/hemostat = 2,
+ /obj/item/storage/box/bandages = 1,
+ /obj/item/bodybag = 2,
+ /obj/item/blood_filter = 2,
+ /obj/item/circular_saw = 2,
+ /obj/item/clothing/gloves/latex/nitrile = 2,
+ /obj/item/clothing/mask/surgical = 2,
+ /obj/item/retractor = 2,
+ /obj/item/scalpel = 2,
+ /obj/item/shears = 1,
+ /obj/item/surgical_drapes = 2,
+ /obj/item/surgicaldrill = 2,
+ /obj/item/epic_loot/vein_finder = 1,
+ /obj/item/epic_loot/eye_scope = 1,
+ /obj/item/reagent_containers/dropper = 2,
+ /obj/item/reagent_containers/cup/beaker = 2,
+ /obj/item/reagent_containers/cup/beaker/large = 1,
+ /obj/item/reagent_containers/cup/bottle = 2,
+ /obj/item/reagent_containers/cup/tube = 2,
+ /obj/item/reagent_containers/syringe = 2,
+ /obj/item/defibrillator = 1,
+ /obj/item/defibrillator/loaded = 1,
+ /obj/item/emergency_bed = 2,
+ /obj/item/storage/epic_loot_medical_case = 1,
+ )
+
+// Random medkits
+
+/obj/effect/spawner/random/epic_loot/medkit
+ name = "random medkit"
+ icon_state = "random_medkit"
+ loot = list(
+ /obj/item/storage/medkit/civil_defense/stocked = 2,
+ /obj/item/storage/medkit/civil_defense/comfort/stocked = 2,
+ /obj/item/storage/medkit/frontier/stocked = 2,
+ /obj/item/storage/medkit/combat_surgeon/stocked = 2,
+ /obj/item/storage/medkit/robotic_repair/stocked = 2,
+ /obj/item/storage/medkit/robotic_repair/preemo/stocked = 1,
+ /obj/item/storage/backpack/duffelbag/deforest_medkit/stocked = 1,
+ /obj/item/storage/backpack/duffelbag/deforest_surgical/stocked = 1,
+ /obj/item/storage/epic_loot_medpen_case = 2,
+ )
+
+// Random medpens for healing yourself
+
+/obj/effect/spawner/random/epic_loot/medpens
+ name = "random autoinjectors"
+ icon_state = "random_medpen_spawner"
+ loot = list(
+ /obj/item/reagent_containers/hypospray/medipen/deforest/occuisate = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/adrenaline = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/morpital = 3,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/lipital = 3,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/meridine = 3,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/synephrine = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/calopine = 3,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/coagulants = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/krotozine = 1,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/lepoturi = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/psifinil = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/halobinin = 2,
+ )
+
+// Random medpens for fighting other people
+
+/obj/effect/spawner/random/epic_loot/medpens_combat_based_redpilled
+ name = "random combat autoinjectors"
+ icon_state = "random_medpen_advanced"
+ loot = list(
+ /obj/item/reagent_containers/hypospray/medipen/deforest/adrenaline = 3,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/morpital = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/lipital = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/synephrine = 3,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/calopine = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/coagulants = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/krotozine = 3,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/lepoturi = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/twitch = 1,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/demoneye = 1,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/aranepaine = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/pentibinin = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/synalvipitol = 2,
+ )
+
+// Tool and supply spawners
+
+/obj/effect/spawner/random/epic_loot/random_engineering
+ name = "random engineering thing"
+ icon_state = "random_component"
+ loot = list(
+ /obj/effect/spawner/random/epic_loot/random_components = 1,
+ /obj/effect/spawner/random/epic_loot/random_computer_parts = 1,
+ /obj/effect/spawner/random/epic_loot/random_tools = 1,
+ /obj/effect/spawner/random/epic_loot/random_construction = 1,
+ )
+
+// Sellable components
+
+/obj/effect/spawner/random/epic_loot/random_components
+ name = "random components"
+ icon_state = "random_component"
+ loot = list(
+ /obj/item/epic_loot/water_filter = 2,
+ /obj/item/epic_loot/thermometer = 2,
+ /obj/item/epic_loot/nail_box = 2,
+ /obj/item/epic_loot/cold_weld = 2,
+ /obj/item/epic_loot/electric_motor = 1,
+ /obj/item/epic_loot/current_converter = 1,
+ /obj/item/epic_loot/signal_amp = 1,
+ /obj/item/epic_loot/thermal_camera = 1,
+ /obj/item/epic_loot/shuttle_gyro = 1,
+ /obj/item/epic_loot/phased_array = 1,
+ /obj/item/epic_loot/shuttle_battery = 1,
+ /obj/item/epic_loot/fuel_conditioner = 2,
+ /obj/item/epic_loot/display = 1,
+ /obj/item/epic_loot/display_broken = 2,
+ /obj/item/epic_loot/civilian_circuit = 2,
+ )
+
+// Random computer parts
+
+/obj/effect/spawner/random/epic_loot/random_computer_parts
+ name = "random computer parts"
+ icon_state = "random_electronic_part"
+ loot = list(
+ /obj/item/epic_loot/signal_amp = 2,
+ /obj/item/epic_loot/device_fan = 2,
+ /obj/item/epic_loot/graphics = 1,
+ /obj/item/epic_loot/military_circuit = 1,
+ /obj/item/epic_loot/civilian_circuit = 2,
+ /obj/item/epic_loot/processor = 2,
+ /obj/item/epic_loot/power_supply = 2,
+ /obj/item/epic_loot/disk_drive = 2,
+ /obj/item/epic_loot/ssd = 1,
+ /obj/item/epic_loot/hdd = 1,
+ /obj/item/epic_loot/military_flash = 1,
+ )
+
+// Random tools
+
+/obj/effect/spawner/random/epic_loot/random_tools
+ name = "random tools and supplies"
+ icon_state = "random_tool"
+ loot = list(
+ // Wrench
+ /obj/item/wrench = 3,
+ /obj/item/wrench/bolter = 2,
+ /obj/item/wrench/caravan = 1,
+ /obj/item/wrench/combat = 1,
+ // Screwdriver
+ /obj/item/screwdriver = 3,
+ /obj/item/screwdriver/omni_drill = 2,
+ /obj/item/screwdriver/caravan = 1,
+ // Crowbar
+ /obj/item/crowbar = 3,
+ /obj/item/crowbar/large/doorforcer = 2,
+ /obj/item/crowbar/red/caravan = 1,
+ /obj/item/fireaxe/metal_h2_axe = 1,
+ // Wirecutters
+ /obj/item/wirecutters = 3,
+ /obj/item/wirecutters/caravan = 1,
+ // Welder
+ /obj/item/weldingtool = 3,
+ /obj/item/weldingtool/largetank = 3,
+ /obj/item/weldingtool/arc_welder = 2,
+ /obj/item/weldingtool/experimental = 1,
+ // Multitool
+ /obj/item/multitool = 2,
+ /obj/item/multitool/ai_detect = 1,
+ // Rapid whatever tools
+ /obj/item/pipe_dispenser = 1,
+ /obj/item/construction/rcd = 1,
+ /obj/item/construction/rtd = 1,
+ // Misc tools and related items
+ /obj/item/stack/cable_coil = 3,
+ /obj/item/flashlight = 2,
+ /obj/item/flashlight/flare = 3,
+ /obj/item/grenade/chem_grenade/metalfoam = 2,
+ /obj/item/geiger_counter = 2,
+ /obj/item/analyzer = 2,
+ // Various methods of insulation
+ /obj/item/clothing/gloves/color/yellow = 2,
+ /obj/item/clothing/gloves/chief_engineer = 1,
+ /obj/item/clothing/gloves/atmos = 1,
+ // Misc utility clothing
+ /obj/item/clothing/gloves/tinkerer = 1,
+ /obj/item/clothing/head/utility/welding = 2,
+ /obj/item/clothing/head/utility/hardhat/welding = 1,
+ /obj/item/clothing/glasses/meson = 3,
+ /obj/item/clothing/glasses/meson/engine = 2,
+ /obj/item/storage/belt/utility = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ // Tapes
+ /obj/item/stack/sticky_tape = 2,
+ /obj/item/stack/sticky_tape/super = 1,
+ // Cells
+ /obj/item/stock_parts/power_store/cell/upgraded = 1,
+ /obj/item/stock_parts/power_store/cell/crap = 2,
+ /obj/item/stock_parts/power_store/battery/upgraded = 1,
+ /obj/item/stock_parts/power_store/battery/crap = 2,
+ // Masks
+ /obj/item/clothing/mask/gas = 3,
+ /obj/item/clothing/mask/gas/welding = 2,
+ /obj/item/clothing/mask/gas/atmos/frontier_colonist = 2,
+ // Air tanks
+ /obj/item/tank/internals/nitrogen/belt = 1,
+ /obj/item/tank/internals/emergency_oxygen/engi = 2,
+ /obj/item/tank/internals/emergency_oxygen/double = 1,
+ // stuff
+ /obj/item/storage/epic_loot_cooler = 1,
+ /obj/item/storage/epic_loot_money_case = 1,
+ // Robofoam is a tool, right?
+ /obj/item/stack/medical/wound_recovery/robofoam = 2,
+ /obj/item/stack/medical/wound_recovery/robofoam_super = 1,
+ )
+
+// Random construction stuff
+
+/obj/effect/spawner/random/epic_loot/random_construction
+ name = "random constructions"
+ icon_state = "random_tool"
+ loot = list(
+ // Sheets
+ /obj/item/stack/sheet/iron/twenty = 2,
+ /obj/item/stack/sheet/iron/ten = 3,
+ /obj/item/stack/sheet/glass/fifty = 1,
+ /obj/item/stack/sheet/plastic/five = 3,
+ /obj/item/stack/sheet/plastic_wall_panel/ten = 2,
+ /obj/item/stack/rods/twentyfive = 2,
+ /obj/item/stack/sheet/tinumium/three = 2,
+ /obj/item/stack/sheet/mineral/silver = 2,
+ /obj/item/stack/sheet/mineral/gold = 2,
+ /obj/item/stack/sheet/mineral/plasma/five = 2,
+ // Flatpack machines
+ /obj/item/flatpacked_machine = 1,
+ /obj/item/flatpacked_machine/airlock_kit = 2,
+ /obj/item/flatpacked_machine/airlock_kit_manual = 2,
+ /obj/item/flatpacked_machine/arc_furnace = 1,
+ /obj/item/flatpacked_machine/co2_cracker = 2,
+ /obj/item/flatpacked_machine/frontier_griddle = 1,
+ /obj/item/flatpacked_machine/frontier_range = 1,
+ /obj/item/flatpacked_machine/fuel_generator = 1,
+ /obj/item/flatpacked_machine/gps_beacon = 2,
+ /obj/item/flatpacked_machine/hydro_synth = 1,
+ /obj/item/flatpacked_machine/large_station_battery = 1,
+ /obj/item/flatpacked_machine/macrowave = 1,
+ /obj/item/flatpacked_machine/ore_silo = 1,
+ /obj/item/flatpacked_machine/ore_thumper = 1,
+ /obj/item/flatpacked_machine/organics_printer = 2,
+ /obj/item/flatpacked_machine/organics_ration_printer = 2,
+ /obj/item/flatpacked_machine/recycler = 2,
+ /obj/item/flatpacked_machine/rtg = 2,
+ /obj/item/flatpacked_machine/shutter_kit = 1,
+ /obj/item/flatpacked_machine/solar = 2,
+ /obj/item/flatpacked_machine/solar_tracker = 1,
+ /obj/item/flatpacked_machine/station_battery = 1,
+ /obj/item/flatpacked_machine/stirling_generator = 1,
+ /obj/item/flatpacked_machine/sustenance_machine = 2,
+ /obj/item/flatpacked_machine/thermomachine = 1,
+ /obj/item/flatpacked_machine/water_synth = 2,
+ /obj/item/flatpacked_machine/wind_turbine = 2,
+ /obj/item/folded_navigation_gigabeacon = 1,
+ /obj/item/wallframe/cell_charger_multi = 2,
+ /obj/item/wallframe/wall_heater = 2,
+ /obj/item/wallframe/digital_clock = 1,
+ // Other things
+ /obj/item/door_seal = 2,
+ )
+
+// Things from a safe
+
+// Documents and whatnot
+
+/obj/effect/spawner/random/epic_loot/random_documents
+ name = "random documents"
+ icon_state = "random_documents"
+ loot = list(
+ /obj/item/folder/white = 2,
+ /obj/item/folder/red = 2,
+ /obj/item/folder/blue = 2,
+ /obj/item/folder/ancient_paperwork = 2,
+ /obj/item/epic_loot/intel_folder = 2,
+ /obj/item/epic_loot/corpo_folder = 2,
+ /obj/item/epic_loot/slim_diary = 2,
+ /obj/item/epic_loot/diary = 2,
+ /obj/item/computer_disk/maintenance = 2,
+ /obj/item/computer_disk/black_market = 1,
+ /obj/item/computer_disk/virus = 1,
+ /obj/item/clipboard = 2,
+ /obj/item/pen/fountain/captain = 1,
+ /obj/item/pen/fountain = 2,
+ /obj/item/pen/screwdriver = 1,
+ /obj/item/pen/red = 2,
+ /obj/item/pen/blue = 2,
+ /obj/item/pen/fourcolor = 2,
+ /obj/item/pen/survival = 1,
+ /obj/item/storage/epic_loot_docs_case = 1,
+ /obj/item/book/granter/crafting_recipe/dusting/smoothbore_disabler_prime = 1,
+ /obj/item/book/granter/crafting_recipe/dusting/laser_musket_prime = 1,
+ /obj/item/book/granter/crafting_recipe/dusting/pipegun_prime = 1,
+ /obj/item/book/granter/crafting_recipe/death_sandwich = 1,
+ /obj/item/book/granter/crafting_recipe/trash_cannon = 1,
+ /obj/item/book/granter/crafting_recipe/donk_secret_recipe = 1,
+ )
+
+// Stuff that comes in strongboxes specifically
+
+/obj/effect/spawner/random/epic_loot/random_strongbox_loot
+ name = "random strongbox loot"
+ icon_state = "random_strongbox_loot"
+ loot = list(
+ /obj/item/epic_loot/ssd = 1,
+ /obj/item/epic_loot/hdd = 1,
+ /obj/effect/spawner/random/epic_loot/pocket_valuable = 2,
+ /obj/effect/spawner/random/epic_loot/random_documents = 2,
+ )
+
+// Unsorted yeah
+
+// "Military" loot
+
+/obj/effect/spawner/random/epic_loot/random_other_military_loot
+ name = "random military loot"
+ desc = "Automagically transforms into some kind of misc. military loot item."
+ icon_state = "random_loot_military"
+ loot = list(
+ /obj/item/clothing/mask/gas/sechailer = 3,
+ /obj/item/clothing/mask/gas = 2,
+ /obj/item/clothing/mask/gas/atmos/frontier_colonist = 2,
+ /obj/item/folder/ancient_paperwork = 2,
+ /obj/item/epic_loot/intel_folder = 3,
+ /obj/item/epic_loot/slim_diary = 3,
+ /obj/item/epic_loot/ssd = 2,
+ /obj/item/epic_loot/hdd = 2,
+ /obj/item/epic_loot/military_flash = 2,
+ /obj/item/computer_disk/maintenance = 2,
+ /obj/item/computer_disk/black_market = 1,
+ /obj/item/epic_loot/plasma_explosive = 1,
+ /obj/item/epic_loot/grenade_fuze = 3,
+ /obj/item/epic_loot/signal_amp = 3,
+ /obj/item/epic_loot/thermal_camera = 2,
+ /obj/item/epic_loot/shuttle_gyro = 2,
+ /obj/item/epic_loot/phased_array = 2,
+ /obj/item/epic_loot/shuttle_battery = 2,
+ /obj/item/epic_loot/military_circuit = 3,
+ /obj/item/storage/epic_loot_medpen_case = 2,
+ /obj/item/storage/epic_loot_docs_case = 2,
+ /obj/item/storage/epic_loot_org_pouch = 2,
+ )
+
+// Random food for transport
+/obj/effect/spawner/random/epic_loot/random_provisions
+ name = "random provisions"
+ icon_state = "random_food"
+ loot = list(
+ /obj/item/food/sustenance_bar = 3,
+ /obj/item/food/sustenance_bar/cheese = 2,
+ /obj/item/food/sustenance_bar/mint = 2,
+ /obj/item/food/sustenance_bar/neapolitan = 2,
+ /obj/item/food/vendor_snacks/mothmallow = 1,
+ /obj/item/food/vendor_snacks/moth_bag = 3,
+ /obj/item/food/vendor_snacks/moth_bag/cheesecake = 2,
+ /obj/item/food/vendor_snacks/moth_bag/cheesecake/honey = 2,
+ /obj/item/food/vendor_snacks/moth_bag/fuel_jack = 3,
+ /obj/item/food/vendor_tray_meal/side/cornbread = 2,
+ /obj/item/food/vendor_tray_meal/side/moffin = 2,
+ /obj/item/food/vendor_tray_meal/side/roasted_seeds = 2,
+ /obj/item/food/brain_pate = 2,
+ /obj/item/food/branrequests = 3,
+ /obj/item/food/breadslice/corn = 2,
+ /obj/item/food/breadslice/reispan = 2,
+ /obj/item/food/breadslice/plain = 2,
+ /obj/item/food/breadslice/root = 2,
+ /obj/item/food/butter = 3,
+ /obj/item/food/candy = 3,
+ /obj/item/food/canned/beans = 3,
+ /obj/item/food/canned/peaches = 3,
+ /obj/item/food/canned/tomatoes = 3,
+ /obj/item/food/canned/chap = 3,
+ /obj/item/food/canned/desert_snails = 2,
+ /obj/item/food/canned/envirochow = 1,
+ /obj/item/food/canned/jellyfish = 2,
+ /obj/item/food/canned/larvae = 2,
+ /obj/item/food/canned/pine_nuts = 2,
+ /obj/item/food/canned/squid_ink = 1,
+ /obj/item/food/cheese/firm_cheese_slice = 2,
+ /obj/item/food/cheese/firm_cheese = 1,
+ /obj/item/food/chocolatebar = 2,
+ /obj/item/food/cnds/random = 3,
+ /obj/item/food/colonial_course/pljeskavica = 1,
+ /obj/item/food/colonial_course/nachos = 1,
+ /obj/item/food/colonial_course/blins = 1,
+ /obj/item/food/cornchips/random = 2,
+ /obj/item/food/peanuts/random = 2,
+ /obj/item/food/ready_donk = 1,
+ /obj/item/food/ready_donk/donkhiladas = 1,
+ /obj/item/food/ready_donk/donkrange_chicken = 1,
+ /obj/item/food/ready_donk/mac_n_cheese = 1,
+ /obj/item/food/ready_donk/nachos_grandes = 1,
+ /obj/item/food/ready_donk/country_chicken = 1,
+ /obj/item/food/ready_donk/salisbury_steak = 1,
+ /obj/item/food/semki = 3,
+ /obj/item/food/spacers_sidekick = 2,
+ /obj/item/food/sticko/random = 3,
+ // Ingredients
+ /obj/item/reagent_containers/cup/glass/bottle/juice/limejuice = 2,
+ /obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice = 2,
+ /obj/item/reagent_containers/cup/glass/bottle/juice/pineapplejuice = 2,
+ /obj/item/reagent_containers/condiment/milk = 1,
+ /obj/item/reagent_containers/condiment/sugar/small_ration = 2,
+ /obj/item/reagent_containers/condiment/flour/small_ration = 2,
+ /obj/item/reagent_containers/condiment/small_ration_korta_flour = 2,
+ /obj/item/reagent_containers/condiment/cherryjelly = 1,
+ /obj/item/reagent_containers/condiment/rice/small_ration = 2,
+ /obj/item/reagent_containers/condiment/soymilk/small_ration = 2,
+ /obj/item/reagent_containers/condiment/cornmeal = 1,
+ /obj/item/reagent_containers/condiment/grounding_solution = 1,
+ /obj/item/reagent_containers/condiment/bbqsauce = 2,
+ /obj/item/reagent_containers/condiment/chocolate = 1,
+ /obj/item/reagent_containers/condiment/coconut_milk = 2,
+ /obj/item/reagent_containers/condiment/curry_powder = 2,
+ /obj/item/reagent_containers/condiment/dashi_concentrate = 1,
+ /obj/item/reagent_containers/condiment/donksauce = 1,
+ /obj/item/reagent_containers/condiment/vegetable_oil = 2,
+ /obj/item/reagent_containers/condiment/worcestershire = 1,
+ /obj/item/reagent_containers/condiment/enzyme = 1,
+ /obj/item/reagent_containers/condiment/honey = 1,
+ /obj/item/reagent_containers/condiment/hotsauce = 1,
+ /obj/item/reagent_containers/condiment/ketchup = 1,
+ /obj/item/reagent_containers/condiment/mayonnaise = 1,
+ /obj/item/reagent_containers/condiment/peanut_butter = 1,
+ /obj/item/reagent_containers/condiment/protein = 1,
+ /obj/item/reagent_containers/condiment/red_bay = 2,
+ /obj/item/reagent_containers/condiment/vinegar = 1,
+ /obj/item/reagent_containers/condiment/coldsauce = 1,
+ /obj/item/storage/box/spaceman_ration/meats = 1,
+ /obj/item/storage/box/spaceman_ration/meats/lizard = 1,
+ /obj/item/storage/box/spaceman_ration/meats/fish = 1,
+ /obj/item/storage/box/spaceman_ration/plants = 2,
+ /obj/item/storage/box/spaceman_ration/plants/alternate = 2,
+ /obj/item/storage/box/spaceman_ration/plants/lizard = 2,
+ /obj/item/storage/box/spaceman_ration/plants/mothic = 2,
+ /obj/item/storage/box/papersack/ration_bread_slice = 1,
+ /obj/item/storage/box/colonial_rations = 1,
+ // Da cooler
+ /obj/item/storage/epic_loot_cooler = 2,
+ )
+
+// Da money
+
+/obj/effect/spawner/random/entertainment/money/one
+ spawn_loot_count = 1
+
+/obj/effect/spawner/random/entertainment/money_small/one
+ spawn_loot_count = 1
+
+// Maint structure spawner
+
+/obj/effect/spawner/random/epic_loot/random_maint_loot_structure
+ name = "random maintenance loot structure"
+ desc = "Automagically transforms into a random loot structure that spawns in maint."
+ icon = 'modular_doppler/epic_loot/icons/loot_structures.dmi'
+ icon_state = "random_maint_structure"
+ loot = list(
+ /obj/structure/maintenance_loot_structure/ammo_box/random,
+ /obj/structure/maintenance_loot_structure/computer_tower/random,
+ /obj/structure/maintenance_loot_structure/file_cabinet/random,
+ /obj/structure/maintenance_loot_structure/grenade_box/random,
+ /obj/structure/maintenance_loot_structure/gun_box/random,
+ /obj/effect/spawner/random/epic_loot/random_supply_crate,
+ /obj/structure/maintenance_loot_structure/medbox/random,
+ /obj/structure/maintenance_loot_structure/military_case/random,
+ /obj/structure/maintenance_loot_structure/register/random,
+ /obj/structure/maintenance_loot_structure/desk_safe/random,
+ /obj/structure/maintenance_loot_structure/toolbox/random,
+ /obj/structure/maintenance_loot_structure/wall_jacket/random,
+ )
diff --git a/modular_doppler/epic_loot/code/storage_containers/containers.dm b/modular_doppler/epic_loot/code/storage_containers/containers.dm
new file mode 100644
index 0000000000000..682315b83a58b
--- /dev/null
+++ b/modular_doppler/epic_loot/code/storage_containers/containers.dm
@@ -0,0 +1,232 @@
+/obj/item/storage/epic_loot_medpen_case
+ name = "autoinjector case"
+ desc = "A semi-rigid case for holding a large number of autoinjectors inside of."
+ icon = 'modular_doppler/epic_loot/icons/storage_items.dmi'
+ icon_state = "pencase"
+ equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ storage_type = /datum/storage/maintenance_loot_structure/epic_loot_medpen_case
+ slot_flags = ITEM_SLOT_POCKETS
+ w_class = WEIGHT_CLASS_BULKY
+
+/datum/storage/maintenance_loot_structure/epic_loot_medpen_case
+ max_slots = 6
+ max_specific_storage = WEIGHT_CLASS_SMALL
+ max_total_storage = WEIGHT_CLASS_SMALL * 6
+ numerical_stacking = TRUE
+ opening_sound = 'sound/items/zip/un_zip.ogg'
+
+/datum/storage/maintenance_loot_structure/epic_loot_medpen_case/New()
+ . = ..()
+
+ can_hold = typecacheof(list(
+ /obj/item/dnainjector,
+ /obj/item/hypospray,
+ /obj/item/implant,
+ /obj/item/implantcase,
+ /obj/item/implanter,
+ /obj/item/lazarus_injector,
+ /obj/item/reagent_containers/hypospray,
+ /obj/item/reagent_containers/medigel,
+ /obj/item/reagent_containers/pill,
+ /obj/item/storage/pill_bottle,
+ ))
+
+/obj/item/storage/epic_loot_docs_case
+ name = "documents case"
+ desc = "A large pouch conveniently shaped to hold all of the valueable paperwork in the galaxy."
+ icon = 'modular_doppler/epic_loot/icons/storage_items.dmi'
+ icon_state = "documents"
+ equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ storage_type = /datum/storage/maintenance_loot_structure/epic_loot_docs_case
+ slot_flags = ITEM_SLOT_POCKETS
+ w_class = WEIGHT_CLASS_BULKY
+
+/datum/storage/maintenance_loot_structure/epic_loot_docs_case
+ max_slots = 4
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 4
+ screen_max_columns = 2
+ numerical_stacking = TRUE
+ opening_sound = 'sound/items/handling/cloth_pickup.ogg'
+
+/datum/storage/maintenance_loot_structure/epic_loot_docs_case/New()
+ . = ..()
+
+ can_hold = typecacheof(list(
+ /obj/item/folder,
+ /obj/item/epic_loot/intel_folder,
+ /obj/item/epic_loot/corpo_folder,
+ /obj/item/epic_loot/slim_diary,
+ /obj/item/epic_loot/diary,
+ /obj/item/computer_disk,
+ /obj/item/paper,
+ /obj/item/photo,
+ /obj/item/documents,
+ /obj/item/paperwork,
+ /obj/item/clipboard,
+ ))
+
+/obj/item/storage/epic_loot_org_pouch
+ name = "organizational pouch"
+ desc = "A pouch with every possible type of pocket and organizer stuck into it, to hold all of the small stuff you could think of."
+ icon = 'modular_doppler/epic_loot/icons/storage_items.dmi'
+ icon_state = "sick"
+ equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ storage_type = /datum/storage/maintenance_loot_structure/epic_loot_org_pouch
+ slot_flags = ITEM_SLOT_POCKETS
+ w_class = WEIGHT_CLASS_BULKY
+
+/datum/storage/maintenance_loot_structure/epic_loot_org_pouch
+ max_slots = 4
+ max_specific_storage = WEIGHT_CLASS_SMALL
+ max_total_storage = WEIGHT_CLASS_SMALL * 4
+ screen_max_columns = 2
+ numerical_stacking = TRUE
+ opening_sound = 'sound/items/zip/un_zip.ogg'
+
+/obj/item/storage/epic_loot_cooler
+ name = "compact cooler"
+ desc = "A wonder in food storage technology, it's a blue bag that you can put food in."
+ icon = 'modular_doppler/epic_loot/icons/storage_items.dmi'
+ icon_state = "cooler"
+ lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
+ inhand_icon_state = "toolbox_blue"
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ storage_type = /datum/storage/maintenance_loot_structure/epic_loot_cooler
+ w_class = WEIGHT_CLASS_BULKY
+
+/datum/storage/maintenance_loot_structure/epic_loot_cooler
+ max_slots = 12
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 12
+ screen_max_columns = 4
+ numerical_stacking = FALSE
+ opening_sound = 'sound/items/zip/un_zip.ogg'
+
+/datum/storage/maintenance_loot_structure/epic_loot_cooler/New()
+ . = ..()
+
+ can_hold = typecacheof(list(
+ /obj/item/food,
+ /obj/item/reagent_containers/condiment,
+ /obj/item/reagent_containers/cup,
+ ))
+
+/obj/item/storage/epic_loot_money_case
+ name = "money case"
+ desc = "A heavy duty case for the transportation of (bribe) money."
+ icon = 'modular_doppler/epic_loot/icons/storage_items.dmi'
+ icon_state = "money_case"
+ lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi'
+ inhand_icon_state = "lockbox"
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ storage_type = /datum/storage/maintenance_loot_structure/epic_loot_the_money
+ w_class = WEIGHT_CLASS_BULKY
+
+/datum/storage/maintenance_loot_structure/epic_loot_the_money
+ max_slots = 6
+ max_specific_storage = WEIGHT_CLASS_NORMAL
+ max_total_storage = WEIGHT_CLASS_NORMAL * 6
+ screen_max_columns = 2
+ numerical_stacking = FALSE
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_1.mp3'
+
+/datum/storage/maintenance_loot_structure/epic_loot_the_money/New()
+ . = ..()
+
+ can_hold = typecacheof(list(
+ /obj/item/stack/spacecash,
+ /obj/item/coin,
+ ))
+
+/obj/item/storage/epic_loot_medical_case
+ name = "medical case"
+ desc = "A heavy duty case for the transportation of medical supplies."
+ icon = 'modular_doppler/epic_loot/icons/storage_items.dmi'
+ icon_state = "medical"
+ lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi'
+ inhand_icon_state = "bitrunning"
+ drop_sound = 'sound/items/handling/ammobox_drop.ogg'
+ pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
+ storage_type = /datum/storage/maintenance_loot_structure/epic_loot_medkit
+ w_class = WEIGHT_CLASS_BULKY
+
+/datum/storage/maintenance_loot_structure/epic_loot_medkit
+ max_slots = 21
+ max_specific_storage = WEIGHT_CLASS_BULKY
+ max_total_storage = WEIGHT_CLASS_BULKY * 21
+ screen_max_columns = 7
+ numerical_stacking = FALSE
+ opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_1.mp3'
+
+/datum/storage/maintenance_loot_structure/epic_loot_medkit/New()
+ . = ..()
+
+ can_hold = typecacheof(list(
+ /obj/item/blood_filter,
+ /obj/item/bonesetter,
+ /obj/item/cautery,
+ /obj/item/circular_saw,
+ /obj/item/clothing/glasses,
+ /obj/item/clothing/gloves,
+ /obj/item/clothing/neck/stethoscope,
+ /obj/item/clothing/mask/breath,
+ /obj/item/clothing/mask/muzzle,
+ /obj/item/clothing/mask/surgical,
+ /obj/item/clothing/suit/toggle/labcoat/hospitalgown,
+ /obj/item/construction/plumbing,
+ /obj/item/dnainjector,
+ /obj/item/extinguisher/mini,
+ /obj/item/flashlight/pen,
+ /obj/item/geiger_counter,
+ /obj/item/gun/syringe/syndicate,
+ /obj/item/healthanalyzer,
+ /obj/item/hemostat,
+ /obj/item/holosign_creator/medical,
+ /obj/item/hypospray,
+ /obj/item/implant,
+ /obj/item/implantcase,
+ /obj/item/implanter,
+ /obj/item/lazarus_injector,
+ /obj/item/lighter,
+ /obj/item/pinpointer/crew,
+ /obj/item/plunger,
+ /obj/item/radio,
+ /obj/item/reagent_containers/blood,
+ /obj/item/reagent_containers/dropper,
+ /obj/item/reagent_containers/cup/beaker,
+ /obj/item/reagent_containers/cup/bottle,
+ /obj/item/reagent_containers/cup/tube,
+ /obj/item/reagent_containers/hypospray,
+ /obj/item/reagent_containers/medigel,
+ /obj/item/reagent_containers/pill,
+ /obj/item/reagent_containers/spray,
+ /obj/item/reagent_containers/syringe,
+ /obj/item/retractor,
+ /obj/item/scalpel,
+ /obj/item/shears,
+ /obj/item/stack/medical,
+ /obj/item/stack/sticky_tape,
+ /obj/item/stamp,
+ /obj/item/sensor_device,
+ /obj/item/storage/fancy/cigarettes,
+ /obj/item/storage/pill_bottle,
+ /obj/item/surgical_drapes,
+ /obj/item/surgicaldrill,
+ /obj/item/tank/internals/emergency_oxygen,
+ /obj/item/wrench/medical,
+ /obj/item/emergency_bed,
+ /obj/item/storage/box/bandages,
+ /obj/item/bodybag,
+ ))
diff --git a/modular_doppler/epic_loot/code/where_they_spawn.dm b/modular_doppler/epic_loot/code/where_they_spawn.dm
new file mode 100644
index 0000000000000..2d981ae7598d3
--- /dev/null
+++ b/modular_doppler/epic_loot/code/where_they_spawn.dm
@@ -0,0 +1,42 @@
+/obj/effect/spawner/random/trash/box
+ loot = list(
+ /obj/structure/closet/cardboard = 9,
+ /obj/structure/closet/cardboard/metal = 1,
+ /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 3,
+ )
+
+/obj/effect/spawner/random/structure/crate
+ loot = list(
+ /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 1000,
+ /obj/effect/spawner/random/structure/crate_loot = 744,
+ /obj/structure/closet/crate/trashcart/filled = 75,
+ /obj/effect/spawner/random/trash/moisture_trap = 50,
+ /obj/effect/spawner/random/trash/hobo_squat = 30,
+ /obj/structure/closet/mini_fridge = 35,
+ /obj/effect/spawner/random/trash/mess = 30,
+ /obj/item/kirbyplants/fern = 20,
+ /obj/structure/closet/crate/decorations = 15,
+ /obj/effect/decal/remains/human/smokey/maintenance = 7,
+ /obj/structure/destructible/cult/pants_altar = 1,
+ )
+
+/obj/effect/spawner/random/structure/crate_loot
+ loot = list(
+ /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 30,
+ /obj/effect/spawner/random/structure/closet_empty/crate/with_loot = 15,
+ /obj/effect/spawner/random/structure/closet_empty/crate = 4,
+ /obj/structure/closet/crate/secure/loot = 1,
+ )
+
+/obj/effect/spawner/random/structure/closet_maintenance
+ loot = list(
+ /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 15,
+ /obj/effect/spawner/random/structure/closet_empty = 10,
+ /obj/structure/closet/emcloset = 2,
+ /obj/structure/closet/firecloset = 2,
+ /obj/structure/closet/toolcloset = 2,
+ /obj/structure/closet/l3closet = 1,
+ /obj/structure/closet/radiation = 1,
+ /obj/structure/closet/bombcloset = 1,
+ /obj/structure/closet/mini_fridge/grimy = 1,
+ )
diff --git a/modular_doppler/epic_loot/icons/epic_loot.dmi b/modular_doppler/epic_loot/icons/epic_loot.dmi
new file mode 100644
index 0000000000000..e05a53aefdea6
Binary files /dev/null and b/modular_doppler/epic_loot/icons/epic_loot.dmi differ
diff --git a/modular_doppler/epic_loot/icons/loot_structures.dmi b/modular_doppler/epic_loot/icons/loot_structures.dmi
new file mode 100644
index 0000000000000..213c69849cfef
Binary files /dev/null and b/modular_doppler/epic_loot/icons/loot_structures.dmi differ
diff --git a/modular_doppler/epic_loot/icons/storage_items.dmi b/modular_doppler/epic_loot/icons/storage_items.dmi
new file mode 100644
index 0000000000000..04e6db41d6708
Binary files /dev/null and b/modular_doppler/epic_loot/icons/storage_items.dmi differ
diff --git a/modular_doppler/epic_loot/sound/attributions.txt b/modular_doppler/epic_loot/sound/attributions.txt
new file mode 100644
index 0000000000000..6aee04bdec393
--- /dev/null
+++ b/modular_doppler/epic_loot/sound/attributions.txt
@@ -0,0 +1 @@
+The sounds in this folder are all from https://pixabay.com/users/38928062/ as of the time of writing this comment
diff --git a/modular_doppler/epic_loot/sound/cabinet.mp3 b/modular_doppler/epic_loot/sound/cabinet.mp3
new file mode 100644
index 0000000000000..b2380969d783d
Binary files /dev/null and b/modular_doppler/epic_loot/sound/cabinet.mp3 differ
diff --git a/modular_doppler/epic_loot/sound/plastic.mp3 b/modular_doppler/epic_loot/sound/plastic.mp3
new file mode 100644
index 0000000000000..469ff97a2fdde
Binary files /dev/null and b/modular_doppler/epic_loot/sound/plastic.mp3 differ
diff --git a/modular_doppler/epic_loot/sound/wood_crate_1.mp3 b/modular_doppler/epic_loot/sound/wood_crate_1.mp3
new file mode 100644
index 0000000000000..3fdf354ae0b07
Binary files /dev/null and b/modular_doppler/epic_loot/sound/wood_crate_1.mp3 differ
diff --git a/modular_doppler/epic_loot/sound/wood_crate_2.mp3 b/modular_doppler/epic_loot/sound/wood_crate_2.mp3
new file mode 100644
index 0000000000000..01fa391d6cccc
Binary files /dev/null and b/modular_doppler/epic_loot/sound/wood_crate_2.mp3 differ
diff --git a/modular_doppler/epic_loot/sound/wood_crate_3.mp3 b/modular_doppler/epic_loot/sound/wood_crate_3.mp3
new file mode 100644
index 0000000000000..aa3d9954f8266
Binary files /dev/null and b/modular_doppler/epic_loot/sound/wood_crate_3.mp3 differ
diff --git a/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm b/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm
index 8b1bbab6eea4d..77e1639df6214 100644
--- a/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm
+++ b/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm
@@ -18,77 +18,10 @@
. = ..()
AddComponent(/datum/component/simple_farm, set_plant = TRUE)
-// Water that can be fished out of
+// Hotspring water with icebox air
-/turf/open/water/hot_spring
- desc = "Water kept warm through some unknown heat source, possibly a geothermal heat source far underground. \
- Whatever it is, it feels pretty damn nice to swim in given the rest of the environment around here, and you \
- can even catch a glimpse of the odd fish darting through the water."
- baseturfs = /turf/open/openspace/icemoon
- initial_gas_mix = "ICEMOON_ATMOS"
- /// Holder for the steam particles that show up sometimes
- var/obj/effect/abstract/particle_holder/particle_effect
-
-/turf/open/water/hot_spring/Initialize(mapload)
- . = ..()
- AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/icecat_hot_spring)
- if(prob(60))
- particle_effect = new(src, /particles/hotspring_steam)
-
-/turf/open/water/hot_spring/Destroy()
- QDEL_NULL(particle_effect)
- return ..()
-
-/turf/open/water/hot_spring/Entered(atom/movable/arrived)
- ..()
- wash_atom(arrived)
- wash_atom(loc)
-
-/// Cleans the given atom of whatever dirties it
-/turf/open/water/hot_spring/proc/wash_atom(atom/nasty)
- nasty.wash(CLEAN_WASH)
-
-/turf/open/water/hot_spring/Entered(atom/movable/arrived)
- ..()
- if(istype(arrived, /mob/living))
- hotspring_mood(arrived)
-
-/// Applies the hot water mood buff on the passed mob
-/turf/open/water/hot_spring/proc/hotspring_mood(mob/living/swimmer)
- swimmer.add_mood_event("hotspring", /datum/mood_event/hotspring/nerfed)
-
-// Steam particles for pairing with the hotsprings above
-
-/particles/hotspring_steam
- icon = 'icons/effects/particles/smoke.dmi'
- icon_state = list(
- "steam_1" = 2,
- "steam_2" = 2,
- "steam_3" = 1,
- )
- width = 64
- height = 64
- count = 5
- spawning = 0.2
- lifespan = 1 SECONDS
- fade = 0.5 SECONDS
- color = "#ffffff"
- position = generator(GEN_BOX, list(-32,-32,0), list(32,32,0), NORMAL_RAND)
- scale = generator(GEN_VECTOR, list(0.9,0.9), list(1.1,1.1), NORMAL_RAND)
- drift = generator(GEN_VECTOR, list(-0.1,0), list(0.1,0.025), UNIFORM_RAND)
- spin = generator(GEN_NUM, list(-15,15), NORMAL_RAND)
-
-// Fishing source for the above water turfs
-
-/datum/fish_source/icecat_hot_spring
- fish_table = list(
- /obj/item/fish/moonfish/dwarf = 5,
- /obj/item/fish/needlefish = 10,
- /obj/item/fish/armorfish = 10,
- /obj/item/fish/chasm_crab/ice = 5,
- /obj/item/stack/sheet/bone = 5,
- )
- catalog_description = "Hot Springs"
+/turf/open/water/hot_spring/icemoon
+ initial_gas_mix = ICEMOON_DEFAULT_ATMOS
// The area
diff --git a/modular_doppler/human_health_maximum/code/to_the_limit.dm b/modular_doppler/human_health_maximum/code/to_the_limit.dm
new file mode 100644
index 0000000000000..1aac5502898c3
--- /dev/null
+++ b/modular_doppler/human_health_maximum/code/to_the_limit.dm
@@ -0,0 +1,4 @@
+/mob/living/carbon/human
+ max_stamina = 170
+ maxHealth = 150
+ health = 150
diff --git a/modular_doppler/kahraman_equipment/code/clothing/clothing.dm b/modular_doppler/kahraman_equipment/code/clothing/clothing.dm
index e7ef49310e2cf..59d461f9877a1 100644
--- a/modular_doppler/kahraman_equipment/code/clothing/clothing.dm
+++ b/modular_doppler/kahraman_equipment/code/clothing/clothing.dm
@@ -8,8 +8,10 @@
icon_state = "jumpsuit"
worn_icon = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi'
supported_bodyshapes = list(BODYSHAPE_HUMANOID, BODYSHAPE_DIGITIGRADE)
- bodyshape_icon_files = list(BODYSHAPE_HUMANOID_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi',
- BODYSHAPE_DIGITIGRADE_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi')
+ bodyshape_icon_files = list(
+ BODYSHAPE_HUMANOID_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi',
+ BODYSHAPE_DIGITIGRADE_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi',
+ )
worn_icon_state = "jumpsuit"
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
@@ -193,6 +195,7 @@
icon = 'modular_doppler/kahraman_equipment/icons/clothes/clothing.dmi'
icon_state = "mask"
worn_icon = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION
supported_bodyshapes = list(BODYSHAPE_HUMANOID, BODYSHAPE_SNOUTED)
bodyshape_icon_files = list(BODYSHAPE_HUMANOID_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi',
BODYSHAPE_SNOUTED_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi')
diff --git a/modular_doppler/kahraman_equipment/code/ore_thumper.dm b/modular_doppler/kahraman_equipment/code/ore_thumper.dm
index 99b1833aabae4..7221c03e83504 100644
--- a/modular_doppler/kahraman_equipment/code/ore_thumper.dm
+++ b/modular_doppler/kahraman_equipment/code/ore_thumper.dm
@@ -89,7 +89,7 @@
if(!istype(get_turf(src), /turf/open/misc))
. += span_notice("It must be constructed on suitable terrain , like ash, snow, or sand.")
. += span_notice("It must have a powered, wired connection running beneath it with [display_power(active_power_usage, convert = FALSE)] of excess power to function.")
- . += span_notice("It will produce a box of materials after it has slammed [slam_jams_needed] times.")
+ . += span_notice("It will produce materials after it has slammed [slam_jams_needed] times.")
. += span_notice("Currently, it has slammed [slam_jams] / [slam_jams_needed] times needed.")
. += span_notice("It will stop producing resources if there are too many piles of ore near it.")
. += span_notice("The thumper cannot work if it is too close to another thumper , needing at least [ore_spawn_range] spaces in all directions between it another thumper.")
@@ -243,10 +243,10 @@
for(var/iteration in 1 to rand(2, 4))
var/turf/target_turf = pick(nearby_valid_turfs)
-// var/obj/item/stack/new_ore = pick_weight(ore_weight_list)
-// var/obj/new_ore_pile = new new_ore(target_turf, ore_spawn_values[new_ore.type])
+ var/obj/item/stack/new_ore = pick_weight(ore_weight_list)
+ var/obj/new_ore_pile = new new_ore(target_turf, ore_spawn_values[new_ore.type])
new /obj/effect/temp_visual/mook_dust(target_turf)
-// playsound(new_ore_pile, 'modular_nova/master_files/sound/effects/robot_sit.ogg', 25, TRUE) port tallborgs soon
+ playsound(new_ore_pile, 'modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg', 25, TRUE)
slam_jams -= slam_jams_needed
diff --git a/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm b/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm
index 0ead8a75f6416..cc019598dc927 100644
--- a/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm
+++ b/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm
@@ -22,17 +22,6 @@
RND_CATEGORY_AKHTER_EQUIPMENT,
)
-/datum/design/frontier_medtech_belt
- name = "Medical Technician Kit"
- id = "frontier_medtech_belt"
- build_type = BIOGENERATOR
- materials = list(/datum/material/biomass = 200)
- build_path = /obj/item/storage/backpack/duffelbag/deforest_paramedic
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_AKHTER_EQUIPMENT,
- )
-
/datum/design/frontier_medkit
name = "Frontier Medical Kit"
id = "frontier_medkit"
diff --git a/modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg b/modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg
new file mode 100644
index 0000000000000..769d2d43b0b7f
Binary files /dev/null and b/modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg differ
diff --git a/modular_doppler/loadout_categories/categories/backpacks.dm b/modular_doppler/loadout_categories/categories/backpacks.dm
index 7a0427ec0334d..30222bab376d3 100644
--- a/modular_doppler/loadout_categories/categories/backpacks.dm
+++ b/modular_doppler/loadout_categories/categories/backpacks.dm
@@ -38,6 +38,10 @@
name = "Custom Duffelbag"
item_path = /obj/item/storage/backpack/duffelbag/custom
+/datum/loadout_item/backpack/adventurer
+ name = "Adventurer's Bandolier"
+ item_path = /obj/item/storage/backpack/satchel/crusader
+
/datum/loadout_item/backpack/duffel/industrial
name = "Custom Industrial Duffelbag"
item_path = /obj/item/storage/backpack/duffelbag/engineering/custom
diff --git a/modular_doppler/loadout_categories/categories/belts.dm b/modular_doppler/loadout_categories/categories/belts.dm
index 2faf0304cacf4..38694c991b551 100644
--- a/modular_doppler/loadout_categories/categories/belts.dm
+++ b/modular_doppler/loadout_categories/categories/belts.dm
@@ -129,10 +129,10 @@
name = "Frontier Med-kit"
item_path = /obj/item/storage/medkit/frontier/stocked
-/datum/loadout_item/belts/deforest_paramed
- name = "Satchel Tech-kit"
- item_path = /obj/item/storage/backpack/duffelbag/deforest_paramedic
-
/datum/loadout_item/belts/deforest_surgical
name = "Firest Responder Med-kit"
item_path = /obj/item/storage/backpack/duffelbag/deforest_surgical
+
+/datum/loadout_item/belts/crusader_belt
+ name = "Sword Belt & Sheath"
+ item_path = /obj/item/storage/belt/crusader
diff --git a/modular_doppler/loadout_categories/categories/clothing.dm b/modular_doppler/loadout_categories/categories/clothing.dm
index 83def820f323e..e8ef6ae501fde 100644
--- a/modular_doppler/loadout_categories/categories/clothing.dm
+++ b/modular_doppler/loadout_categories/categories/clothing.dm
@@ -47,6 +47,10 @@
name = "Marsian PLA Trenchcoat"
item_path = /obj/item/clothing/suit/jacket/doppler/red_trench
+/datum/loadout_item/suit/warm_coat
+ name = "Warm Coat"
+ item_path = /obj/item/clothing/suit/warm_coat
+
/*
* SUITS / SUIT JACKETS
*/
@@ -327,14 +331,6 @@
name = "Hawaiian Shirt"
item_path = /obj/item/clothing/suit/costume/hawaiian
-/*
-* MAID OUT WITH THE FIT
-*/
-
-/datum/loadout_item/suit/maid_costume
- name = "Maid Costume"
- item_path = /obj/item/clothing/under/costume/maid
-
/*
* MISC
*/
diff --git a/modular_doppler/loadout_categories/categories/gloves.dm b/modular_doppler/loadout_categories/categories/gloves.dm
index be338ebeb7042..b34943287a98f 100644
--- a/modular_doppler/loadout_categories/categories/gloves.dm
+++ b/modular_doppler/loadout_categories/categories/gloves.dm
@@ -73,8 +73,8 @@
item_path = /obj/item/clothing/gloves/radio
/datum/loadout_item/gloves/maid_arm_covers
- name = "Maid Costume"
- item_path = /obj/item/clothing/gloves/maid
+ name = "Maid Arm Covers"
+ item_path = /obj/item/clothing/gloves/maid_arm_covers
/datum/loadout_item/gloves/lalune_gloves
name = "Elbow Gloves"
diff --git a/modular_doppler/loadout_categories/categories/heads.dm b/modular_doppler/loadout_categories/categories/heads.dm
index f18bc53bd7651..e7e8a83ebfce6 100644
--- a/modular_doppler/loadout_categories/categories/heads.dm
+++ b/modular_doppler/loadout_categories/categories/heads.dm
@@ -100,4 +100,4 @@
/datum/loadout_item/head/maid_headband
name = "Maid Headband"
- item_path = /obj/item/clothing/head/costume/maidheadband
+ item_path = /obj/item/clothing/head/maid_headband
diff --git a/modular_doppler/loadout_categories/categories/masks.dm b/modular_doppler/loadout_categories/categories/masks.dm
index 9b6d7fb1bdeca..ee13834e60cb2 100644
--- a/modular_doppler/loadout_categories/categories/masks.dm
+++ b/modular_doppler/loadout_categories/categories/masks.dm
@@ -75,3 +75,15 @@
/datum/loadout_item/mask/neck_gaiter
name = "Neck Gaiter"
item_path = /obj/item/clothing/mask/neck_gaiter
+
+/datum/loadout_item/mask/paper
+ name = "Paper Mask"
+ item_path = /obj/item/clothing/mask/paper
+
+/datum/loadout_item/mask/lollipop
+ name = "Lollipop"
+ item_path = /obj/item/food/lollipop
+
+/datum/loadout_item/mask/kitsune
+ name = "Kitsune Mask"
+ item_path = /obj/item/clothing/mask/kitsune
diff --git a/modular_doppler/loadout_categories/categories/neck.dm b/modular_doppler/loadout_categories/categories/neck.dm
index 298bffcd11a34..1dfa78c6261f7 100644
--- a/modular_doppler/loadout_categories/categories/neck.dm
+++ b/modular_doppler/loadout_categories/categories/neck.dm
@@ -25,3 +25,35 @@
/datum/loadout_item/neck/maid_neck_cover
name = "Maid Neck Cover"
item_path = /obj/item/clothing/neck/maid_neck_cover
+
+/datum/loadout_item/neck/collar
+ name = "Choker"
+ item_path = /obj/item/clothing/neck/human_petcollar/locked/choker
+
+/datum/loadout_item/neck/collar/bell
+ name = "Bell Collar"
+ item_path = /obj/item/clothing/neck/human_petcollar/locked/bell
+
+/datum/loadout_item/neck/collar/cross
+ name = "Cross Collar"
+ item_path = /obj/item/clothing/neck/human_petcollar/locked/cross
+
+/datum/loadout_item/neck/collar/holo
+ name = "Holocollar"
+ item_path = /obj/item/clothing/neck/human_petcollar/locked/holo
+
+/datum/loadout_item/neck/collar/cow
+ name = "Cowbell Collar"
+ item_path = /obj/item/clothing/neck/human_petcollar/locked/cow
+
+/datum/loadout_item/neck/collar/leather
+ name = "Leather Collar"
+ item_path = /obj/item/clothing/neck/human_petcollar/locked/leather
+
+/datum/loadout_item/neck/collar/spike
+ name = "Spiked Collar"
+ item_path = /obj/item/clothing/neck/human_petcollar/locked/spike
+
+/datum/loadout_item/neck/bowtie
+ name = "Bowtie (Colorable)"
+ item_path = /obj/item/clothing/neck/bowtie
diff --git a/modular_doppler/loadout_categories/categories/undersuit.dm b/modular_doppler/loadout_categories/categories/undersuit.dm
index 002af1dded7e7..debce213a9d44 100644
--- a/modular_doppler/loadout_categories/categories/undersuit.dm
+++ b/modular_doppler/loadout_categories/categories/undersuit.dm
@@ -89,6 +89,10 @@
name = "Jeans"
item_path = /obj/item/clothing/under/pants/jeans
+/datum/loadout_item/undersuit/pants/moto
+ name = "Moto Pants"
+ item_path = /obj/item/clothing/under/pants/moto_leggings
+
/datum/loadout_item/undersuit/pants/jeans/shorts
name = "Jean Shorts"
item_path = /obj/item/clothing/under/shorts/jeanshorts
@@ -133,6 +137,54 @@
name = "Loincloth, Alt"
item_path = /obj/item/clothing/under/dress/skirt/loincloth/loincloth_alt
+/datum/loadout_item/undersuit/formal
+ name = "Pencilskirt with Shirt"
+ item_path = /obj/item/clothing/under/suit/pencil
+
+/datum/loadout_item/undersuit/formal/pencil
+ name = "Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/noshirt
+
+/datum/loadout_item/undersuit/formal/pencil/black_really
+ name = "Executive Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/black_really
+
+/datum/loadout_item/undersuit/formal/pencil/charcoal
+ name = "Charcoal Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/charcoal
+
+/datum/loadout_item/undersuit/formal/pencil/navy
+ name = "Navy Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/navy
+
+/datum/loadout_item/undersuit/formal/pencil/burgandy
+ name = "Burgandy Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/burgandy
+
+/datum/loadout_item/undersuit/formal/pencil/checkered
+ name = "Checkered Pencilskirt with Shirt"
+ item_path = /obj/item/clothing/under/suit/pencil/checkered
+
+/datum/loadout_item/undersuit/formal/pencil/checkered/noshirt
+ name = "Checkered Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/checkered/noshirt
+
+/datum/loadout_item/undersuit/formal/pencil/tan
+ name = "Tan Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/tan
+
+/datum/loadout_item/undersuit/formal/pencil/green
+ name = "Green Pencilskirt"
+ item_path = /obj/item/clothing/under/suit/pencil/green
+
+/datum/loadout_item/undersuit/formal/cowl_neck
+ name = "Cowl Neck Shirt & Trousers"
+ item_path = /obj/item/clothing/under/cowl_neck_shirt
+
+/datum/loadout_item/undersuit/formal/collared_shirt
+ name = "Collared Shirt & Trousers"
+ item_path = /obj/item/clothing/under/collared_shirt
+
/*
* BUTTONDOWNS
*/
@@ -214,6 +266,10 @@
name = "Strapless Dress"
item_path = /obj/item/clothing/under/dress/doppler/strapless
+/datum/loadout_item/undersuit/dress/maid
+ name = "Maid Outfit"
+ item_path = /obj/item/clothing/under/maid_costume
+
/// JAPANESE/LUNAR BREAKER
/datum/loadout_item/undersuit/dress/qipao
@@ -292,6 +348,10 @@
name = "Colorable Jumpskirt"
item_path = /obj/item/clothing/under/color/jumpskirt
-/datum/loadout_item/under/jumpsuit/frontier
+/datum/loadout_item/undersuit/jumpsuit/frontier
name = "Frontier Jumpsuit"
item_path = /obj/item/clothing/under/frontier_colonist
+
+/datum/loadout_item/undersuit/bunnysuit
+ name = "Bunny Suit"
+ item_path = /obj/item/clothing/under/costume/bunnysuit
diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm
index ddbc8f7f3fc60..fea4deedf5c84 100644
--- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm
+++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm
@@ -67,4 +67,4 @@
/datum/greyscale_config/hypovial
name = "Hypovial"
icon_file = 'modular_doppler/modular_items/hyposprays/icons/vials.dmi'
- json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/items/hypovial.json'
\ No newline at end of file
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/items/hypovial.json'
diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm
index ee3ae3ed47251..0b9535e1db4b9 100644
--- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm
+++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm
@@ -63,6 +63,15 @@
icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/shirt.dmi'
json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/suit/dagger_mantle_worn.json'
+/datum/greyscale_config/warm_coat
+ name = "Warm Coat"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi'
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json'
+
+/datum/greyscale_config/warm_coat/worn
+ name = "Warm Coat (Worn)"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi'
+
// Apron
/datum/greyscale_config/apron
diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm
index f1e487e0ee474..dc009380a9320 100644
--- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm
+++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm
@@ -310,3 +310,48 @@
/datum/greyscale_config/long_skirt/worn
name = "Long Skirt (Worn)"
icon_file = 'modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi'
+
+/datum/greyscale_config/pencilskirt
+ name = "Pencilskirt"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi'
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json'
+
+/datum/greyscale_config/pencilskirt/worn
+ name = "Pencilskirt (Worn)"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi'
+
+/datum/greyscale_config/pencilskirt_withshirt
+ name = "Pencilskirt + Shirt"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi'
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json'
+
+/datum/greyscale_config/pencilskirt_withshirt/worn
+ name = "Pencilskirt + Shirt (Worn)"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi'
+
+/datum/greyscale_config/pencilskirt_checkers
+ name = "Checkered Pencilskirt"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi'
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json'
+
+/datum/greyscale_config/pencilskirt_checkers/worn
+ name = "Checkered Pencilskirt (Worn)"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi'
+
+/datum/greyscale_config/pencilskirt_checkers_withshirt
+ name = "Checkered Pencilskirt + Shirt"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi'
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json'
+
+/datum/greyscale_config/pencilskirt_checkers_withshirt/worn
+ name = "Checkered Pencilskirt + Shirt (Worn)"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi'
+
+/datum/greyscale_config/pencilskirt_withsuit
+ name = "Pencilskirt + Suit"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi'
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json'
+
+/datum/greyscale_config/pencilskirt_withsuit/worn
+ name = "Pencilskirt + Suit (Worn)"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi'
diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi
new file mode 100644
index 0000000000000..8827aa69d66a4
Binary files /dev/null and b/modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi differ
diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi
index c56b9a3a11925..4e4f6b824a7e1 100644
Binary files a/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi and b/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi differ
diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi
new file mode 100644
index 0000000000000..2a5c15dec121b
Binary files /dev/null and b/modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi differ
diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi
index 2707140ea05d9..cb9a0d415c43d 100644
Binary files a/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi and b/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi differ
diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json
new file mode 100644
index 0000000000000..039254707b4b8
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json
@@ -0,0 +1,16 @@
+{
+ "warm_coat": [
+ {
+ "type": "icon_state",
+ "icon_state": "warm_coat",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "warm_coat_trim",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+}
diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json
new file mode 100644
index 0000000000000..23f0bbcb9f600
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json
@@ -0,0 +1,15 @@
+{
+ "pencilskirt": [
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_belt",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+}
diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json
new file mode 100644
index 0000000000000..99072525ab540
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json
@@ -0,0 +1,40 @@
+{
+ "pencilskirt_checkers": [
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_belt",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_checkers",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ],
+ "pencilskirt_shirt": [
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_belt",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_shirt",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+}
diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json
new file mode 100644
index 0000000000000..8ebb891af02d2
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json
@@ -0,0 +1,33 @@
+{
+ "pencilskirt_suit": [
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_belt",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_suit_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_suit_under",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_suit_tie",
+ "blend_mode": "overlay",
+ "color_ids": [ 4 ]
+ }
+ ]
+}
diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json
new file mode 100644
index 0000000000000..b555d45358944
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json
@@ -0,0 +1,27 @@
+{
+ "pencilskirt_checkers_shirt": [
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_checkers",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_belt",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pencilskirt_shirt",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ }
+ ]
+}
diff --git a/modular_doppler/modular_cosmetics/code/belt/crusaderbelt.dm b/modular_doppler/modular_cosmetics/code/belt/crusaderbelt.dm
new file mode 100644
index 0000000000000..5dd5f0c3ad6a5
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/code/belt/crusaderbelt.dm
@@ -0,0 +1,136 @@
+/obj/item/storage/belt/crusader //Belt + sheath combination - still only holds one sword at a time though
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi'
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi'
+ name = "sword belt"
+ desc = "Technically called a baldric, this can hold an assortment of equipment for whatever situation an adventurer may encounter; as well as having an attached sheath."
+ icon_state = "crusader_belt"
+ worn_icon_state = "crusader_belt"
+ inhand_icon_state = "utility"
+ w_class = WEIGHT_CLASS_BULKY //Cant fit a sheath in your bag
+ interaction_flags_click = NEED_DEXTERITY
+
+/obj/item/storage/belt/crusader/Initialize(mapload)
+ . = ..()
+
+ create_storage(
+ max_slots = 2,
+ max_specific_storage = WEIGHT_CLASS_BULKY, //This makes sure swords and the pouches can fit in here - the whitelist keeps the bad stuff out
+ storage_type = /datum/storage/belt/crusader,
+ canhold = list(
+ /obj/item/storage/belt/storage_pouch,
+ /obj/item/forging/reagent_weapon/sword,
+ /obj/item/forging/reagent_weapon/katana,
+ /obj/item/forging/reagent_weapon/bokken,
+ /obj/item/forging/reagent_weapon/dagger,
+ /obj/item/melee/sabre,
+ /obj/item/claymore,
+ /obj/item/melee/cleric_mace,
+ /obj/item/knife,
+ /obj/item/melee/baton,
+ /obj/item/nullrod, //holds any subset of nullrod in the sheath-storage - - -
+ ),
+ canthold = list( // - - - except the second list's items (no fedora in the sheath)
+ /obj/item/nullrod/armblade,
+ /obj/item/nullrod/carp,
+ /obj/item/nullrod/chainsaw,
+ /obj/item/nullrod/bostaff,
+ /obj/item/nullrod/hammer,
+ /obj/item/nullrod/pitchfork,
+ /obj/item/nullrod/pride_hammer,
+ /obj/item/nullrod/spear,
+ /obj/item/nullrod/staff,
+ /obj/item/nullrod/fedora,
+ /obj/item/nullrod/godhand,
+ /obj/item/nullrod/staff,
+ /obj/item/nullrod/whip,
+ ),
+ )
+ atom_storage.allow_big_nesting = TRUE // Lets the pouch work
+ AddElement(/datum/element/update_icon_updates_onmob)
+
+//Overrides normal dumping code to instead dump from the pouch item inside
+/datum/storage/belt/crusader/dump_content_at(atom/dest_object, mob/dumping_mob)
+ var/atom/used_belt = parent
+ if(!used_belt)
+ return
+ var/obj/item/storage/belt/storage_pouch/pouch = locate() in real_location
+ if(!pouch)
+ pouch.balloon_alert(dumping_mob, "no pouch!")
+ return //oopsie!! If we don't have a pouch! You're fucked!
+ if(locked)
+ pouch.balloon_alert(dumping_mob, "locked!")
+ return
+ pouch.atom_storage.dump_content_at(dest_object, dumping_mob)
+
+/obj/item/storage/belt/crusader/item_ctrl_click(mob/user) //Makes ctrl-click also open the inventory, so that you can open it with full hands without dropping the sword
+ . = ..()
+ atom_storage.show_contents(user)
+ return CLICK_ACTION_SUCCESS
+
+/obj/item/storage/belt/crusader/click_alt(mob/user) //This is basically the same as the normal sheath, but because there's always an item locked in the first slot it uses the second slot for swords
+ if(contents.len == 2)
+ var/obj/item/drawn_item = contents[2]
+ add_fingerprint(user)
+ playsound(src, 'sound/items/unsheath.ogg', 50, TRUE, -5)
+ if(!user.put_in_hands(drawn_item))
+ to_chat(user, span_notice("You fumble for [drawn_item] and it falls on the floor."))
+ update_appearance()
+ return CLICK_ACTION_SUCCESS
+ user.visible_message(span_notice("[user] takes [drawn_item] out of [src]."), span_notice("You take [drawn_item] out of [src]."))
+ update_appearance()
+ else
+ to_chat(user, span_warning("[src] is empty!"))
+ return CLICK_ACTION_SUCCESS
+
+/obj/item/storage/belt/crusader/update_icon(updates)
+ if(contents.len == 2) //Checks for a sword/rod in the sheath slot, changes the sprite accordingly
+ icon_state = "crusader_belt_sheathed"
+ worn_icon_state = "crusader_belt_sheathed"
+ else
+ icon_state = "crusader_belt"
+ worn_icon_state = "crusader_belt"
+ . = ..()
+
+/obj/item/storage/belt/crusader/examine(mob/user)
+ . = ..()
+ .+= span_notice("Ctrl-click it to easily open its inventory.")
+ if(contents.len == 2) //If there's no sword/rod in the sheath slot it doesnt display the alt-click instruction
+ . += span_notice("Alt-click it to quickly draw the blade.")
+ return
+
+/obj/item/storage/belt/crusader/PopulateContents()
+ . = ..()
+ new /obj/item/storage/belt/storage_pouch(src)
+
+/obj/item/storage/belt/storage_pouch //seperate mini-storage inside the belt, leaving room for only one sword. Inspired by a (very poorly implemented) belt on Desert Rose
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi'
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi'
+ name = "storage pouch"
+ desc = span_notice("Click on this to open your belt's inventory!")
+ icon_state = "storage_pouch_icon"
+ worn_icon_state = "storage_pouch_icon"
+ w_class = WEIGHT_CLASS_BULKY //Still cant put it in your bags, it's technically a belt
+ anchored = 1 //Dont want people taking it out with their hands
+
+/obj/item/storage/belt/storage_pouch/attack_hand(mob/user, list/modifiers) //Opens the bag on click - considering it's already anchored, this makes it function similar to how ghosts can open all nested inventories
+ . = ..()
+
+ atom_storage.show_contents(user)
+
+/obj/item/storage/belt/storage_pouch/Initialize(mapload)
+ . = ..()
+
+ atom_storage.max_slots = 6
+ atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL //Rather than have a huge whitelist, the belt can simply hold anything a pocket can hold - Can easily be changed if it somehow becomes an issue
+
+/datum/crafting_recipe/crusader_belt
+ name = "Sword Belt and Sheath"
+ result = /obj/item/storage/belt/crusader
+ reqs = list(/obj/item/storage/belt/utility = 1, /obj/item/stack/sheet/leather = 3, /obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/mineral/gold = 1)
+ tool_behaviors = list(TOOL_WIRECUTTER, TOOL_SCREWDRIVER, TOOL_WELDER) //To cut the leather and fasten/weld the sheath detailing
+ time = 30
+ category = CAT_CLOTHING
+
+/datum/crafting_recipe/crusader_belt/on_craft_completion(mob/user, atom/result)
+ var/obj/item/storage/belt/crusader/crusader_belt = result
+ crusader_belt.PopulateContents()
diff --git a/modular_doppler/modular_cosmetics/code/face/basemasks.dm b/modular_doppler/modular_cosmetics/code/face/basemasks.dm
index dfbce549c9ee1..55084bc277128 100644
--- a/modular_doppler/modular_cosmetics/code/face/basemasks.dm
+++ b/modular_doppler/modular_cosmetics/code/face/basemasks.dm
@@ -6,3 +6,7 @@
/obj/item/clothing/mask/bandana
supported_bodyshapes = null
bodyshape_icon_files = null
+
+/obj/item/clothing/mask/kitsune
+ supported_bodyshapes = null
+ bodyshape_icon_files = null
diff --git a/modular_doppler/modular_cosmetics/code/face/masks.dm b/modular_doppler/modular_cosmetics/code/face/masks.dm
index c2a1f97c5301a..e05be6d5826f7 100644
--- a/modular_doppler/modular_cosmetics/code/face/masks.dm
+++ b/modular_doppler/modular_cosmetics/code/face/masks.dm
@@ -39,3 +39,15 @@
. += span_notice("[src] can be worn above or below your suit. Alt-Right-click to toggle.")
. += span_notice("Alt-click [src] to adjust it.")
+/obj/item/clothing/mask/neck_gaiter/cybersun
+ name = "advanced neck gaiter"
+ desc = "A glistening neck accessory, colored in a black pinstripe texture. The material is an attempt to imitate 'heatsilk' technology, but it is barely any laser-reflective . Has a small respirator to be used with internals."
+ unique_death = 'modular_doppler/modular_sounds/sound/machines/hacked.ogg'
+ greyscale_colors = "#333333"
+ var/hit_reflect_chance = 5 // don't count on it, operative
+
+/obj/item/clothing/mask/neck_gaiter/cybersun/IsReflect(def_zone)
+ if(def_zone in list(BODY_ZONE_HEAD))
+ return FALSE
+ if (prob(hit_reflect_chance))
+ return TRUE
diff --git a/modular_doppler/modular_cosmetics/code/face/papermask.dm b/modular_doppler/modular_cosmetics/code/face/papermask.dm
new file mode 100644
index 0000000000000..8d2fee1647233
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/code/face/papermask.dm
@@ -0,0 +1,137 @@
+/datum/action/item_action/adjust/papermask
+ name = "Adjust paper mask"
+ desc = "LMB: Change mask face. RMB: Adjust mask."
+
+/datum/action/item_action/adjust/papermask/Trigger(trigger_flags)
+ . = ..()
+ if(!.)
+ return
+ var/obj/item/clothing/mask/paper/paper_mask = target
+ if(trigger_flags & TRIGGER_SECONDARY_ACTION)
+ paper_mask.adjust_mask(usr)
+ else
+ paper_mask.reskin_obj(usr)
+
+/obj/item/clothing/mask/paper
+ name = "paper mask"
+ desc = "It's true. Once you wear a mask for so long, you forget about who you are. Wonder if that happens with shitty paper ones."
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi'
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi'
+ icon_state = "mask_paper"
+ clothing_flags = MASKINTERNALS
+ flags_inv = HIDEFACIALHAIR | HIDESNOUT
+ interaction_flags_click = NEED_DEXTERITY
+ w_class = WEIGHT_CLASS_SMALL
+ supported_bodyshapes = null
+ bodyshape_icon_files = null
+ actions_types = list(/datum/action/item_action/adjust/papermask)
+ unique_reskin = list(
+ "Blank" = "mask_paper",
+ "Neutral" = "mask_neutral",
+ "Eye" = "mask_eye",
+ "Sleep" = "mask_sleep",
+ "Heart" = "mask_heart",
+ "Core" = "mask_core",
+ "Plus" = "mask_plus",
+ "Square" = "mask_square",
+ "Bullseye" = "mask_bullseye",
+ "Vertical" = "mask_vertical",
+ "Horizontal" = "mask_horizontal",
+ "X" = "mask_x",
+ "Bug" = "mask_bug",
+ "Double" = "mask_double",
+ "Mark" = "mask_mark",
+ "Line" = "mask_line",
+ "Minus" = "mask_minus",
+ "Four" = "mask_four",
+ "Diamond" = "mask_diamond",
+ "Cat" = "mask_cat",
+ "Big Eye" = "mask_bigeye",
+ "Good" = "mask_good",
+ "Bad" = "mask_bad",
+ "Happy" = "mask_happy",
+ "Sad" = "mask_sad",
+ )
+
+ /// Whether or not the mask is currently being layered over (or under!) hair. FALSE/null means the mask is layered over the hair (this is how it starts off).
+ var/wear_hair_over
+ /// Whether or not the strap is currently hidden or visible
+ var/strap_hidden
+
+/obj/item/clothing/mask/paper/Initialize(mapload)
+ . = ..()
+ if(wear_hair_over)
+ alternate_worn_layer = BACK_LAYER
+
+/obj/item/clothing/mask/paper/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
+ . = ..()
+ if(!strap_hidden)
+ . += mutable_appearance(icon_file, "mask_paper_strap")
+
+/obj/item/clothing/mask/paper/click_alt_secondary(mob/user)
+ adjust_mask(user)
+
+/obj/item/clothing/mask/paper/item_ctrl_click(mob/user)
+ adjust_strap(user)
+ return CLICK_ACTION_SUCCESS
+
+/obj/item/clothing/mask/paper/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Change Mask Face"
+ context[SCREENTIP_CONTEXT_ALT_RMB] = "Adjust Mask"
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Hide/Show Strap"
+ return CONTEXTUAL_SCREENTIP_SET
+
+/obj/item/clothing/mask/paper/reskin_obj(mob/user)
+ if(!user.is_holding_item_of_type(/obj/item/pen))
+ balloon_alert(user, "must be holding a pen!")
+ return
+
+ . = ..()
+
+ var/mob/living/carbon/carbon_user
+ if(iscarbon(user))
+ carbon_user = user
+ if(carbon_user && carbon_user.wear_mask == src)
+ carbon_user.update_worn_mask()
+
+ current_skin = null //so we can infinitely reskin
+
+/obj/item/clothing/mask/paper/proc/adjust_mask(mob/living/carbon/human/user)
+ if(!istype(user))
+ return
+ if(!user.incapacitated)
+ var/is_worn = user.wear_mask == src
+ wear_hair_over = !wear_hair_over
+ if(wear_hair_over)
+ alternate_worn_layer = BACK_LAYER
+ to_chat(user, "You [is_worn ? "" : "will "]sweep your hair over the mask.")
+ else
+ alternate_worn_layer = initial(alternate_worn_layer)
+ to_chat(user, "You [is_worn ? "" : "will "]sweep your hair under the mask.")
+
+ user.update_worn_mask()
+
+/obj/item/clothing/mask/paper/proc/adjust_strap(mob/living/carbon/human/user)
+ if(!istype(user))
+ return
+ if(!user.incapacitated)
+ var/is_worn = user.wear_mask == src
+ strap_hidden = !strap_hidden
+ to_chat(user, "You [is_worn ? "" : "will "][strap_hidden ? "hide" : "show"] the mask strap.")
+
+ user.update_worn_mask()
+
+// Because alternate_worn_layer can potentially get reset on unequipping the mask (ex: for 'Top' snouts), let's make sure we don't lose it our settings
+/obj/item/clothing/mask/paper/dropped(mob/living/carbon/human/user)
+ var/prev_alternate_worn_layer = alternate_worn_layer
+ . = ..()
+ alternate_worn_layer = prev_alternate_worn_layer
+
+/datum/crafting_recipe/paper_mask
+ name = "Paper Mask"
+ result = /obj/item/clothing/mask/paper
+ time = 30
+ tool_behaviors = list(TOOL_WIRECUTTER)
+ reqs = list(/obj/item/paper = 5)
+ category = CAT_CLOTHING
diff --git a/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm b/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm
index 727cfdd4b964b..889eada8dfd05 100644
--- a/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm
+++ b/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm
@@ -7,10 +7,10 @@
/obj/item/storage/bag/garment/hop/PopulateContents()
. = ..()
- new /obj/item/clothing/under/misc/doppler_uniform/service(src)
- new /obj/item/clothing/neck/doppler_mantle/service(src)
- new /obj/item/clothing/head/beret/doppler_command/service(src)
- new /obj/item/clothing/head/utility/hardhat/welding/doppler_command/service(src)
+ new /obj/item/clothing/under/misc/doppler_uniform/command(src)
+ new /obj/item/clothing/neck/doppler_mantle/command(src)
+ new /obj/item/clothing/head/beret/doppler_command/command(src)
+ new /obj/item/clothing/head/utility/hardhat/welding/doppler_command/command(src)
/obj/item/storage/bag/garment/hos/PopulateContents()
. = ..()
diff --git a/modular_doppler/modular_cosmetics/code/hands/gloves.dm b/modular_doppler/modular_cosmetics/code/hands/gloves.dm
index 294b0488871ae..acb210b6b4f57 100644
--- a/modular_doppler/modular_cosmetics/code/hands/gloves.dm
+++ b/modular_doppler/modular_cosmetics/code/hands/gloves.dm
@@ -23,3 +23,14 @@
greyscale_config_worn = /datum/greyscale_config/armwraps/worn
greyscale_colors = "#FFFFFF"
flags_1 = IS_PLAYER_COLORABLE_1
+
+/obj/item/clothing/gloves/maid_arm_covers
+ name = "maid arm covers"
+ desc = "Maid in China."
+ icon_state = "maid_arm_covers"
+ greyscale_config = /datum/greyscale_config/maid_arm_covers
+ greyscale_config_worn = /datum/greyscale_config/maid_arm_covers/worn
+ greyscale_config_inhand_left = null
+ greyscale_config_inhand_right = null
+ greyscale_colors = "#7b9ab5#edf9ff"
+ flags_1 = IS_PLAYER_COLORABLE_1
diff --git a/modular_doppler/modular_cosmetics/code/hands/special.dm b/modular_doppler/modular_cosmetics/code/hands/special.dm
new file mode 100644
index 0000000000000..c75f88042e20b
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/code/hands/special.dm
@@ -0,0 +1,7 @@
+/obj/item/clothing/gloves/botanic_leather/janitor
+ name = "janitor gloves"
+ desc = "These rubber gloves protect against thorns, barbs, prickles, glass shards and any other threats that might be found in the station's trash. They're also quite warm."
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi'
+ icon_state = "janitor_doppler"
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi'
+ inhand_icon_state = null
diff --git a/modular_doppler/modular_cosmetics/code/hats/civilian.dm b/modular_doppler/modular_cosmetics/code/hats/civilian.dm
new file mode 100644
index 0000000000000..093a761d6cccc
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/code/hats/civilian.dm
@@ -0,0 +1,7 @@
+/obj/item/clothing/head/hats/janitor_doppler
+ name = "janitor cap"
+ desc = "A regal purple cap to keep your head clean as you clean the filthy."
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi'
+ icon_state = "janitor_doppler"
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi'
+ inhand_icon_state = "greyscale_softcap"
diff --git a/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm b/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm
index 511494d3fd879..03dae2a276706 100644
--- a/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm
+++ b/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm
@@ -1,66 +1,54 @@
+// Cool firehelmets
+
+/obj/item/clothing/head/utility/hardhat/welding
+ /// If we use a special icon file for the welding mask overlay
+ var/mask_overlay_icon = null
+
/obj/item/clothing/head/utility/hardhat/welding/doppler_command
- name = "generic doppler command hardhat"
- desc = "You shouldn't be seeing this. Yell at Naaka."
+ name = "generic command hardhat"
+ desc = "A heavy-duty hardhat for protecting the heads of the heads when everything starts to go wrong."
icon = 'modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi'
worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi'
resistance_flags = FIRE_PROOF | ACID_PROOF
icon_state = null
hat_type = null
+ mask_overlay_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi'
/obj/item/clothing/head/utility/hardhat/welding/doppler_command/medical
- name = "doppler medical hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
+ name = "medical command hardhat"
icon_state = "hardhat0_med"
hat_type = "med"
/obj/item/clothing/head/utility/hardhat/welding/doppler_command/science
- name = "doppler science hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
+ name = "science command hardhat"
icon_state = "hardhat0_sci"
hat_type = "sci"
/obj/item/clothing/head/utility/hardhat/welding/doppler_command/engineering
- name = "doppler engineering hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
+ name = "engineering command hardhat"
icon_state = "hardhat0_eng"
hat_type = "eng"
/obj/item/clothing/head/utility/hardhat/welding/doppler_command/cargo
- name = "doppler cargo hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
+ name = "supply command hardhat"
icon_state = "hardhat0_cargo"
hat_type = "cargo"
-/obj/item/clothing/head/utility/hardhat/welding/doppler_command/service
- name = "doppler service hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
- icon_state = "hardhat0_serv"
- hat_type = "serv"
-
/obj/item/clothing/head/utility/hardhat/welding/doppler_command/command
- name = "doppler command hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
+ name = "command hardhat"
icon_state = "hardhat0_cmd"
hat_type = "cmd"
-/obj/item/clothing/head/utility/hardhat/welding/doppler_command/performer
- name = "doppler performer hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
- icon_state = "hardhat0_perf"
- hat_type = "perf"
-
/obj/item/clothing/head/utility/hardhat/welding/doppler_command/security
- name = "doppler security hardhat"
- desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations."
+ name = "security command hardhat"
icon_state = "hardhat0_sec"
hat_type = "sec"
+/// Beret but cooler
-
-/// Beret breaker
/obj/item/clothing/head/beret/doppler_command
- name = "generic doppler command beret"
- desc = "You shouldn't be seeing this. Yell at Naaka."
+ name = "generic command beret"
+ desc = "A slim beret denoting the wearer as the command for some aspect of the station."
icon = 'modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi'
worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi'
icon_state = null
@@ -72,41 +60,25 @@
flags_1 = NONE
/obj/item/clothing/head/beret/doppler_command/medical
- name = "doppler medical beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
+ name = "medical command beret"
icon_state = "doppler_med"
/obj/item/clothing/head/beret/doppler_command/science
- name = "doppler science beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
+ name = "science command beret"
icon_state = "doppler_sci"
/obj/item/clothing/head/beret/doppler_command/engineering
- name = "doppler engineering beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
+ name = "engineering command beret"
icon_state = "doppler_eng"
/obj/item/clothing/head/beret/doppler_command/cargo
- name = "doppler cargo beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
+ name = "supply command beret"
icon_state = "doppler_cargo"
-/obj/item/clothing/head/beret/doppler_command/service
- name = "doppler service beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
- icon_state = "doppler_serv"
-
/obj/item/clothing/head/beret/doppler_command/command
- name = "doppler command beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
+ name = "command beret"
icon_state = "doppler_cmd"
-/obj/item/clothing/head/beret/doppler_command/performer
- name = "doppler performer beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
- icon_state = "doppler_perf"
-
/obj/item/clothing/head/beret/doppler_command/security
- name = "doppler security beret"
- desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations."
+ name = "security command beret"
icon_state = "doppler_sec"
diff --git a/modular_doppler/modular_cosmetics/code/head/head.dm b/modular_doppler/modular_cosmetics/code/head/head.dm
index 87a3c4c174a3d..38454578fa78a 100644
--- a/modular_doppler/modular_cosmetics/code/head/head.dm
+++ b/modular_doppler/modular_cosmetics/code/head/head.dm
@@ -24,3 +24,12 @@
/obj/item/clothing/head/costume/papakha/white
icon_state = "papakha_white"
+
+/obj/item/clothing/head/maid_headband
+ name = "maid headband"
+ desc = "Just like from one of those Chinese cartoons!"
+ icon_state = "maid_headband"
+ greyscale_config = /datum/greyscale_config/maid_headband
+ greyscale_config_worn = /datum/greyscale_config/maid_headband/worn
+ greyscale_colors = "#edf9ff"
+ flags_1 = IS_PLAYER_COLORABLE_1
diff --git a/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm b/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm
index 1dae6fcc99ceb..157179f2d697a 100644
--- a/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm
+++ b/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm
@@ -1,49 +1,34 @@
/obj/item/clothing/neck/doppler_mantle
- name = "generic doppler mantle"
- desc = "You shouldn't be seeing this. Yell at Naaka."
+ name = "generic command mantle"
+ desc = "A command mantle made of fire and acid proof materials to protect the wearer."
icon = 'modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi'
worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi'
icon_state = ""
inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|ARMS
+ resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/neck/doppler_mantle/medical
- name = "doppler medical mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
+ name = "medical command mantle"
icon_state = "doppler_med"
/obj/item/clothing/neck/doppler_mantle/science
- name = "doppler science mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
+ name = "science command mantle"
icon_state = "doppler_sci"
/obj/item/clothing/neck/doppler_mantle/engineering
- name = "doppler engineering mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
+ name = "engineering command mantle"
icon_state = "doppler_eng"
/obj/item/clothing/neck/doppler_mantle/cargo
- name = "doppler cargo mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
+ name = "supply command mantle"
icon_state = "doppler_cargo"
-/obj/item/clothing/neck/doppler_mantle/service
- name = "doppler service mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
- icon_state = "doppler_serv"
-
/obj/item/clothing/neck/doppler_mantle/command
- name = "doppler command mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
+ name = "command mantle"
icon_state = "doppler_cmd"
-/obj/item/clothing/neck/doppler_mantle/performer
- name = "doppler performer mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
- icon_state = "doppler_perf"
-
/obj/item/clothing/neck/doppler_mantle/security
- name = "doppler security mantle"
- desc = "A stylish command mantle from Doppler Shift-series stations."
+ name = "security command mantle"
icon_state = "doppler_sec"
diff --git a/modular_doppler/modular_cosmetics/code/shoes/galoshes.dm b/modular_doppler/modular_cosmetics/code/shoes/galoshes.dm
new file mode 100644
index 0000000000000..a4174b2162829
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/code/shoes/galoshes.dm
@@ -0,0 +1,6 @@
+/obj/item/clothing/shoes/galoshes/doppler
+ name = "purple galoshes"
+ desc = "A pair of purple rubber boots, designed to prevent slipping on wet surfaces."
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi'
+ icon_state = "galoshes_doppler"
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi'
diff --git a/modular_doppler/modular_cosmetics/code/storage/backpacks.dm b/modular_doppler/modular_cosmetics/code/storage/backpacks.dm
index 5037e5415bc02..9a911bb065555 100644
--- a/modular_doppler/modular_cosmetics/code/storage/backpacks.dm
+++ b/modular_doppler/modular_cosmetics/code/storage/backpacks.dm
@@ -32,6 +32,23 @@
greyscale_config_worn = /datum/greyscale_config/backpack/satchel/worn
flags_1 = IS_PLAYER_COLORABLE_1
+/obj/item/storage/backpack/satchel/crusader //Not very special, really just a satchel texture
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi'
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi'
+ name = "adventurer's bandolier"
+ desc = "A bandolier-satchel combination for holding all your dungeon loot."
+ icon_state = "crusader_bandolier"
+ inhand_icon_state = "explorerpack"
+ w_class = WEIGHT_CLASS_BULKY
+
+/datum/crafting_recipe/crusader_satchel
+ name = "Adventurer's Bandolier"
+ result = /obj/item/storage/backpack/satchel/crusader
+ reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/leather = 1) //Cheap because it's really just a re-texture of the satchel
+ tool_behaviors = list(TOOL_WIRECUTTER)
+ time = 15
+ category = CAT_CLOTHING
+
// duffelbags
/obj/item/storage/backpack/duffelbag/custom
name = "custom duffelbag"
diff --git a/modular_doppler/modular_cosmetics/code/suits/jacket.dm b/modular_doppler/modular_cosmetics/code/suits/jacket.dm
index ad3490770d5db..980b4ad9e9719 100644
--- a/modular_doppler/modular_cosmetics/code/suits/jacket.dm
+++ b/modular_doppler/modular_cosmetics/code/suits/jacket.dm
@@ -281,3 +281,15 @@
/obj/item/clothing/suit/jacket/doppler/red_trench/Initialize(mapload)
. = ..()
create_storage(storage_type = /datum/storage/pockets/jacket/jumbo)
+
+/obj/item/clothing/suit/warm_coat
+ name = "warm coat"
+ desc = "A long insulated coat with fur, it looks quite comfortable."
+ icon_state = "warm_coat"
+ greyscale_config = /datum/greyscale_config/warm_coat
+ greyscale_config_worn = /datum/greyscale_config/warm_coat/worn
+ greyscale_colors = "#7a5f4f#d9cec7"
+ flags_1 = IS_PLAYER_COLORABLE_1
+ cold_protection = CHEST|GROIN|ARMS
+ body_parts_covered = CHEST|GROIN|ARMS
+ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
diff --git a/modular_doppler/modular_cosmetics/code/suits/misc.dm b/modular_doppler/modular_cosmetics/code/suits/misc.dm
index ecfb8d0af9df5..c020752e97c27 100644
--- a/modular_doppler/modular_cosmetics/code/suits/misc.dm
+++ b/modular_doppler/modular_cosmetics/code/suits/misc.dm
@@ -10,3 +10,13 @@
greyscale_config = /datum/greyscale_config/apron
greyscale_config_worn = /datum/greyscale_config/apron/worn
flags_1 = IS_PLAYER_COLORABLE_1
+
+// Janitor
+/obj/item/clothing/suit/apron/janitor_cloak
+ name = "waterproof poncho"
+ desc = "A transparent, waterproof cloak for your cleaning needs."
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi'
+ icon_state = "janicloak"
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi'
+ inhand_icon_state = null
+ body_parts_covered = CHEST|GROIN|ARMS
diff --git a/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm b/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm
index 59148de8721bc..3d6ee5ae76549 100644
--- a/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm
+++ b/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm
@@ -201,3 +201,27 @@
else
new /obj/item/clothing/under/misc/doppler_uniform/standard/suit/overalls/colored(loc)
return INITIALIZE_HINT_QDEL
+
+// Doppla janitor uniforms
+
+/obj/item/clothing/under/rank/civilian/janitor/doppler
+ name = "janitor uniform"
+ desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi'
+ icon_state = "janitor_doppler"
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi'
+ inhand_icon_state = "janitor"
+ body_parts_covered = CHEST|GROIN
+ can_adjust = TRUE
+ alt_covers_chest = TRUE
+
+/obj/item/clothing/under/rank/civilian/janitor/doppler_ct
+ name = "janitor crop top"
+ desc = "It's the unofficial uniform of the station's janitor. It has minor protection from biohazards."
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi'
+ icon_state = "janitor_doppler_ct"
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi'
+ inhand_icon_state = "janitor"
+ body_parts_covered = CHEST|GROIN
+ can_adjust = TRUE
+ alt_covers_chest = TRUE
diff --git a/modular_doppler/modular_cosmetics/code/under/dresses.dm b/modular_doppler/modular_cosmetics/code/under/dresses.dm
index f3ca60eecbcbc..83bf0abe3e947 100644
--- a/modular_doppler/modular_cosmetics/code/under/dresses.dm
+++ b/modular_doppler/modular_cosmetics/code/under/dresses.dm
@@ -49,7 +49,14 @@
desc = "A fluffy pink tutu."
icon_state = "pinktutu"
-
+/obj/item/clothing/under/maid_costume
+ name = "maid costume"
+ desc = "Maid in China."
+ icon_state = "maid_costume"
+ greyscale_config = /datum/greyscale_config/maid_costume
+ greyscale_config_worn = /datum/greyscale_config/maid_costume/worn
+ greyscale_colors = "#7b9ab5#edf9ff"
+ flags_1 = IS_PLAYER_COLORABLE_1
/*
* LUNAR AND JAPANESE CLOTHES
diff --git a/modular_doppler/modular_cosmetics/code/under/formal.dm b/modular_doppler/modular_cosmetics/code/under/formal.dm
new file mode 100644
index 0000000000000..86d63a393a2fe
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/code/under/formal.dm
@@ -0,0 +1,68 @@
+/obj/item/clothing/under/suit/pencil
+ name = "pencilskirt and shirt"
+ desc = "A clean shirt with a tight-fitting pencilskirt."
+ icon_state = "pencilskirt_shirt"
+ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
+ greyscale_colors = "#37373e#ffffff"
+ greyscale_config = /datum/greyscale_config/pencilskirt_withshirt
+ greyscale_config_worn = /datum/greyscale_config/pencilskirt_withshirt/worn
+ flags_1 = IS_PLAYER_COLORABLE_1
+
+/obj/item/clothing/under/suit/pencil/noshirt
+ name = "pencilskirt"
+ desc = "A tight-fitting pencilskirt, perfect to augment an undershirt."
+ icon_state = "pencilskirt"
+ greyscale_colors = "#37373e"
+ greyscale_config = /datum/greyscale_config/pencilskirt
+ greyscale_config_worn = /datum/greyscale_config/pencilskirt/worn
+ body_parts_covered = GROIN|LEGS
+
+/obj/item/clothing/under/suit/pencil/charcoal
+ name = "charcoal pencilskirt"
+ desc = "A clean white shirt with a tight-fitting charcoal pencilskirt."
+ greyscale_colors = "#303030#ffffff"
+
+/obj/item/clothing/under/suit/pencil/navy
+ name = "navy pencilskirt"
+ desc = "A clean white shirt with a tight-fitting navy-blue pencilskirt."
+ greyscale_colors = "#112334#ffffff"
+
+/obj/item/clothing/under/suit/pencil/burgandy
+ name = "burgandy pencilskirt"
+ desc = "A clean white shirt with a tight-fitting burgandy-red pencilskirt."
+ greyscale_colors = "#3e1111#ffffff"
+
+/obj/item/clothing/under/suit/pencil/tan
+ name = "tan pencilskirt"
+ desc = "A clean white shirt with a tight-fitting tan pencilskirt."
+ greyscale_colors = "#8b7458#ffffff"
+
+/obj/item/clothing/under/suit/pencil/green
+ name = "green pencilskirt"
+ desc = "A clean white shirt with a tight-fitting green pencilskirt."
+ greyscale_colors = "#113e20#ffffff"
+
+/obj/item/clothing/under/suit/pencil/black_really
+ name = "executive pencilskirt"
+ desc = "A sleek suit with a tight-fitting pencilskirt."
+ icon_state = "pencilskirt_suit"
+ greyscale_colors = "#37373e#37373e#ffffff#ac3232"
+ greyscale_config = /datum/greyscale_config/pencilskirt_withsuit
+ greyscale_config_worn = /datum/greyscale_config/pencilskirt_withsuit/worn
+
+/obj/item/clothing/under/suit/pencil/checkered
+ name = "checkered pencilskirt and shirt"
+ desc = "A clean shirt with a tight-fitting checkered pencilskirt."
+ icon_state = "pencilskirt_checkers_shirt"
+ greyscale_colors = "#37373e#232323#ffffff"
+ greyscale_config = /datum/greyscale_config/pencilskirt_checkers_withshirt
+ greyscale_config_worn = /datum/greyscale_config/pencilskirt_checkers_withshirt/worn
+
+/obj/item/clothing/under/suit/pencil/checkered/noshirt
+ name = "checkered pencilskirt"
+ desc = "A tight-fitting checkered pencilskirt."
+ icon_state = "pencilskirt_checkers"
+ greyscale_colors = "#37373e#232323"
+ greyscale_config = /datum/greyscale_config/pencilskirt_checkers
+ greyscale_config_worn = /datum/greyscale_config/pencilskirt_checkers/worn
+ body_parts_covered = GROIN|LEGS
diff --git a/modular_doppler/modular_cosmetics/code/under/miscellania.dm b/modular_doppler/modular_cosmetics/code/under/miscellania.dm
index e23b3609480a3..cd1528664c6a2 100644
--- a/modular_doppler/modular_cosmetics/code/under/miscellania.dm
+++ b/modular_doppler/modular_cosmetics/code/under/miscellania.dm
@@ -34,6 +34,8 @@
desc = "De riguer for techno classicists, these extreme wide leg pants come back into style every \
now and then. This pair has generous onboard storage."
icon_state = "big_pants"
+ supported_bodyshapes = null
+ bodyshape_icon_files = null
greyscale_config = /datum/greyscale_config/big_pants
greyscale_config_worn = /datum/greyscale_config/big_pants/worn
greyscale_colors = "#874f16"
@@ -55,3 +57,14 @@
/obj/item/clothing/under/misc/gear_harness/Initialize(mapload)
. = ..()
allowed += GLOB.colonist_suit_allowed
+
+/obj/item/clothing/under/costume/bunnysuit
+ name = "bunny suit"
+ desc = "Makes the wearer more attractive; even and especially men."
+ icon_state = "bunnysuit"
+ icon = 'modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi'
+ worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi'
+ supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
+ body_parts_covered = CHEST|GROIN
+ can_adjust = TRUE
+ alt_covers_chest = FALSE
diff --git a/modular_doppler/modular_cosmetics/code/uniform_overrides.dm b/modular_doppler/modular_cosmetics/code/uniform_overrides.dm
index 9275f59afdf51..85a7587216eef 100644
--- a/modular_doppler/modular_cosmetics/code/uniform_overrides.dm
+++ b/modular_doppler/modular_cosmetics/code/uniform_overrides.dm
@@ -5,3 +5,8 @@
/datum/colored_assistant/random
jumpsuits = list(/obj/item/clothing/under/misc/doppler_uniform/standard/suit/overalls/random)
jumpskirts = list(/obj/item/clothing/under/misc/doppler_uniform/standard/suit/overalls/random) // DITTO: see above
+
+/datum/outfit/job/janitor
+ uniform = /obj/item/clothing/under/rank/civilian/janitor/doppler
+ suit = /obj/item/clothing/suit/apron/janitor_cloak
+ gloves = /obj/item/clothing/gloves/botanic_leather/janitor
diff --git a/modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi b/modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi
new file mode 100644
index 0000000000000..55d626f4c7b5c
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi b/modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi
new file mode 100644
index 0000000000000..da545a246bfe3
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi b/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi
index dd650ffcf8209..4fe32e363c2fd 100644
Binary files a/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi and b/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi
index 5380331dec63c..d35fc86f23462 100644
Binary files a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi and b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi
index 1966d0ab836d6..c2ac9f2de5f7d 100644
Binary files a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi and b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi b/modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi
new file mode 100644
index 0000000000000..9cbfd2fb08db3
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi b/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi
index d498a63f5b507..2b42a8a04307c 100644
Binary files a/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi and b/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi b/modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi
new file mode 100644
index 0000000000000..1eb4e350043ad
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi b/modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi
new file mode 100644
index 0000000000000..fff67bff249a1
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi b/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi
index 364131dc895ac..ba04f18237553 100644
Binary files a/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi and b/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi b/modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi
new file mode 100644
index 0000000000000..06771ea720981
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi b/modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi
new file mode 100644
index 0000000000000..4e48b7abb1f80
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi b/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi
index 7bebe8b30d71d..cdb1c7091eeb6 100644
Binary files a/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi and b/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi b/modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi
new file mode 100644
index 0000000000000..11a4df9127fda
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi b/modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi
new file mode 100644
index 0000000000000..6680c414bfb55
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi b/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi
index 867d49a9d11b6..0f164baaba1ac 100644
Binary files a/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi and b/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi
index bf6428f794234..5e66911e26137 100644
Binary files a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi and b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi
index c6b94226e6d73..9f8eee4144746 100644
Binary files a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi and b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi b/modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi
new file mode 100644
index 0000000000000..c0c8a681834e7
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi b/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi
index 926edbfa55329..bec78857245a8 100644
Binary files a/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi and b/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi b/modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi
new file mode 100644
index 0000000000000..4d28d21c73ead
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi b/modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi
new file mode 100644
index 0000000000000..12346308a3d1e
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi b/modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi
new file mode 100644
index 0000000000000..f4dc8f3af10a1
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi b/modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi
new file mode 100644
index 0000000000000..8d18986beff15
Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi differ
diff --git a/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi b/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi
index 29cdaa73b3ae2..4c62cd027a9a2 100644
Binary files a/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi and b/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi differ
diff --git a/modular_doppler/modular_customization/accessories/code/hair.dm b/modular_doppler/modular_customization/accessories/code/hair.dm
index 54048feeda384..4c964a63321b9 100644
--- a/modular_doppler/modular_customization/accessories/code/hair.dm
+++ b/modular_doppler/modular_customization/accessories/code/hair.dm
@@ -655,6 +655,50 @@
name = "Inari"
icon_state = "inari"
+/datum/sprite_accessory/hair/modular/punktails
+ name = "Punktails"
+ icon_state = "hair_punktails"
+
+/datum/sprite_accessory/hair/modular/firestarter
+ name = "Firestarter"
+ icon_state = "hair_firestarter"
+
+/datum/sprite_accessory/hair/modular/impish
+ name = "Impish"
+ icon_state = "hair_impish"
+
+/datum/sprite_accessory/hair/modular/mermaid
+ name = "Mermaid"
+ icon_state = "hair_mermaid"
+
+/datum/sprite_accessory/hair/modular/royal_curls
+ name = "Royal Curls"
+ icon_state = "hair_royal_curls"
+
+/datum/sprite_accessory/hair/modular/halfcut
+ name = "Halfcut"
+ icon_state = "hair_halfcut"
+
+/datum/sprite_accessory/hair/modular/halfcut_rough
+ name = "Halfcut Rough"
+ icon_state = "hair_halfcut_rough"
+
+/datum/sprite_accessory/hair/modular/glossy
+ name = "Glossy"
+ icon_state = "hair_glossy"
+
+/datum/sprite_accessory/hair/modular/mia
+ name = "Mia"
+ icon_state = "hair_mia"
+
+/datum/sprite_accessory/hair/modular/braided_sidetail
+ name = "Braided Sidetail"
+ icon_state = "hair_braided_sidetail"
+
+/datum/sprite_accessory/hair/modular/glamour
+ name = "Glamour"
+ icon_state = "hair_glamour"
+
// Facial hair
/datum/sprite_accessory/facial_hair/modular
diff --git a/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm b/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm
index 30579a6ac6a67..e263fd6fdbf0b 100644
--- a/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm
+++ b/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm
@@ -42,3 +42,56 @@
/datum/sprite_accessory/horns/humanoid/broken_l
name = "Broken (Left)"
icon_state = "lbroken"
+
+/datum/sprite_accessory/horns/humanoid/guilmon
+ name = "Guilmon"
+ icon_state = "guilmon"
+
+/datum/sprite_accessory/horns/humanoid/drake
+ name = "Drake"
+ icon_state = "drake"
+
+/datum/sprite_accessory/horns/humanoid/crippledbull
+ name = "Crippled Bull"
+ icon_state = "crippledbull"
+
+/datum/sprite_accessory/horns/humanoid/ticketrack
+ name = "Ticket Rack"
+ icon_state = "ticketrack"
+
+/datum/sprite_accessory/horns/humanoid/hopefulhorns
+ name = "Hopeful Horns"
+ icon_state = "hopefulhorns"
+
+/datum/sprite_accessory/horns/humanoid/broadcurls
+ name = "Broad Curls"
+ icon_state = "broadcurls"
+
+/datum/sprite_accessory/horns/humanoid/curly
+ name = "Curly"
+ icon_state = "newcurly"
+
+/datum/sprite_accessory/horns/humanoid/upwards
+ name = "Upwards"
+ icon_state = "upwardshorns"
+
+/datum/sprite_accessory/horns/humanoid/dragon
+ name = "Dragon"
+ icon_state = "dragon"
+
+/datum/sprite_accessory/horns/humanoid/antenna
+ name = "Antenna"
+ icon_state = "antenna"
+
+/datum/sprite_accessory/horns/humanoid/big
+ name = "Painted Points"
+ icon = 'modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi'
+ icon_state = "paintedpoints"
+
+/datum/sprite_accessory/horns/humanoid/big/whoshorns
+ name = "Who's Horns"
+ icon_state = "whoshorns"
+
+/datum/sprite_accessory/horns/humanoid/big/highrisehorns
+ name = "High-rise Horns"
+ icon_state = "highrisehorns"
diff --git a/modular_doppler/modular_customization/accessories/code/moth_accessories/moth_wings.dm b/modular_doppler/modular_customization/accessories/code/moth_accessories/moth_wings.dm
deleted file mode 100644
index 0a9150b263802..0000000000000
--- a/modular_doppler/modular_customization/accessories/code/moth_accessories/moth_wings.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/datum/sprite_accessory/moth_wings
- icon = 'modular_doppler/modular_customization/accessories/icons/moth/moth_wings.dmi'
diff --git a/modular_doppler/modular_customization/accessories/icons/hair.dmi b/modular_doppler/modular_customization/accessories/icons/hair.dmi
index f2510019853a9..09414755e95d2 100644
Binary files a/modular_doppler/modular_customization/accessories/icons/hair.dmi and b/modular_doppler/modular_customization/accessories/icons/hair.dmi differ
diff --git a/modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi b/modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi
new file mode 100644
index 0000000000000..5336e45491b5c
Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi differ
diff --git a/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi b/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi
index 2b41e3f307a76..218b27cdee549 100644
Binary files a/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi and b/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi differ
diff --git a/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi b/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi
index 44cf0131f5d7a..e2ec62e78e5cf 100644
Binary files a/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi and b/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi differ
diff --git a/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi b/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi
index 9d5e5a612e596..c7c30341b88dd 100644
Binary files a/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi and b/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi differ
diff --git a/modular_doppler/modular_customization/markings/body_markings/other.dm b/modular_doppler/modular_customization/markings/body_markings/other.dm
index 9a4a465bb4a84..6a84d437af160 100644
--- a/modular_doppler/modular_customization/markings/body_markings/other.dm
+++ b/modular_doppler/modular_customization/markings/body_markings/other.dm
@@ -211,3 +211,13 @@
icon_state = "nips"
body_zones = CHEST
gender_specific = FALSE
+
+/datum/sprite_accessory/body_marking/other/outer_eye
+ name = "Outer Eye"
+ icon_state = "outereye"
+ body_zones = HEAD
+
+/datum/sprite_accessory/body_marking/other/undereye
+ name = "Undereye"
+ icon_state = "undereye"
+ body_zones = HEAD
diff --git a/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi b/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi
index 81ad234778311..0ad2ab2bdc416 100644
Binary files a/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi and b/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi differ
diff --git a/modular_doppler/modular_items/bettermed_overrides.dm b/modular_doppler/modular_items/bettermed_overrides.dm
index 1c75101da278f..86beee9543366 100644
--- a/modular_doppler/modular_items/bettermed_overrides.dm
+++ b/modular_doppler/modular_items/bettermed_overrides.dm
@@ -1,111 +1,26 @@
-/// == TOOL UPDATE ZONE ==
-/obj/item/scalpel
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/cautery
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/retractor
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/hemostat
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/bonesetter
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/blood_filter
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/circular_saw
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/surgicaldrill
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-/obj/item/scalpel/advanced
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
- light_color = "#AAFF00"
- light_range = 2
- lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi'
- righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi'
-
-/obj/item/scalpel/advanced/on_transform(obj/item/source, mob/user, active)
- . = ..()
- if(active)
- set_light_range(2)
- set_light_color("#FFAA00")
- else
- set_light_range(2)
- set_light_color("#AAFF00")
-
-/obj/item/retractor/advanced
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
- lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi'
- righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi'
-
-/obj/item/cautery/advanced
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
- lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi'
- righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi'
- light_color = "#AAFF00"
-
-/obj/item/cautery/advanced/on_transform(obj/item/source, mob/user, active)
- . = ..()
- if(active)
- set_light_color("#FFAA00")
- else
- set_light_color("#AAFF00")
-
-/obj/item/surgical_drapes
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
-
-
-
-/// == STORAGE UPDATE ZONE ==
-/obj/item/surgery_tray
- icon = 'modular_doppler/modular_items/icons/bettermed_medcart.dmi'
-
-/obj/item/storage/medkit
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
- lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi'
- righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi'
-
-/obj/item/storage/medkit/coroner
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
+// Empty medkits
/obj/item/storage/medkit/empty
empty = TRUE
+
/obj/item/storage/medkit/brute/empty
empty = TRUE
+
/obj/item/storage/medkit/fire/empty
empty = TRUE
+
/obj/item/storage/medkit/toxin/empty
empty = TRUE
+
/obj/item/storage/medkit/o2/empty
empty = TRUE
+
/obj/item/storage/medkit/surgery/empty
empty = TRUE
-/obj/item/storage/medkit/advanced/empty
- empty = TRUE
-/obj/item/storage/medkit/ancient
- icon = 'modular_doppler/modular_items/icons/bettermed.dmi'
- lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi'
- righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi'
- icon_state = "medkit_old"
- inhand_icon_state = "oldkit"
-
-/obj/item/storage/medkit/buffs
- name = "support medkit"
- desc = "An empty medkit for creative chemists to fill with concoctions."
- icon_state = "medkit_buffs"
- inhand_icon_state = "medkit-buffs"
- damagetype_healed = HEAL_ALL_DAMAGE
+/obj/item/storage/medkit/advanced/empty
empty = TRUE
-
-
/// == RECIPE ADDITION ZONE ==
/datum/design/spare_medkit
name = "Medkit"
@@ -142,11 +57,6 @@
id = "medkit_o2"
build_path = /obj/item/storage/medkit/o2/empty
-/datum/design/spare_medkit/buffs
- name = "Support Medkit"
- id = "medkit_buffs"
- build_path = /obj/item/storage/medkit/buffs
-
/datum/techweb_node/medbay_equip/New()
design_ids += list(
"medkit",
@@ -154,7 +64,6 @@
"medkit_burn",
"medkit_toxin",
"medkit_o2",
- "medkit_buffs",
)
return ..()
diff --git a/modular_doppler/modular_items/emergency_breach_equipment.dm b/modular_doppler/modular_items/emergency_breach_equipment.dm
new file mode 100644
index 0000000000000..d718728949ccf
--- /dev/null
+++ b/modular_doppler/modular_items/emergency_breach_equipment.dm
@@ -0,0 +1,61 @@
+#define OXY_CANDLE_RELEASE_TEMP (T20C + 10) // 30 celsius, it's hot. Will be even hotter with hotspot expose
+
+/obj/item/oxygen_candle
+ name = "oxygen candle"
+ desc = "A steel tube with the words 'OXYGEN - PULL CORD TO IGNITE' stamped on the side.\nA small label reads 'WARNING: NOT FOR LIGHTING USE. WILL IGNITE FLAMMABLE GASSES' "
+ icon = 'modular_doppler/modular_items/icons/oxygen_candle.dmi'
+ icon_state = "oxycandle"
+ w_class = WEIGHT_CLASS_SMALL
+ light_color = LIGHT_COLOR_LAVA // Very warm chemical burn
+ var/pulled = FALSE
+ var/processing = FALSE
+ var/processes_left = 40
+
+/obj/item/oxygen_candle/attack_self(mob/user)
+ if(!pulled)
+ playsound(src, 'sound/effects/fuse.ogg', 75, 1)
+ balloon_alert(user, "cord pulled")
+ icon_state = "oxycandle_burning"
+ pulled = TRUE
+ processing = TRUE
+ START_PROCESSING(SSobj, src)
+ set_light(2)
+
+/obj/item/oxygen_candle/process()
+ var/turf/pos = get_turf(src)
+ if(!pos)
+ return
+ pos.hotspot_expose(500, 100)
+ pos.atmos_spawn_air("o2=5;TEMP=[OXY_CANDLE_RELEASE_TEMP]")
+ processes_left--
+ if(processes_left <= 0)
+ set_light(0)
+ STOP_PROCESSING(SSobj, src)
+ processing = FALSE
+ name = "burnt oxygen candle"
+ icon_state = "oxycandle_burnt"
+ desc += "\nThis tube has exhausted its chemicals."
+
+/obj/item/oxygen_candle/Destroy()
+ if(processing)
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+#undef OXY_CANDLE_RELEASE_TEMP
+
+/obj/item/grenade/chem_grenade/budget_smart_metal
+ name = "budget smart metal foam grenade"
+ desc = "Used for emergency sealing of hull breaches, while keeping areas accessible. This one came in a bulk pack a few years ago, and some of the ingredients have gone flat."
+ stage = GRENADE_READY
+
+/obj/item/grenade/chem_grenade/budget_smart_metal/Initialize(mapload)
+ . = ..()
+ var/obj/item/reagent_containers/cup/beaker/large/beaker_one = new(src)
+ var/obj/item/reagent_containers/cup/beaker/beaker_two = new(src)
+
+ beaker_one.reagents.add_reagent(/datum/reagent/aluminium, 50)
+ beaker_two.reagents.add_reagent(/datum/reagent/smart_foaming_agent, 15)
+ beaker_two.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 15)
+
+ beakers += beaker_one
+ beakers += beaker_two
diff --git a/modular_doppler/modular_items/icons/bettermed.dmi b/modular_doppler/modular_items/icons/bettermed.dmi
deleted file mode 100644
index 09d6352ee249a..0000000000000
Binary files a/modular_doppler/modular_items/icons/bettermed.dmi and /dev/null differ
diff --git a/modular_doppler/modular_items/icons/bettermed_lh.dmi b/modular_doppler/modular_items/icons/bettermed_lh.dmi
deleted file mode 100644
index f1c0d17e15eb5..0000000000000
Binary files a/modular_doppler/modular_items/icons/bettermed_lh.dmi and /dev/null differ
diff --git a/modular_doppler/modular_items/icons/bettermed_medcart.dmi b/modular_doppler/modular_items/icons/bettermed_medcart.dmi
deleted file mode 100644
index 6b696dfb62a6c..0000000000000
Binary files a/modular_doppler/modular_items/icons/bettermed_medcart.dmi and /dev/null differ
diff --git a/modular_doppler/modular_items/icons/bettermed_rh.dmi b/modular_doppler/modular_items/icons/bettermed_rh.dmi
deleted file mode 100644
index 8a97a2cb998e9..0000000000000
Binary files a/modular_doppler/modular_items/icons/bettermed_rh.dmi and /dev/null differ
diff --git a/modular_doppler/modular_items/icons/oxygen_candle.dmi b/modular_doppler/modular_items/icons/oxygen_candle.dmi
new file mode 100644
index 0000000000000..5654fbd9d2f49
Binary files /dev/null and b/modular_doppler/modular_items/icons/oxygen_candle.dmi differ
diff --git a/modular_doppler/modular_items/shipchem_overrides.dm b/modular_doppler/modular_items/shipchem_overrides.dm
index c85a381d3375f..d2888886e51a5 100644
--- a/modular_doppler/modular_items/shipchem_overrides.dm
+++ b/modular_doppler/modular_items/shipchem_overrides.dm
@@ -23,7 +23,7 @@
if(can_have_cap)
if(!cap_icon_state)
WARNING("Container that allows caps is lacking a cap_icon_state!")
- set_cap_status(cap_on)
+ set_cap_status(FALSE)
else
cap_on = FALSE
@@ -94,10 +94,10 @@
/// ACTUAL AESTHETIC CHANGES BEGIN HERE
/obj/item/reagent_containers/cup/beaker
+ desc = "A beaker. It can hold up to 60 units."
icon = 'modular_doppler/modular_items/icons/shipchems.dmi'
fill_icon = 'modular_doppler/modular_items/icons/shipchems_reagentfillings.dmi'
fill_icon_thresholds = list(1, 40, 60, 80, 100)
- //fill_icon_state = "beaker"
cap_on = TRUE
can_have_cap = TRUE
@@ -106,7 +106,6 @@
volume = 60
possible_transfer_amounts = list(5,10,15,20,30,60)
amount_per_transfer_from_this = 5
- desc = "A beaker. It can hold up to 60 units."
/obj/item/reagent_containers/cup/beaker/oldstation
amount_per_transfer_from_this = 5
@@ -121,36 +120,36 @@
possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50)
/obj/item/reagent_containers/cup/beaker/large
+ desc = "A large beaker. Can hold up to 120 units."
fill_icon_thresholds = list(1, 40, 60, 80, 100)
cap_icon_state = "beakerlarge_cap"
volume = 120
possible_transfer_amounts = list(5,10,15,20,30,40,60,120)
- desc = "A large beaker. Can hold up to 120 units."
/obj/item/reagent_containers/cup/beaker/plastic
+ desc = "An extra-large beaker. Can hold up to 180 units."
fill_icon_thresholds = list(1, 25, 50, 75, 100)
fill_icon_state = "beakerxlarge"
cap_icon_state = "beakerwhite_cap"
volume = 180
possible_transfer_amounts = list(5,10,15,20,30,60,90,180)
- desc = "An extra-large beaker. Can hold up to 180 units."
/obj/item/reagent_containers/cup/beaker/meta
+ desc = "An ultra-large beaker. Can hold up to 240 units."
fill_icon_thresholds = list(1, 25, 50, 75, 100)
cap_icon_state = "beakergold_cap"
volume = 240
possible_transfer_amounts = list(5,10,15,20,30,60,120,240)
- desc = "An ultra-large beaker. Can hold up to 240 units."
/obj/item/reagent_containers/cup/beaker/noreact
+ desc = "A cryostasis beaker that allows for chemical storage without \
+ reactions. Can hold up to 120 units."
cap_icon_state = "beakernoreact_cap"
volume = 120
- desc = "A cryostasis beaker that allows for chemical storage without \
- reactions. Can hold up to 120 units."
/obj/item/reagent_containers/cup/beaker/bluespace
cap_icon_state = "beakerbluespace_cap"
diff --git a/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm b/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm
index 67dd334612759..7c0f5285f0da9 100644
--- a/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm
+++ b/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm
@@ -176,7 +176,6 @@
icon = 'modular_doppler/modular_medical/icons/implants.dmi'
icon_state = "steel"
items_to_create = list(/obj/item/pickaxe/drill/implant)
- implant_overlay = null
implant_color = null
/// The bodypart overlay datum we should apply to whatever mob we are put into's someone's arm
var/datum/bodypart_overlay/simple/steel_drill/drill_overlay
diff --git a/modular_doppler/modular_quirks/cybernetic_limb_mounts/cybernetic_limb_mounts.dm b/modular_doppler/modular_quirks/cybernetic_limb_mounts/cybernetic_limb_mounts.dm
new file mode 100644
index 0000000000000..c52dbc5180fd4
--- /dev/null
+++ b/modular_doppler/modular_quirks/cybernetic_limb_mounts/cybernetic_limb_mounts.dm
@@ -0,0 +1,83 @@
+/datum/quirk/robot_limb_detach
+ name = "Cybernetic Limb Mounts"
+ desc = "You are able to detach and reattach any installed robotic limbs with very little effort, as long as they're in good condition."
+ gain_text = span_notice("Internal sensors report limb disengagement protocols are ready and waiting.")
+ lose_text = span_notice("ERROR: LIMB DISENGAGEMENT PROTOCOLS OFFLINE.")
+ medical_record_text = "Patient bears quick-attach and release limb joint cybernetics."
+ value = 0
+ mob_trait = TRAIT_ROBOTIC_LIMBATTACHMENT
+ icon = FA_ICON_HANDSHAKE_SIMPLE_SLASH
+ quirk_flags = QUIRK_HUMAN_ONLY
+ /// The action we add with this quirk in add(), used for easy deletion later
+ var/datum/action/cooldown/spell/added_action
+
+/datum/quirk/robot_limb_detach/add(client/client_source)
+ var/mob/living/carbon/human/human_holder = quirk_holder
+ var/datum/action/cooldown/spell/robot_self_amputation/limb_action = new /datum/action/cooldown/spell/robot_self_amputation()
+ limb_action.Grant(human_holder)
+ added_action = limb_action
+
+/datum/quirk/robot_limb_detach/remove()
+ QDEL_NULL(added_action)
+
+/datum/action/cooldown/spell/robot_self_amputation
+ name = "Detach a robotic limb"
+ desc = "Disengage one of your robotic limbs from your cybernetic mounts. Requires you to not be restrained or otherwise under duress. Will not function on wounded limbs - tend to them first."
+ button_icon_state = "autotomy"
+
+ cooldown_time = 30 SECONDS
+ spell_requirements = NONE
+ check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_HANDS_BLOCKED | AB_CHECK_INCAPACITATED
+
+/datum/action/cooldown/spell/robot_self_amputation/is_valid_target(atom/cast_on)
+ return ishuman(cast_on)
+
+/datum/action/cooldown/spell/robot_self_amputation/cast(mob/living/carbon/human/cast_on)
+ . = ..()
+
+ if(HAS_TRAIT(cast_on, TRAIT_NODISMEMBER))
+ to_chat(cast_on, span_warning("ERROR: LIMB DISENGAGEMENT PROTOCOLS OFFLINE. Seek out a maintenance technician."))
+ return
+
+ var/list/exclusions = list()
+ exclusions += BODY_ZONE_CHEST
+ exclusions += BODY_ZONE_HEAD
+ // if we ever decide to move android's brains into their chest, add this below
+ /*if (!isandroid(cast_on))
+ exclusions += BODY_ZONE_HEAD
+ */
+
+ var/list/robot_parts = list()
+ for (var/obj/item/bodypart/possible_part as anything in cast_on.bodyparts)
+ if ((possible_part.bodytype & BODYTYPE_ROBOTIC) && !(possible_part.body_zone in exclusions)) //only robot limbs and only if they're not crucial to our like, ongoing life, you know?
+ robot_parts += possible_part
+
+ if (!length(robot_parts))
+ to_chat(cast_on, "ERROR: Limb disengagement protocols report no compatible cybernetics currently installed. Seek out a maintenance technician.")
+ return
+
+ var/obj/item/bodypart/limb_to_detach = tgui_input_list(cast_on, "Limb to detach", "Cybernetic Limb Detachment", sort_names(robot_parts))
+ if (QDELETED(src) || QDELETED(cast_on) || QDELETED(limb_to_detach))
+ return
+
+ if (length(limb_to_detach.wounds) >= 1)
+ cast_on.balloon_alert(cast_on, "can't detach wounded limbs!")
+ playsound(cast_on, 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ return
+
+ cast_on.balloon_alert(cast_on, "detaching limb...")
+ playsound(cast_on, 'sound/items/tools/rped.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ cast_on.visible_message(span_notice("[cast_on] shuffles [cast_on.p_their()] [limb_to_detach.name] forward, actuators hissing and whirring as [cast_on.p_they()] disengage[cast_on.p_s()] the limb from its mount..."))
+
+ if(do_after(cast_on, 5 SECONDS))
+ cast_on.visible_message(span_notice("With a gentle twist, [cast_on] finally prises [cast_on.p_their()] [limb_to_detach.name] free from its socket."))
+ limb_to_detach.drop_limb()
+ cast_on.put_in_hands(limb_to_detach)
+ cast_on.balloon_alert(cast_on, "limb detached!")
+ if(prob(5))
+ playsound(cast_on, 'sound/items/champagne_pop.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ else
+ playsound(cast_on, 'sound/items/deconstruct.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ else
+ cast_on.balloon_alert(cast_on, "interrupted!")
+ playsound(cast_on, 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
diff --git a/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm b/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm
index 34142ba6bdcc7..b1f77adeffbcf 100644
--- a/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm
+++ b/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm
@@ -110,7 +110,7 @@
who.balloon_alert(who, "can't strip a fused MODsuit!")
return ..()
-/obj/item/mod/control/pre_equipped/entombed/retract(mob/user, obj/item/part)
+/obj/item/mod/control/pre_equipped/entombed/retract(mob/user, obj/item/part, instant = FALSE)
if (ishuman(user))
var/mob/living/carbon/human/human_user = user
var/datum/quirk/equipping/entombed/tomb_quirk = human_user.get_quirk(/datum/quirk/equipping/entombed)
diff --git a/modular_doppler/modular_quirks/evil_replacements/bad_vibes.dm b/modular_doppler/modular_quirks/evil_replacements/bad_vibes.dm
new file mode 100644
index 0000000000000..0e2b0c927387b
--- /dev/null
+++ b/modular_doppler/modular_quirks/evil_replacements/bad_vibes.dm
@@ -0,0 +1,15 @@
+/datum/quirk/bad_vibes
+ name = "Bad Vibes"
+ desc = "By a quirk of your personality or exposure to too many horrible sights, you give off a bad aura which affects \
+ empaths and anyone else who looks too closely."
+ icon = FA_ICON_HAND_MIDDLE_FINGER
+ value = 0
+ mob_trait = TRAIT_BAD_VIBES
+ gain_text = span_notice("You give off a negative aura.")
+ lose_text = span_notice("You try to be more approachable.")
+ medical_record_text = "Patient scared away a nurse prior to physical examination."
+
+/datum/mood_event/bad_vibes
+ description = "Some people truly disturb me... What could happen to make someone like that?"
+ mood_change = -4
+ timeout = 1 MINUTES
diff --git a/modular_doppler/modular_quirks/evil_replacements/unholy_aura.dm b/modular_doppler/modular_quirks/evil_replacements/unholy_aura.dm
new file mode 100644
index 0000000000000..3689dcbe8682d
--- /dev/null
+++ b/modular_doppler/modular_quirks/evil_replacements/unholy_aura.dm
@@ -0,0 +1,15 @@
+/datum/quirk/unholy
+ name = "Unholy Aura"
+ desc = "Whether it's as a punishment for your actions or due to the circumstances of your birth, you've been cursed by \
+ whatever dieties take an interest in this sector. You have a harder time interacting with holy figures."
+ icon = FA_ICON_SMOG
+ value = -2
+ mob_trait = TRAIT_EVIL
+ gain_text = span_warning("A dispassionate gaze from on high weighs on you.")
+ lose_text = span_notice("The deities' gaze turns away.")
+ medical_record_text = "Patient has a strong aversion to religious figures."
+
+/datum/mood_event/holy_figure
+ description = "Holy people are anathema to me. I must be more careful..."
+ mood_change = -4
+ timeout = 1 MINUTES
diff --git a/modular_doppler/modular_quirks/narcolepsy/narcolepsy.dm b/modular_doppler/modular_quirks/narcolepsy/narcolepsy.dm
new file mode 100644
index 0000000000000..ee0eb10cefac3
--- /dev/null
+++ b/modular_doppler/modular_quirks/narcolepsy/narcolepsy.dm
@@ -0,0 +1,68 @@
+/datum/quirk/narcolepsy
+ name = "Narcolepsy"
+ desc = "You may fall asleep at any moment and feel tired often."
+ icon = FA_ICON_CLOUD_MOON_RAIN
+ value = -8
+ hardcore_value = 8
+ medical_record_text = "Patient may involuntarily fall asleep during normal activities."
+ mail_goodies = list(
+ /obj/item/reagent_containers/cup/glass/coffee,
+ /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind,
+ /obj/item/storage/pill_bottle/prescription_stimulant,
+ )
+
+/datum/quirk/narcolepsy/post_add()
+ . = ..()
+ var/mob/living/carbon/human/user = quirk_holder
+ user.gain_trauma(/datum/brain_trauma/severe/narcolepsy/permanent, TRAUMA_RESILIENCE_ABSOLUTE)
+
+ var/obj/item/storage/pill_bottle/prescription_stimulant/stimmies = new()
+ if(quirk_holder.equip_to_slot_if_possible(stimmies, ITEM_SLOT_BACKPACK, qdel_on_fail = TRUE, initial = TRUE, indirect_action = TRUE))
+ to_chat(quirk_holder, span_info("You have been given a bottle of mild stimulants to assist in staying awake this shift..."))
+
+/datum/quirk/narcolepsy/remove()
+ . = ..()
+ var/mob/living/carbon/human/user = quirk_holder
+ user?.cure_trauma_type(/datum/brain_trauma/severe/narcolepsy/permanent, TRAUMA_RESILIENCE_ABSOLUTE)
+
+/datum/brain_trauma/severe/narcolepsy/permanent
+ scan_desc = "narcolepsy"
+
+//similar to parent but slower
+/datum/brain_trauma/severe/narcolepsy/permanent/on_life(seconds_per_tick, times_fired)
+ if(owner.IsSleeping())
+ return
+ if(owner.reagents.has_reagent(/datum/reagent/medicine/modafinil))
+ return //stimulant which already blocks sleeping
+ if(owner.reagents.has_reagent(/datum/reagent/medicine/synaptizine))
+ return //mild stimulant easily made in chemistry
+
+ var/sleep_chance = 0.333 //3
+ var/drowsy = !!owner.has_status_effect(/datum/status_effect/drowsiness)
+ var/caffeinated = HAS_TRAIT(owner, TRAIT_STIMULATED)
+ if(drowsy)
+ sleep_chance = 1
+ if(caffeinated) //make it real hard to fall asleep on caffeine
+ sleep_chance = sleep_chance / 2
+
+ if(!drowsy && SPT_PROB(sleep_chance, seconds_per_tick))
+ to_chat(owner, span_warning("You feel tired..."))
+ owner.adjust_drowsiness(rand(30 SECONDS, 60 SECONDS))
+
+ else if(drowsy && SPT_PROB(sleep_chance, seconds_per_tick))
+ to_chat(owner, span_warning("You fall asleep."))
+ owner.Sleeping(rand(20 SECONDS, 30 SECONDS))
+
+/obj/item/storage/pill_bottle/prescription_stimulant
+ name = "bottle of prescribed stimulant pills"
+ desc = "A bottle of mild and medicinally approved stimulants to help prevent drowsiness."
+
+/obj/item/storage/pill_bottle/prescription_stimulant/PopulateContents()
+ for(var/i in 1 to 5)
+ new /obj/item/reagent_containers/pill/prescription_stimulant(src)
+
+/obj/item/reagent_containers/pill/prescription_stimulant
+ name = "prescription stimulant pill"
+ desc = "Used to treat symptoms of drowsiness and sudden loss of consciousness. A warning label reads: Take in moderation ."
+ list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/synaptizine = 5, /datum/reagent/medicine/modafinil = 3)
+ icon_state = "pill15"
diff --git a/modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi b/modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi
new file mode 100644
index 0000000000000..d3caa1e6578ac
Binary files /dev/null and b/modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi differ
diff --git a/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm b/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm
index 7e594c13ff96c..a3c80fbe88513 100644
--- a/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm
+++ b/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm
@@ -3,8 +3,9 @@ GLOBAL_LIST_INIT(possible_quirk_implants, list(
"Surgery Toolset" = /obj/item/organ/cyberimp/arm/surgery,
"Hydroponics Toolset" = /obj/item/organ/cyberimp/arm/botany,
"Sanitation Toolset" = /obj/item/organ/cyberimp/arm/janitor,
- "Razorclaw Implant" = /obj/item/organ/cyberimp/arm/razor_claws,
- "Excavator Implant" = /obj/item/organ/cyberimp/arm/mining_drill,
+ "Razorclaw Arm" = /obj/item/organ/cyberimp/arm/razor_claws,
+ "Excavator Arm" = /obj/item/organ/cyberimp/arm/mining_drill,
+ "Nutriment Pump Implant" = /obj/item/organ/cyberimp/chest/nutriment,
))
/datum/quirk/permitted_cybernetic
diff --git a/modular_doppler/modular_quirks/system_shock/system_shock.dm b/modular_doppler/modular_quirks/system_shock/system_shock.dm
new file mode 100644
index 0000000000000..abfc8556bc7ab
--- /dev/null
+++ b/modular_doppler/modular_quirks/system_shock/system_shock.dm
@@ -0,0 +1,31 @@
+/datum/quirk/system_shock
+ name = "System Shock"
+ desc = "You and electricity have a volatile relationship. One spark's liable to forcefully reboot your systems. Note: This quirk only works on synths."
+ gain_text = span_danger("You start feeling nervous around plug sockets.")
+ lose_text = span_notice("You feel normal about sparks.")
+ medical_record_text = "Patient's processors are unusually uninsulated."
+ value = -8
+ mob_trait = TRAIT_SYSTEM_SHOCK
+ icon = FA_ICON_PLUG_CIRCLE_XMARK
+ quirk_flags = QUIRK_HUMAN_ONLY
+
+/datum/quirk/system_shock/add(client/client_source)
+ if(isandroid(quirk_holder))
+ RegisterSignals(quirk_holder, list(COMSIG_LIVING_ELECTROCUTE_ACT, COMSIG_LIVING_MINOR_SHOCK), PROC_REF(on_electrocute))
+
+/datum/quirk/system_shock/remove()
+ UnregisterSignal(quirk_holder, list(COMSIG_LIVING_ELECTROCUTE_ACT, COMSIG_LIVING_MINOR_SHOCK))
+
+
+/datum/quirk/system_shock/proc/on_electrocute()
+ SIGNAL_HANDLER
+ var/knockout_length = 20 SECONDS + rand(0 SECONDS, 5 SECONDS)
+ quirk_holder.set_static_vision(knockout_length)
+ quirk_holder.balloon_alert(quirk_holder, "system rebooting")
+ to_chat(quirk_holder, span_danger("CRIT&!AL ERR%R: S#STEM REBO#TING."))
+ //The intent with the 0.4 seconds is so that the visual static effect lasts longer than the actual knockout/sleeping effect.
+ addtimer(CALLBACK(src, PROC_REF(knock_out), knockout_length - 0.4 SECONDS), 2 SECONDS)
+
+///The length at which unconsciousness lasts during system shock.
+/datum/quirk/system_shock/proc/knock_out(length)
+ quirk_holder.Sleeping(length)
diff --git a/modular_doppler/modular_sounds/sound/machines/hacked.ogg b/modular_doppler/modular_sounds/sound/machines/hacked.ogg
new file mode 100644
index 0000000000000..54aa3b931ea22
Binary files /dev/null and b/modular_doppler/modular_sounds/sound/machines/hacked.ogg differ
diff --git a/modular_doppler/modular_species/_species.dm b/modular_doppler/modular_species/_species.dm
index 084f8423a5af7..f0a416bcd23e1 100644
--- a/modular_doppler/modular_species/_species.dm
+++ b/modular_doppler/modular_species/_species.dm
@@ -21,7 +21,7 @@
/// Cybernetic limbs logic here!
// Used for most races
-/datum/species/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load)
+/datum/species/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load, regenerate_icons = TRUE)
var/list/frame_bodyparts = target.dna.features["frame_list"]
if(type in GLOB.species_blacklist_no_humanoid)
return ..()
diff --git a/modular_doppler/modular_species/species_types/android/android.dm b/modular_doppler/modular_species/species_types/android/android.dm
index 1cfd3a7168848..7287f5ec20501 100644
--- a/modular_doppler/modular_species/species_types/android/android.dm
+++ b/modular_doppler/modular_species/species_types/android/android.dm
@@ -1,7 +1,7 @@
/// The starter amount for the android's core
#define ENERGY_START_AMT 5 MEGA JOULES
/// The amount at which mob energy decreases
-#define ENERGY_DRAIN_AMT 5 KILO JOULES
+#define ENERGY_DRAIN_AMT 2.5 KILO JOULES
/datum/species/android
name = "Android"
@@ -55,7 +55,7 @@
name = "Android (Species Preview)"
// nude
-/datum/species/android/on_species_gain(mob/living/carbon/target, datum/species/old_species, pref_load)
+/datum/species/android/on_species_gain(mob/living/carbon/target, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
if(ishuman(target))
power_cord = new
@@ -71,6 +71,8 @@
QDEL_NULL(energy_tracker)
/datum/species/android/spec_revival(mob/living/carbon/human/target)
+ if(core_energy < 0.5 MEGA JOULES)
+ core_energy += 0.5 MEGA JOULES
playsound(target.loc, 'sound/machines/chime.ogg', 50, TRUE)
target.visible_message(span_notice("[target]'s LEDs flicker to life!"), span_notice("All systems nominal. You're back online!"))
@@ -91,11 +93,6 @@
return
if(core_energy > 0)
core_energy -= ENERGY_DRAIN_AMT
- // alerts
- if(core_energy <= 0.75 MEGA JOULES)
- if(prob(10))
- target.balloon_alert_to_viewers("power low!")
- playsound(target, 'sound/machines/beep/triple_beep.ogg', 50, FALSE)
// alerts end, death begins
if(core_energy <= 0)
target.death() // You can do a lot in a day.
diff --git a/modular_doppler/modular_species/species_types/android/android_hud.dm b/modular_doppler/modular_species/species_types/android/android_hud.dm
index 4b4786cf0d952..77c1da9166a57 100644
--- a/modular_doppler/modular_species/species_types/android/android_hud.dm
+++ b/modular_doppler/modular_species/species_types/android/android_hud.dm
@@ -1,5 +1,5 @@
/// 1 tile down
-#define UI_ENERGY_DISPLAY "WEST:6,CENTER-1:0"
+#define UI_ENERGY_DISPLAY "WEST:0,CENTER-1:0"
///Maptext define for Hemophage HUDs
#define FORMAT_ANDROID_HUD_TEXT(valuecolor, value) MAPTEXT(" [round((value/1000000), 0.01)]MJ
")
@@ -11,9 +11,14 @@
name = "Energy Tracker"
icon_state = "energy_display"
screen_loc = UI_ENERGY_DISPLAY
+ maptext_width = 48
/atom/movable/screen/android/energy/proc/update_energy_hud(core_energy)
maptext = FORMAT_ANDROID_HUD_TEXT(hud_text_color(core_energy), core_energy)
+ if(core_energy <= 1.5 MEGA JOULES)
+ icon_state = "energy_display_low"
+ else
+ icon_state = "energy_display"
/atom/movable/screen/android/energy/proc/hud_text_color(core_energy)
return core_energy > 1.5 MEGA JOULES ? "#ffffff" : "#b64b4b"
diff --git a/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi b/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi
index b524cf6328041..7a08492320196 100644
Binary files a/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi and b/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi differ
diff --git a/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm b/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm
index 9380087405d9f..8b896b13950eb 100644
--- a/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm
+++ b/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm
@@ -29,7 +29,7 @@
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/digitigrade/anthromorph,
)
-/datum/species/anthromorph/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load)
+/datum/species/anthromorph/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load, regenerate_icons)
apply_animal_trait(target, find_animal_trait(target))
return ..()
diff --git a/modular_doppler/modular_species/species_types/genemod/genemod.dm b/modular_doppler/modular_species/species_types/genemod/genemod.dm
index a225b10a2d223..a1936b302c835 100644
--- a/modular_doppler/modular_species/species_types/genemod/genemod.dm
+++ b/modular_doppler/modular_species/species_types/genemod/genemod.dm
@@ -34,7 +34,7 @@
"N/a.",
)
-/datum/species/human/genemod/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load)
+/datum/species/human/genemod/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load, regenerate_icons)
apply_animal_trait(target, find_animal_trait(target))
return ..()
diff --git a/modular_doppler/modular_species/species_types/golem/golem.dm b/modular_doppler/modular_species/species_types/golem/golem.dm
index 9e0a6f94791f1..6837249b02432 100644
--- a/modular_doppler/modular_species/species_types/golem/golem.dm
+++ b/modular_doppler/modular_species/species_types/golem/golem.dm
@@ -28,7 +28,7 @@
var/golem_speed_mod = 0.8
-/datum/species/golem/on_species_gain(mob/living/carbon/new_golem, datum/species/old_species, pref_load)
+/datum/species/golem/on_species_gain(mob/living/carbon/new_golem, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
new_golem.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/snail, multiplicative_slowdown = golem_speed_mod)
diff --git a/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm b/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm
index 14372f9e7ef75..3adde17d42ad1 100644
--- a/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm
+++ b/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm
@@ -32,7 +32,7 @@
return ..()
-/datum/species/human/genemod/hemophage/on_species_gain(mob/living/carbon/human/new_hemophage, datum/species/old_species, pref_load)
+/datum/species/human/genemod/hemophage/on_species_gain(mob/living/carbon/human/new_hemophage, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
to_chat(new_hemophage, HEMOPHAGE_SPAWN_TEXT)
new_hemophage.update_body()
diff --git a/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm b/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm
index f3b10cde97952..d6ce9c8d5ff11 100644
--- a/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm
+++ b/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm
@@ -38,7 +38,7 @@
neck = /obj/item/clothing/neck/scarf/primitive_genemod_scarf
back = /obj/item/forging/reagent_weapon/axe/fake_copper
-/datum/species/human/genemod/primitive/on_species_gain(mob/living/carbon/new_primitive, datum/species/old_species, pref_load)
+/datum/species/human/genemod/primitive/on_species_gain(mob/living/carbon/new_primitive, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
var/mob/living/carbon/human/hearthkin = new_primitive
if(!istype(hearthkin))
diff --git a/modular_doppler/modular_species/species_types/ramatae/ramatan.dm b/modular_doppler/modular_species/species_types/ramatae/ramatan.dm
index dcb34aa44538a..b4c88db9b9d59 100644
--- a/modular_doppler/modular_species/species_types/ramatae/ramatan.dm
+++ b/modular_doppler/modular_species/species_types/ramatae/ramatan.dm
@@ -84,7 +84,7 @@
head = /obj/item/clothing/head/beret/doppler_command/science
neck = /obj/item/clothing/neck/doppler_mantle/science
-/datum/species/ramatan/on_species_gain(mob/living/carbon/human/new_ramatan, datum/species/old_species, pref_load)
+/datum/species/ramatan/on_species_gain(mob/living/carbon/human/new_ramatan, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
new_ramatan.AddComponent(/datum/component/sign_language)
diff --git a/modular_doppler/modular_species/species_types/snails/modular_snail.dm b/modular_doppler/modular_species/species_types/snails/modular_snail.dm
index 6382911bf3e3c..1af2d3d88941e 100644
--- a/modular_doppler/modular_species/species_types/snails/modular_snail.dm
+++ b/modular_doppler/modular_species/species_types/snails/modular_snail.dm
@@ -18,7 +18,7 @@
uniform = /obj/item/clothing/under/rank/medical/chemist/pharmacologist/skirt
mask = /obj/item/clothing/mask/surgical
-/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load)
+/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
new_snailperson.update_icons()
diff --git a/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm b/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm
index 0f74e833e49ea..5403d6211f1aa 100644
--- a/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm
+++ b/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm
@@ -8,6 +8,16 @@
/obj/item/clothing/suit/jacket/doppler/departmental_jacket/med = 2,
)
+/obj/machinery/vending/wardrobe/jani_wardrobe
+ products_doppler = list(
+ /obj/item/clothing/head/hats/janitor_doppler = 3,
+ /obj/item/clothing/shoes/galoshes/doppler = 2,
+ /obj/item/clothing/gloves/botanic_leather/janitor = 3,
+ /obj/item/clothing/suit/apron/janitor_cloak = 3,
+ /obj/item/clothing/under/rank/civilian/janitor/doppler = 3,
+ /obj/item/clothing/under/rank/civilian/janitor/doppler_ct = 3,
+ )
+
/obj/machinery/vending/wardrobe/engi_wardrobe
products_doppler = list(
/obj/item/clothing/under/misc/doppler_uniform/engineering = 5,
diff --git a/modular_doppler/modular_vending/icons/de_forest_vendors.dmi b/modular_doppler/modular_vending/icons/de_forest_vendors.dmi
index 906191c451b36..25ad4c2c0f025 100644
Binary files a/modular_doppler/modular_vending/icons/de_forest_vendors.dmi and b/modular_doppler/modular_vending/icons/de_forest_vendors.dmi differ
diff --git a/modular_doppler/ntnrc_for_all/code/common_chat.dm b/modular_doppler/ntnrc_for_all/code/common_chat.dm
new file mode 100644
index 0000000000000..634e4e508518a
--- /dev/null
+++ b/modular_doppler/ntnrc_for_all/code/common_chat.dm
@@ -0,0 +1,7 @@
+
+/// Conversation subtype that doesn't allow for the addition of any single operator. Netadmin mode can still override.
+/datum/ntnet_conversation/common
+
+/// Override to block adding an operator.
+/datum/ntnet_conversation/common/changeop(datum/computer_file/program/chatclient/newop, silent = FALSE)
+ return
diff --git a/modular_doppler/ntnrc_for_all/code/ntnrc_client_edits.dm b/modular_doppler/ntnrc_for_all/code/ntnrc_client_edits.dm
new file mode 100644
index 0000000000000..445a057b25f36
--- /dev/null
+++ b/modular_doppler/ntnrc_for_all/code/ntnrc_client_edits.dm
@@ -0,0 +1,14 @@
+
+/// Enables the chat client to run without using up power.
+/datum/computer_file/program/chatclient
+ program_flags = PROGRAM_ON_NTNET_STORE | PROGRAM_REQUIRES_NTNET | PROGRAM_RUNS_WITHOUT_POWER
+ power_cell_use = 0
+
+/datum/computer_file/program/chatclient/on_start(mob/living/user)
+ . = ..()
+ if(!.)
+ return
+
+ // If we're already in the common chat, start with it open.
+ if((src in SSmodular_computers.common_chat.active_clients) || (src in SSmodular_computers.common_chat.offline_clients))
+ active_channel = SSmodular_computers.common_chat.id
diff --git a/modular_doppler/ntnrc_for_all/code/pda_prefs_edits.dm b/modular_doppler/ntnrc_for_all/code/pda_prefs_edits.dm
new file mode 100644
index 0000000000000..83b48a7190c89
--- /dev/null
+++ b/modular_doppler/ntnrc_for_all/code/pda_prefs_edits.dm
@@ -0,0 +1,18 @@
+
+/// Apply our ntnrc client username prefs
+/obj/item/modular_computer/pda/update_pda_prefs(client/owner_client)
+ . = ..()
+ if(isnull(owner_client))
+ return
+
+ var/datum/computer_file/program/chatclient/our_chat_client = locate() in stored_files
+ if(isnull(our_chat_client))
+ return
+
+ var/default_username = owner_client.prefs.read_preference(/datum/preference/name/ntnrc_username)
+ if(isnull(default_username))
+ return
+
+ our_chat_client.username = default_username
+ SSmodular_computers.common_chat.add_client(our_chat_client)
+ open_program(null, our_chat_client, FALSE)
diff --git a/modular_doppler/ntnrc_for_all/code/ss_modular_computers_edits.dm b/modular_doppler/ntnrc_for_all/code/ss_modular_computers_edits.dm
new file mode 100644
index 0000000000000..67b879c9dabd3
--- /dev/null
+++ b/modular_doppler/ntnrc_for_all/code/ss_modular_computers_edits.dm
@@ -0,0 +1,8 @@
+
+/datum/controller/subsystem/modular_computers
+ /// Reference to the common chat used for all crew
+ var/datum/ntnet_conversation/common/common_chat
+
+/datum/controller/subsystem/modular_computers/Initialize()
+ . = ..()
+ common_chat = new(title = NTNRC_COMMON_CHAT, strong = TRUE)
diff --git a/modular_doppler/ntnrc_for_all/code/username_prefs.dm b/modular_doppler/ntnrc_for_all/code/username_prefs.dm
new file mode 100644
index 0000000000000..ddad401e8f197
--- /dev/null
+++ b/modular_doppler/ntnrc_for_all/code/username_prefs.dm
@@ -0,0 +1,19 @@
+
+/// The username to default to for NTNRC
+/datum/preference/name/ntnrc_username
+ explanation = NTRNC_USERNAME_PREF_NAME
+ group = "_usernames" // Underscore puts it high up, but below `_real_names`
+ savefile_key = "chat_client_username"
+
+
+/datum/preference/name/ntnrc_username/create_default_value()
+ return pick(GLOB.hacker_aliases)
+
+/datum/preference/name/ntnrc_username/is_valid(value)
+ return !isnull(permissive_sanitize_name(value))
+
+/datum/preference/name/ntnrc_username/deserialize(input, datum/preferences/preferences)
+ return permissive_sanitize_name(input)
+
+/datum/preference/name/ntnrc_username/serialize(input)
+ return permissive_sanitize_name(input)
diff --git a/modular_doppler/ntnrc_for_all/readme.md b/modular_doppler/ntnrc_for_all/readme.md
new file mode 100644
index 0000000000000..705a33b2fca52
--- /dev/null
+++ b/modular_doppler/ntnrc_for_all/readme.md
@@ -0,0 +1,28 @@
+## Title: NTNRC For All
+
+MODULE ID: NTNRC_FOR_ALL
+
+### Description:
+
+Implements a general NTNRC channel every crewmember is added to by default, and related username pref.
+
+### TG Proc Changes:
+
+- `/datum/computer_file/program/chatclient/ui_act(...)` - Blocked passwords from being set on `strong` channels.
+- `/obj/item/modular_computer/ui_act(...)` - Emergency mode exit program swaps between NTNRC and messenger.
+
+### Defines:
+
+- `code\__DEFINES\~doppler_defines\ntnrc.dm`
+
+### Master file additions
+
+N/A
+
+### Included files that are not contained in this module:
+
+N/A
+
+### Credits:
+
+- Ephe
diff --git a/modular_doppler/objects_and_structures/code/structure.dm b/modular_doppler/objects_and_structures/code/structure.dm
deleted file mode 100644
index 8ebda2b81ed2f..0000000000000
--- a/modular_doppler/objects_and_structures/code/structure.dm
+++ /dev/null
@@ -1,16 +0,0 @@
-/obj/effect/spawner/random/structure/crate
- name = "crate spawner"
- icon_state = "crate_secure"
- loot = list(
- /obj/effect/spawner/random/structure/crate_loot = 495,
- /obj/structure/trash_pile = 250,
- /obj/structure/closet/crate/trashcart/filled = 75,
- /obj/effect/spawner/random/trash/moisture_trap = 50,
- /obj/effect/spawner/random/trash/hobo_squat = 30,
- /obj/structure/closet/mini_fridge = 35,
- /obj/effect/spawner/random/trash/mess = 30,
- /obj/item/kirbyplants/fern = 20,
- /obj/structure/closet/crate/decorations = 15,
- /obj/effect/decal/remains/human/smokey/maintenance = 7,
- /obj/structure/destructible/cult/pants_altar = 1,
- )
diff --git a/modular_doppler/objects_and_structures/code/trash_pile.dm b/modular_doppler/objects_and_structures/code/trash_pile.dm
deleted file mode 100644
index 8e38a9bc46796..0000000000000
--- a/modular_doppler/objects_and_structures/code/trash_pile.dm
+++ /dev/null
@@ -1,138 +0,0 @@
-/obj/structure/trash_pile
- name = "trash pile"
- desc = "A heap of garbage, but maybe there's something interesting inside?"
- icon = 'modular_doppler/objects_and_structures/icons/trash_piles.dmi'
- icon_state = "randompile"
- density = TRUE
- anchored = TRUE
- layer = TABLE_LAYER
- obj_flags = CAN_BE_HIT
- pass_flags = LETPASSTHROW
-
- max_integrity = 50
-
- var/hide_person_time = 30
- var/hide_item_time = 15
-
- var/list/searchedby = list()// Characters that have searched this trashpile, with values of searched time.
-
-/obj/structure/trash_pile/Initialize(mapload)
- . = ..()
- icon_state = pick(
- "pile1",
- "pile2",
- "pilechair",
- "piletable",
- "pilevending",
- "brtrashpile",
- "microwavepile",
- "rackpile",
- "boxfort",
- "trashbag",
- "brokecomp",
- )
-
-/obj/structure/trash_pile/proc/do_search(mob/user)
- if(contents.len) // There's something hidden
- var/atom/hidden_atom = contents[contents.len] // Get the most recent hidden thing
- if(istype(hidden_atom, /mob/living))
- var/mob/living/hidden_mob = hidden_atom
- balloon_alert(user, "someone is inside!")
- eject_mob(hidden_mob)
- else if (istype(hidden_atom, /obj/item))
- var/obj/item/hidden_item = hidden_atom
- balloon_alert(user, "found something!")
- hidden_item.forceMove(src.loc)
- else
- // You already searched this one bruh
- if(user.ckey in searchedby)
- balloon_alert(user, "already searched!")
- // You found an item!
- else
- produce_alpha_item()
- balloon_alert(user, "found something!")
- searchedby += user.ckey
-
-/obj/structure/trash_pile/attack_hand(mob/user)
- // Human mob
- if(ishuman(user))
- var/mob/living/carbon/human/human_user = user
- human_user.visible_message("[user] searches through \the [src].", span_notice("You search through \the [src]."))
- // Do the searching
- if(do_after(user, rand(4 SECONDS, 6 SECONDS), target = src))
- if(src.loc) // Let's check if the pile still exists
- do_search(user)
- else
- return ..()
-
-// Random lists
-/obj/structure/trash_pile/proc/produce_alpha_item()
- var/lootspawn = pick_weight(GLOB.maintenance_loot)
- while(islist(lootspawn))
- lootspawn = pick_weight(lootspawn)
- var/obj/item/hidden_item = new lootspawn(get_turf(src))
- return hidden_item
-
-/obj/structure/trash_pile/mouse_drop_receive(atom/dropping, mob/user, params)
- if(user == dropping && iscarbon(dropping))
- var/mob/living/dropped_mob = dropping
- if(dropped_mob.mobility_flags & MOBILITY_MOVE)
- dive_in_pile(user)
- return
-
-/obj/structure/trash_pile/proc/eject_mob(mob/living/hidden_mob)
- hidden_mob.forceMove(src.loc)
- playsound(hidden_mob.loc, 'sound/machines/chime.ogg', 50, FALSE, -5)
- hidden_mob.do_alert_animation(hidden_mob)
-
-/obj/structure/trash_pile/proc/do_dive(mob/user)
- if(contents.len)
- for(var/mob/hidden_mob in contents)
- balloon_alert(user, "already someone inside!")
- eject_mob(hidden_mob)
- return FALSE
- return TRUE
-
-/obj/structure/trash_pile/proc/dive_in_pile(mob/user)
- user.visible_message(span_warning("[user] starts diving into [src]."), \
- span_notice("You start diving into [src]..."))
- var/adjusted_dive_time = hide_person_time
- if(HAS_TRAIT(user, TRAIT_RESTRAINED)) // hiding takes twice as long when restrained.
- adjusted_dive_time *= 2
-
- if(do_after(user, adjusted_dive_time, user))
- if(src.loc) // Checking if structure has been destroyed
- if(do_dive(user))
- user.forceMove(src)
-
-/obj/structure/trash_pile/proc/can_hide_item(obj/item/hidden_item)
- if(contents.len > 10)
- return FALSE
- return TRUE
-
-/obj/structure/trash_pile/attackby(obj/item/hidden_item, mob/living/user, params)
- if(!user.combat_mode)
- if(can_hide_item(hidden_item))
- balloon_alert(user, "hiding item...")
- if(do_after(user, hide_item_time, user))
- if(src.loc)
- if(user.transferItemToLoc(hidden_item, src))
- balloon_alert(user, "item hidden")
- else
- balloon_alert(user, "it's stuck to your hand!")
- else
- balloon_alert(user, "it's full!")
- return
-
- . = ..()
-
-/obj/structure/trash_pile/Destroy()
- for(var/atom/movable/pile_contents in src)
- pile_contents.forceMove(src.loc)
- return ..()
-
-/obj/structure/trash_pile/container_resist_act(mob/user)
- user.forceMove(src.loc)
-
-/obj/structure/trash_pile/relaymove(mob/user)
- container_resist_act(user)
diff --git a/modular_doppler/reagent_forging/code/forge_weapons.dm b/modular_doppler/reagent_forging/code/forge_weapons.dm
index 113d9d0138e93..fdf5049f347c8 100644
--- a/modular_doppler/reagent_forging/code/forge_weapons.dm
+++ b/modular_doppler/reagent_forging/code/forge_weapons.dm
@@ -25,7 +25,7 @@
icon_state = "sword"
inhand_icon_state = "sword"
worn_icon_state = "sword_back"
- belt_icon_state = "sword_belt"
+ inside_belt_icon_state = "sword_belt"
hitsound = 'sound/items/weapons/bladeslice.ogg'
throwforce = 10
block_chance = 25
@@ -46,7 +46,7 @@
icon_state = "katana"
inhand_icon_state = "katana"
worn_icon_state = "katana_back"
- belt_icon_state = "katana_belt"
+ inside_belt_icon_state = "katana_belt"
hitsound = 'sound/items/weapons/bladeslice.ogg'
throwforce = 10
block_chance = 20
@@ -65,7 +65,7 @@
icon_state = "dagger"
inhand_icon_state = "dagger"
worn_icon_state = "dagger_back"
- belt_icon_state = "dagger_belt"
+ inside_belt_icon_state = "dagger_belt"
hitsound = 'sound/items/weapons/bladeslice.ogg'
throw_speed = 4
embed_type = /datum/embed_data/forged_dagger
diff --git a/modular_doppler/sprite_swaps/code/bigclosets.dm b/modular_doppler/sprite_swaps/code/bigclosets.dm
new file mode 100644
index 0000000000000..f3f36ca8e5323
--- /dev/null
+++ b/modular_doppler/sprite_swaps/code/bigclosets.dm
@@ -0,0 +1,28 @@
+/obj/structure/closet/emcloset
+ desc = "A sturdy closet to store breach control equipment and materials. It could probably protect you from dangerous air pressure."
+ icon = 'modular_doppler/sprite_swaps/icons/elockers.dmi'
+ max_integrity = 300
+ contents_pressure_protection = 1
+ door_anim_time = 0
+ max_mob_size = MOB_SIZE_LARGE
+ mob_storage_capacity = 4
+ storage_capacity = 45
+
+/obj/structure/closet/firecloset
+ desc = "A sturdy closet to store fire suppression equipment and materials. It could probably protect you from dangerous ambient temperatures."
+ icon = 'modular_doppler/sprite_swaps/icons/elockers.dmi'
+ max_integrity = 300
+ contents_thermal_insulation = 1
+ door_anim_time = 0
+ max_mob_size = MOB_SIZE_LARGE
+ mob_storage_capacity = 4
+ storage_capacity = 45
+ armor_type = /datum/armor/fire_closet
+
+/datum/armor/fire_closet
+ melee = 20
+ bullet = 10
+ laser = 10
+ bomb = 10
+ fire = 100
+ acid = 60
diff --git a/modular_doppler/sprite_swaps/icons/elockers.dmi b/modular_doppler/sprite_swaps/icons/elockers.dmi
new file mode 100644
index 0000000000000..81e4be860492a
Binary files /dev/null and b/modular_doppler/sprite_swaps/icons/elockers.dmi differ
diff --git a/modular_doppler/tableflip/tableflip.dm b/modular_doppler/tableflip/tableflip.dm
index 19d119536d436..73a0cefb1a509 100644
--- a/modular_doppler/tableflip/tableflip.dm
+++ b/modular_doppler/tableflip/tableflip.dm
@@ -28,7 +28,7 @@
if(istype(mover, /obj/projectile))
var/obj/projectile/projectile = mover
//Lets through bullets shot from behind the cover of the table
- if(projectile.trajectory && angle2dir_cardinal(projectile.trajectory.angle) == dir)
+ if(angle2dir_cardinal(projectile.angle) == dir)
return TRUE
return FALSE
if(border_dir == dir)
diff --git a/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm b/modular_doppler/the-business/code/twitch.dm
similarity index 80%
rename from modular_doppler/deforest_medical_items/code/chemicals/twitch.dm
rename to modular_doppler/the-business/code/twitch.dm
index 8d6b2ca392c6c..6951f8f07628d 100644
--- a/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm
+++ b/modular_doppler/the-business/code/twitch.dm
@@ -8,9 +8,6 @@
// Reaction to make twitch, makes 10u from 17u input reagents
/datum/chemical_reaction/twitch
- results = list(
- /datum/reagent/drug/twitch = 10,
- )
required_reagents = list(
/datum/reagent/impedrezene = 5,
/datum/reagent/bluespace = 10,
@@ -19,14 +16,36 @@
mob_react = FALSE
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING
-// Twitch drug, makes the takers of it faster and able to dodge bullets while in their system, to potentially bad side effects
+/datum/chemical_reaction/twitch/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/iteration in 1 to created_volume)
+ var/obj/item/reagent_containers/hypospray/medipen/deforest/twitch/new_injector = new(location)
+ new_injector.pixel_x = rand(-6, 6)
+ new_injector.pixel_y = rand(-6, 6)
+
+// Injector, because it needs to look kickass
+/obj/item/reagent_containers/hypospray/medipen/deforest/twitch
+ name = "T-WITCH vial"
+ desc = "An almost cartoonish looking glass injector filled with a horribly corrosive green liquid that slowly swirls around. \
+ A heavily regulated substance called T-WITCH that is claimed to make the users of it 'see faster'."
+ icon = 'modular_doppler/the-business/icons/items.dmi'
+ base_icon_state = "twitch"
+ icon_state = "twitch"
+ list_reagents = list(
+ /datum/reagent/drug/twitch = 10,
+ /datum/reagent/drug/maint/tar = 5,
+ /datum/reagent/medicine/silibinin = 5,
+ /datum/reagent/toxin/leadacetate = 5,
+ )
+
+// T-WITCH, makes the user faster in movement and attacks, they can even dodge projectiles when overdosing on it
/datum/reagent/drug/twitch
- name = "TWitch"
- description = "A drug originally developed by and for plutonians to assist them during raids. \
- Does not see wide use due to the whole reality-disassociation and heart disease thing afterwards. \
- Can be intentionally overdosed to increase the drug's effects"
+ name = "T-WITCH"
+ description = "An invention by the drug ~artists~ of Europa, a wicked stimulant that both slow's the user's \
+ perception of time and speeds of their actions. This is a recipe for some extreme performance, at heavy \
+ cost to the user's health in most cases."
reagent_state = LIQUID
- color = "#c22a44"
+ color = "#91db69"
taste_description = "television static"
metabolization_rate = 0.65 * REAGENTS_METABOLISM
ph = 3
@@ -41,7 +60,6 @@
/// How much the mob heating is multiplied by, if the target is a robot or has muscled veins
var/mob_heating_muliplier = 5
-
/datum/reagent/drug/twitch/on_mob_metabolize(mob/living/our_guy)
. = ..()
@@ -71,7 +89,6 @@
game_plane_master_controller.add_filter(TWITCH_SCREEN_BLUR, 1, list("type" = "radial_blur", "size" = 0.02))
-
/datum/reagent/drug/twitch/on_mob_end_metabolize(mob/living/carbon/our_guy)
. = ..()
@@ -80,8 +97,6 @@
our_guy.sound_environment_override = NONE
- speech_effect_span = "hierophant"
-
UnregisterSignal(our_guy, COMSIG_MOVABLE_MOVED)
UnregisterSignal(our_guy, COMSIG_MOVABLE_HEAR)
if(overdosed)
@@ -90,13 +105,13 @@
if(constant_dose_time < CONSTANT_DOSE_SAFE_LIMIT) // Anything less than this and you'll come out fiiiine, aside from a big hit of stamina damage
if(!(our_guy.mob_biotypes & MOB_ROBOTIC))
our_guy.visible_message(
- span_danger("[our_guy] suddenly slows from [our_guy.p_their()] inhuman speeds, coming back with a wicked nosebleed!"),
- span_danger("You suddenly slow back to normal, a stream of blood gushing from your nose!")
+ span_danger("[our_guy] stops dead, [our_guy.p_their()] afterimages quickly catching up to them!"),
+ span_danger("You suddenly stop dead in your tracks, a stream of blood gushing from your nose!")
)
else
our_guy.visible_message(
- span_danger("[our_guy] suddenly slows from [our_guy.p_their()] inhuman speeds!"),
- span_danger("You suddenly slow back to normal speed!")
+ span_danger("[our_guy] stops dead, [our_guy.p_their()] afterimages quickly catching up to them!"),
+ span_danger("You suddenly stop dead in your tracks!")
)
our_guy.adjustStaminaLoss(constant_dose_time)
@@ -105,13 +120,13 @@
our_guy.spray_blood(our_guy.dir, 2) // The before mentioned coughing up blood
our_guy.emote("cough")
our_guy.visible_message(
- span_danger("[our_guy] suddenly snaps back from [our_guy.p_their()] inhuman speeds, coughing up a spray of blood!"),
- span_danger("As you snap back to normal speed you cough up a worrying amount of blood. You feel like you've just been run over by a power loader.")
+ span_danger("[our_guy] stops dead, coughing up a spray of blood!"),
+ span_danger("As you stop dead in your tracks, you cough up a worrying amount of blood.")
)
else
our_guy.visible_message(
- span_danger("[our_guy] suddenly snaps back from [our_guy.p_their()] inhuman speeds!"),
- span_danger("You suddenly snap back to normal speeds. You feel like you've just been run over by a power loader.")
+ span_danger("[our_guy] stops dead, heat venting from [our_guy.p_their()] body!"),
+ span_danger("You suddenly stop dead in your tracks, superheated air venting from your body!")
)
our_guy.adjustStaminaLoss(constant_dose_time)
if(!HAS_TRAIT(our_guy, TRAIT_TWITCH_ADAPTED))
@@ -120,18 +135,18 @@
if(!our_guy.hud_used)
return
+ our_guy.Stun(1 SECONDS)
+
var/atom/movable/plane_master_controller/game_plane_master_controller = our_guy.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
game_plane_master_controller.remove_filter(TWITCH_SCREEN_FILTER)
game_plane_master_controller.remove_filter(TWITCH_SCREEN_BLUR)
-
/// Leaves an afterimage behind the mob when they move
/datum/reagent/drug/twitch/proc/on_movement(mob/living/carbon/our_guy, atom/old_loc)
SIGNAL_HANDLER
new /obj/effect/temp_visual/decoy/twitch_afterimage(old_loc, our_guy)
-
/// Tries to dodge incoming bullets if we aren't disabled for any reasons
/datum/reagent/drug/twitch/proc/dodge_bullets(mob/living/carbon/human/source, obj/projectile/hitting_projectile, def_zone)
SIGNAL_HANDLER
@@ -147,7 +162,6 @@
addtimer(CALLBACK(source, TYPE_PROC_REF(/datum, remove_filter), TWITCH_BLUR_EFFECT), 0.5 SECONDS)
return COMPONENT_BULLET_PIERCED
-
/datum/reagent/drug/twitch/on_mob_life(mob/living/carbon/our_guy, seconds_per_tick, times_fired)
. = ..()
@@ -168,10 +182,11 @@
if(locate(/datum/reagent/drug/kronkaine) in our_guy.reagents.reagent_list) // Kronkaine, another heart-straining drug, could cause problems if mixed with this
our_guy.ForceContractDisease(new /datum/disease/adrenal_crisis(), FALSE, TRUE)
-
/datum/reagent/drug/twitch/overdose_start(mob/living/our_guy)
. = ..()
+ speech_effect_span = "hierophant"
+
RegisterSignal(our_guy, COMSIG_ATOM_PRE_BULLET_ACT, PROC_REF(dodge_bullets))
our_guy.next_move_modifier -= 0.2 // Overdosing makes you a liiitle faster but you know has some really bad consequences
@@ -186,7 +201,6 @@
for(var/filter in game_plane_master_controller.get_filters(TWITCH_SCREEN_FILTER))
animate(filter, loop = -1, color = col_filter_ourple, time = 4 SECONDS, easing = BOUNCE_EASING)
-
/datum/reagent/drug/twitch/overdose_process(mob/living/carbon/our_guy, seconds_per_tick, times_fired)
. = ..()
our_guy.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
@@ -205,9 +219,8 @@
our_guy.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype)
if(SPT_PROB(5, seconds_per_tick) && !(our_guy.mob_biotypes & MOB_ROBOTIC))
- to_chat(our_guy, span_danger("You cough up a splatter of blood!"))
- our_guy.spray_blood(our_guy.dir, 1)
- our_guy.emote("cough")
+ our_guy.playsound_local(our_guy, 'sound/effects/singlebeat.ogg', 100, TRUE)
+ flash_color(our_guy, flash_color = "#ff0000", flash_time = 3 SECONDS)
if(SPT_PROB(10, seconds_per_tick))
our_guy.add_filter(TWITCH_OVERDOSE_BLUR_EFFECT, 2, phase_filter(8))
@@ -218,7 +231,6 @@
SIGNAL_HANDLER
hearing_args[HEARING_RAW_MESSAGE] = "[hearing_args[HEARING_RAW_MESSAGE]] "
-
/// Cool filter that I'm using for some of this :)))
/proc/phase_filter(size)
. = list("type" = "wave")
@@ -226,7 +238,6 @@
if(!isnull(size))
.["size"] = size
-
// Temp visual that changes color for that bootleg sandevistan effect
/obj/effect/temp_visual/decoy/twitch_afterimage
duration = 0.75 SECONDS
diff --git a/modular_doppler/the-business/icons/items.dmi b/modular_doppler/the-business/icons/items.dmi
new file mode 100644
index 0000000000000..805f33631ea88
Binary files /dev/null and b/modular_doppler/the-business/icons/items.dmi differ
diff --git a/modular_doppler/verbs/code/subtle.dm b/modular_doppler/verbs/code/subtle.dm
index 785119be2eb53..3d6158e47e786 100644
--- a/modular_doppler/verbs/code/subtle.dm
+++ b/modular_doppler/verbs/code/subtle.dm
@@ -39,7 +39,7 @@
in_view -= GLOB.dead_mob_list
in_view.Remove(user)
- for(var/mob/eye/ai_eye/ai_eye in in_view)
+ for(var/mob/eye/camera/ai/ai_eye in in_view)
in_view.Remove(ai_eye)
var/list/targets = list(SUBTLE_ONE_TILE_TEXT, SUBTLE_SAME_TILE_TEXT) + in_view
diff --git a/rust_g.dll b/rust_g.dll
index d3aebf7121706..157fb64acaf33 100644
Binary files a/rust_g.dll and b/rust_g.dll differ
diff --git a/sound/attributions.txt b/sound/attributions.txt
index dab6cedf7eb62..ff83a24ab8230 100644
--- a/sound/attributions.txt
+++ b/sound/attributions.txt
@@ -23,7 +23,6 @@ champagne_pop.ogg is credited to ultradust on freesound https://freesound.org/pe
can_open.ogg adapted from https://freesound.org/people/MaxDemianAGL/sounds/130031/
can_shake.ogg adapted from https://freesound.org/people/mcmast/sounds/456703/
-
splatter.ogg adapted from https://freesound.org/people/Rocktopus/sounds/233418/
hohoho.ogg and hehe.ogg are cut from a recording by Nanakisan on freesound: https://freesound.org/people/Nanakisan/sounds/253534/
mbox_full.ogg and mbox_end.ogg make use of The Ragtime Drummer by James Lent, in the public domain
@@ -50,7 +49,7 @@ https://freesound.org/s/431740/ (CC 0)
chainsaw_stop.ogg is adapted from kyles "chainsaw sawing short cuts +stop.flac" (CC 0)
https://freesound.org/people/kyles/sounds/453256/
-clock.mp3 is adapted from Tetrisrocker's "Clock", which uses CC Attributions 0
+clock.ogg is adapted from Tetrisrocker's "Clock", which uses CC Attributions 0
https://freesound.org/people/Tetrisrocker/sounds/458627/
ark_activation.ogg is taken from ScottFerguson1's "Cucko Clock edited version", which is licensed under CC Attribution 3.0
@@ -181,8 +180,6 @@ https://freesound.org/people/shw489/sounds/234389/
soup_boil1.ogg through soup_boil5.ogg and soup_boil_end.ogg are taken from Boiling Soup from Freesoung.org (CC4) and converted to OGG / split apart (but is otherwise unchanged):
https://freesound.org/people/jorickhoofd/sounds/632783/
-
-
valve_opening.ogg was made by mixing water flowing samples from:
https://freesound.org/people/scriotxstudios/sounds/349111/?attribution=1 and squeaky scrape sound from:
https://freesound.org/people/Department64/sounds/669028/ which was modified with lower pitch
@@ -191,6 +188,9 @@ liquid_pour2.ogg and liquid_pour3.ogg were cut from
https://freesound.org/people/MattRuthSound/sounds/561896/
https://freesound.org/people/MattRuthSound/sounds/561895/
+roaring_fire.ogg made from: 10835 big fire loop.wav by Robinhood76 -- https://freesound.org/s/612277/ -- License: Attribution NonCommercial 4.0
+fire_puff made from: Bonfire Being Lit by samararaine -- https://freesound.org/s/186374/ -- License: Creative Commons 0
+
ayylien.ogg was made by remixing:
SCIRetro_Energy Swells Synth_Funky Audio_Sonics Spices by Funky_Audio under CC0 -- https://freesound.org/people/realtheremin/sounds/119011/
scifi_scare_a.aiff by realtheremin under CC0 -- https://freesound.org/people/Funky_Audio/sounds/729392/
@@ -209,3 +209,7 @@ https://freesound.org/people/C_Rogers/sounds/203368/ -- glass-shattering-hit_01.
https://freesound.org/people/Czarcazas/sounds/330800/ -- Audio reversal/fading of Shattering Glass (Small) by Czarcazas -- https://freesound.org/s/330800/ -- License: Attribution 3.0
sound/effects/bonk.ogg - recorded by oranges on a coke zero bottle, edited by ninjanomnom, released to public domain
+
+sound\items\weapons\hammer_death_scream.ogg - Undefeatablesos' scream recorded by Niron3206, edited by Niron3206, License: Creative Commons 0
+
+sound/machines/sink-faucet.ogg -- https://freesound.org/people/FOSSarts/sounds/740086/ -- by FOSSarts (CC0)
diff --git a/sound/effects/changeling_absorb/attribution.txt b/sound/effects/changeling_absorb/attribution.txt
new file mode 100644
index 0000000000000..8fb03b4f01c22
--- /dev/null
+++ b/sound/effects/changeling_absorb/attribution.txt
@@ -0,0 +1,2 @@
+changeling_absorb 1-7 made by sadboysuss
+license: CC-BY-SA
\ No newline at end of file
diff --git a/sound/effects/changeling_absorb/changeling_absorb1.ogg b/sound/effects/changeling_absorb/changeling_absorb1.ogg
new file mode 100644
index 0000000000000..1ce7457a2d9a3
Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb1.ogg differ
diff --git a/sound/effects/changeling_absorb/changeling_absorb2.ogg b/sound/effects/changeling_absorb/changeling_absorb2.ogg
new file mode 100644
index 0000000000000..86bb2495cd1d8
Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb2.ogg differ
diff --git a/sound/effects/changeling_absorb/changeling_absorb3.ogg b/sound/effects/changeling_absorb/changeling_absorb3.ogg
new file mode 100644
index 0000000000000..2a0dcedaf61bd
Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb3.ogg differ
diff --git a/sound/effects/changeling_absorb/changeling_absorb4.ogg b/sound/effects/changeling_absorb/changeling_absorb4.ogg
new file mode 100644
index 0000000000000..ea3cc51e43bb3
Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb4.ogg differ
diff --git a/sound/effects/changeling_absorb/changeling_absorb5.ogg b/sound/effects/changeling_absorb/changeling_absorb5.ogg
new file mode 100644
index 0000000000000..761f29a8cd89b
Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb5.ogg differ
diff --git a/sound/effects/changeling_absorb/changeling_absorb6.ogg b/sound/effects/changeling_absorb/changeling_absorb6.ogg
new file mode 100644
index 0000000000000..10e70742e6704
Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb6.ogg differ
diff --git a/sound/effects/changeling_absorb/changeling_absorb7.ogg b/sound/effects/changeling_absorb/changeling_absorb7.ogg
new file mode 100644
index 0000000000000..7a1fd52fa932f
Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb7.ogg differ
diff --git a/sound/effects/fire_puff.ogg b/sound/effects/fire_puff.ogg
new file mode 100644
index 0000000000000..c238584f55a65
Binary files /dev/null and b/sound/effects/fire_puff.ogg differ
diff --git a/sound/effects/fireclip1.ogg b/sound/effects/fireclip1.ogg
new file mode 100644
index 0000000000000..89ba2395a4d92
Binary files /dev/null and b/sound/effects/fireclip1.ogg differ
diff --git a/sound/effects/fireclip2.ogg b/sound/effects/fireclip2.ogg
new file mode 100644
index 0000000000000..c60990cd5bd7e
Binary files /dev/null and b/sound/effects/fireclip2.ogg differ
diff --git a/sound/effects/fireclip3.ogg b/sound/effects/fireclip3.ogg
new file mode 100644
index 0000000000000..cd68608959879
Binary files /dev/null and b/sound/effects/fireclip3.ogg differ
diff --git a/sound/effects/fireclip4.ogg b/sound/effects/fireclip4.ogg
new file mode 100644
index 0000000000000..9ae01a8d3ade7
Binary files /dev/null and b/sound/effects/fireclip4.ogg differ
diff --git a/sound/effects/fireclip5.ogg b/sound/effects/fireclip5.ogg
new file mode 100644
index 0000000000000..855cc4b820d5a
Binary files /dev/null and b/sound/effects/fireclip5.ogg differ
diff --git a/sound/effects/fireclip6.ogg b/sound/effects/fireclip6.ogg
new file mode 100644
index 0000000000000..061cc42993d8c
Binary files /dev/null and b/sound/effects/fireclip6.ogg differ
diff --git a/sound/effects/fireclip7.ogg b/sound/effects/fireclip7.ogg
new file mode 100644
index 0000000000000..3a0f9840f3c5e
Binary files /dev/null and b/sound/effects/fireclip7.ogg differ
diff --git a/sound/effects/magic/attribution.txt b/sound/effects/magic/attribution.txt
new file mode 100644
index 0000000000000..448707cd70c76
--- /dev/null
+++ b/sound/effects/magic/attribution.txt
@@ -0,0 +1,2 @@
+curse.ogg made by sadboysuss
+license: CC-BY-SA
\ No newline at end of file
diff --git a/sound/effects/magic/curse.ogg b/sound/effects/magic/curse.ogg
index b6af218a6585a..b9134da2c5a9a 100644
Binary files a/sound/effects/magic/curse.ogg and b/sound/effects/magic/curse.ogg differ
diff --git a/sound/effects/roaring_fire.ogg b/sound/effects/roaring_fire.ogg
new file mode 100644
index 0000000000000..b3927b69feb87
Binary files /dev/null and b/sound/effects/roaring_fire.ogg differ
diff --git a/sound/items/duct_tape/duct_tape_rip.ogg b/sound/items/duct_tape/duct_tape_rip.ogg
index bf1746ef7c940..8a5df8ffdd872 100644
Binary files a/sound/items/duct_tape/duct_tape_rip.ogg and b/sound/items/duct_tape/duct_tape_rip.ogg differ
diff --git a/sound/items/duct_tape/duct_tape_snap.ogg b/sound/items/duct_tape/duct_tape_snap.ogg
index 354061af12152..af253fc7ef24b 100644
Binary files a/sound/items/duct_tape/duct_tape_snap.ogg and b/sound/items/duct_tape/duct_tape_snap.ogg differ
diff --git a/sound/items/handling/shoes/sneakers_pickup1.ogg b/sound/items/handling/shoes/sneakers_pickup1.ogg
index 9670ec324e372..7d86eaa562f13 100644
Binary files a/sound/items/handling/shoes/sneakers_pickup1.ogg and b/sound/items/handling/shoes/sneakers_pickup1.ogg differ
diff --git a/sound/items/weapons/hammer_death_scream.ogg b/sound/items/weapons/hammer_death_scream.ogg
new file mode 100644
index 0000000000000..cff35f2328116
Binary files /dev/null and b/sound/items/weapons/hammer_death_scream.ogg differ
diff --git a/sound/items/weapons/peashoot.ogg b/sound/items/weapons/peashoot.ogg
new file mode 100644
index 0000000000000..de4d5c1e46458
Binary files /dev/null and b/sound/items/weapons/peashoot.ogg differ
diff --git a/sound/machines/license.txt b/sound/machines/license.txt
index dbccfd7ea096d..69e52c94e4b74 100644
--- a/sound/machines/license.txt
+++ b/sound/machines/license.txt
@@ -4,3 +4,5 @@ This is licensed under CC-BY 4.0, found at https://creativecommons.org/licenses/
shutter.ogg adapted from Joseph Sardin on BigSoundBank
https://bigsoundbank.com/detail-2475-manual-roller-shutter-closing-out-2.html
+
+mail_sort.ogg adapted from csigusz_foxoup ob Freesound https://freesound.org/people/csigusz_foxoup/sounds/711428/
\ No newline at end of file
diff --git a/sound/machines/mail_sort.ogg b/sound/machines/mail_sort.ogg
new file mode 100644
index 0000000000000..66ec79468d50b
Binary files /dev/null and b/sound/machines/mail_sort.ogg differ
diff --git a/sound/machines/sink-faucet.ogg b/sound/machines/sink-faucet.ogg
new file mode 100644
index 0000000000000..7102a3940308f
Binary files /dev/null and b/sound/machines/sink-faucet.ogg differ
diff --git a/sound/misc/escape_menu/attribution.txt b/sound/misc/escape_menu/attribution.txt
new file mode 100644
index 0000000000000..c4f5fc0206b0f
--- /dev/null
+++ b/sound/misc/escape_menu/attribution.txt
@@ -0,0 +1,3 @@
+esc_middle, esc_open and esc_close are all modified from the following respectively:
+Tape Recorder.wav by Pogotron -- https://freesound.org/s/61075/ -- License: Sampling+
+cassette tape deck slot open close hard nice spring various and spinout end.flac by kyles -- https://freesound.org/s/635487/ -- License: Creative Commons 0
diff --git a/sound/misc/escape_menu/esc_close.ogg b/sound/misc/escape_menu/esc_close.ogg
new file mode 100644
index 0000000000000..30946e77edd80
Binary files /dev/null and b/sound/misc/escape_menu/esc_close.ogg differ
diff --git a/sound/misc/escape_menu/esc_middle.ogg b/sound/misc/escape_menu/esc_middle.ogg
new file mode 100644
index 0000000000000..4a8b3134926df
Binary files /dev/null and b/sound/misc/escape_menu/esc_middle.ogg differ
diff --git a/sound/misc/escape_menu/esc_open.ogg b/sound/misc/escape_menu/esc_open.ogg
new file mode 100644
index 0000000000000..4ad958d0bcb2f
Binary files /dev/null and b/sound/misc/escape_menu/esc_open.ogg differ
diff --git a/sound/mobs/humanoids/ethereal/credits.txt b/sound/mobs/humanoids/ethereal/credits.txt
new file mode 100644
index 0000000000000..a157ceacf9edd
--- /dev/null
+++ b/sound/mobs/humanoids/ethereal/credits.txt
@@ -0,0 +1,2 @@
+ethereal_hiss.ogg majorly edited/mixed by Sothanforax, based off of the original audio:
+Remix of 101127__CGEffex__Bug_Zapper_Long_moth_electrocution_Remix.wav by Timbre -- https://freesound.org/s/101334/ -- License: Attribution NonCommercial 4.0
diff --git a/sound/mobs/humanoids/ethereal/ethereal_hiss.ogg b/sound/mobs/humanoids/ethereal/ethereal_hiss.ogg
new file mode 100644
index 0000000000000..969944ea4daa8
Binary files /dev/null and b/sound/mobs/humanoids/ethereal/ethereal_hiss.ogg differ
diff --git a/sound/mobs/humanoids/felinid/attribution.txt b/sound/mobs/humanoids/felinid/attribution.txt
new file mode 100644
index 0000000000000..dfd416150c6b3
--- /dev/null
+++ b/sound/mobs/humanoids/felinid/attribution.txt
@@ -0,0 +1 @@
+felinid_hiss is catHisses2.wav by Zabuhailo -- https://freesound.org/s/146962/ -- License: Creative Commons 0
\ No newline at end of file
diff --git a/sound/mobs/humanoids/felinid/felinid_hiss.ogg b/sound/mobs/humanoids/felinid/felinid_hiss.ogg
new file mode 100644
index 0000000000000..f343bd77fd1ff
Binary files /dev/null and b/sound/mobs/humanoids/felinid/felinid_hiss.ogg differ
diff --git a/sound/mobs/humanoids/human/attribution.txt b/sound/mobs/humanoids/human/attribution.txt
index 20b8c14889a06..f56dc03f794ba 100644
--- a/sound/mobs/humanoids/human/attribution.txt
+++ b/sound/mobs/humanoids/human/attribution.txt
@@ -1,4 +1,5 @@
The male sharp gasps are from https://freesound.org/people/bacruz666/sounds/341908/ and https://freesound.org/people/nettoi/sounds/677540/, the female sharp gasps are from https://freesound.org/people/drotzruhn/sounds/405203/
+human_hiss.ogg is all original work by Sothanforax, hereby licensed under CC BY-SA 3.0
{
male_sniff.ogg - https://freesound.org/people/Fluffayfish/sounds/327799/ , License: CC BY-NC 3.0
diff --git a/sound/mobs/humanoids/human/hiss/human_hiss.ogg b/sound/mobs/humanoids/human/hiss/human_hiss.ogg
new file mode 100644
index 0000000000000..15f643b422086
Binary files /dev/null and b/sound/mobs/humanoids/human/hiss/human_hiss.ogg differ
diff --git a/sound/mobs/humanoids/lizard/credits.txt b/sound/mobs/humanoids/lizard/credits.txt
index 814b758f44da9..820a38fb59376 100644
--- a/sound/mobs/humanoids/lizard/credits.txt
+++ b/sound/mobs/humanoids/lizard/credits.txt
@@ -1,2 +1,3 @@
lizard_scream_1 by n Beats. Lizard_scream_2 and lizard_scream_3 by -sihiL. Lizard_scream_3 edited Lord Saladin. Original PR by super12pl.
deathsound.ogg is originally "demon dying.wav" by THE_bizniss. It was converted and compressed into .ogg format. It and a link to its license can be found at https://freesound.org/s/37823/
+lizard_hiss was originally recorded by Garuda1982, minor editing by Sothanforax. license is at https://freesound.org/s/541656/
diff --git a/sound/mobs/humanoids/lizard/lizard_hiss.ogg b/sound/mobs/humanoids/lizard/lizard_hiss.ogg
new file mode 100644
index 0000000000000..202c7929a1372
Binary files /dev/null and b/sound/mobs/humanoids/lizard/lizard_hiss.ogg differ
diff --git a/sound/music/antag/attribution.txt b/sound/music/antag/attribution.txt
index 6ae7cecc51970..d7b444fc909c9 100644
--- a/sound/music/antag/attribution.txt
+++ b/sound/music/antag/attribution.txt
@@ -1,5 +1,5 @@
sound/instrumental/antag/abductee.ogg is from "Warp SFX" https://freesound.org/people/Breviceps/sounds/453391 (CC0)
-sound/instrumental/antag/brainwash.ogg is from "nog.wav" https://freesound.org/people/_NOMINAL_/sounds/124602 (CC-BY 3.0)
+sound/instrumental/antag/brainwash.ogg is made by FeiH from https://github.com/OracleStation/OracleStation/pull/1122/commits/b28fbbad715b96db029a8e8df38b1357a58daec1
sound/instrumental/antag/hypnosis.ogg is from "Flashback.wav" https://freesound.org/people/Sclolex/sounds/342103 (CC0)
{
diff --git a/sound/voice/repairbot/brick.ogg b/sound/voice/repairbot/brick.ogg
new file mode 100644
index 0000000000000..78dae8633a3a6
Binary files /dev/null and b/sound/voice/repairbot/brick.ogg differ
diff --git a/sound/voice/repairbot/cantanymore.ogg b/sound/voice/repairbot/cantanymore.ogg
new file mode 100644
index 0000000000000..4fc4fb216f72f
Binary files /dev/null and b/sound/voice/repairbot/cantanymore.ogg differ
diff --git a/sound/voice/repairbot/entropy.ogg b/sound/voice/repairbot/entropy.ogg
new file mode 100644
index 0000000000000..ab6a4f6a06732
Binary files /dev/null and b/sound/voice/repairbot/entropy.ogg differ
diff --git a/sound/voice/repairbot/fixit.ogg b/sound/voice/repairbot/fixit.ogg
new file mode 100644
index 0000000000000..20e095589cbb1
Binary files /dev/null and b/sound/voice/repairbot/fixit.ogg differ
diff --git a/sound/voice/repairbot/fixtouch.ogg b/sound/voice/repairbot/fixtouch.ogg
new file mode 100644
index 0000000000000..86ca24ffe3f95
Binary files /dev/null and b/sound/voice/repairbot/fixtouch.ogg differ
diff --git a/sound/voice/repairbot/passionproject.ogg b/sound/voice/repairbot/passionproject.ogg
new file mode 100644
index 0000000000000..6f1fba1d45251
Binary files /dev/null and b/sound/voice/repairbot/passionproject.ogg differ
diff --git a/sound/voice/repairbot/patchingholes.ogg b/sound/voice/repairbot/patchingholes.ogg
new file mode 100644
index 0000000000000..6c65fc22b9627
Binary files /dev/null and b/sound/voice/repairbot/patchingholes.ogg differ
diff --git a/sound/voice/repairbot/pay.ogg b/sound/voice/repairbot/pay.ogg
new file mode 100644
index 0000000000000..0aa2b68868c96
Binary files /dev/null and b/sound/voice/repairbot/pay.ogg differ
diff --git a/sound/voice/repairbot/strings.ogg b/sound/voice/repairbot/strings.ogg
new file mode 100644
index 0000000000000..bc897eacccd14
Binary files /dev/null and b/sound/voice/repairbot/strings.ogg differ
diff --git a/strings/fishing_tips.txt b/strings/fishing_tips.txt
index af67d15e27e70..fd2e0dccc8100 100644
--- a/strings/fishing_tips.txt
+++ b/strings/fishing_tips.txt
@@ -54,3 +54,6 @@ Fish can grow in size and weight if you fed them somewhat frequently. Giving the
Feeding a fish mutagen can triple the probability of generating evolved offsprings, provided it has an evolution.
You can print fishing rods of different materials from an autolathe, which can inrease or decrease fishing difficulty, casting range, experience gained and can have other, special effects.
Albeit scarcely, it's possible to catch fish made of the same materials of a custom material fishing rod. Equipping a shiny fishing hook and the quality of the bait can improve your odds.
+You can use a fishing rod to snatch random organs during the "manipulate organs" step of the "organ manipulation" surgery.
+By opening the aquarium panel and turning "Safe Mode" on, you can easily set up a purely decorative aquarium without having to worry about food, temperature and type of water.
+Aquariums are also potential fishing spots. Only useful for catching fish you couldn't find in the wild, as a personal achievement and nothing more.
\ No newline at end of file
diff --git a/strings/tips.txt b/strings/tips.txt
index 7d5f9f82ccc2e..5f33cb87bc7fe 100644
--- a/strings/tips.txt
+++ b/strings/tips.txt
@@ -55,7 +55,9 @@ As a Heretic, the Path of Cosmos allows you to take rightful ownership of the ve
As a Janitor Cyborg, you are the bane of all slaughter demons and even Bubblegum himself. Cleaning up blood stains will severely gimp them.
As a Janitor, if someone steals your janicart, you can instead use your space cleaner spray, grenades, water sprayer, exact bloody revenge or order another from Cargo.
As a Janitor, mousetraps can be used to create bombs or booby-trap containers.
+As a Janitor, you can command cleanbots by pointing at a tile and saying mop/clean.
As a Medical Cyborg, you can fully perform surgery and even augment people.
+As a Medical Doctor, a shower can be used to help recover from sleep, unconsciousness, confusion, drowsiness, jitters, dizziness, and drunkness.
As a Medical Doctor, almost every type of wound can be treated at least temporarily with gauze. When in doubt, wrap it up!
As a Medical Doctor, corpses placed inside a freezer or morgue tray will have their organs frozen preventing decay. If you don't have time to revive multiple dead bodies, transfer them to the morgue temporarily!
As a Medical Doctor, corpses with the "...and their soul has departed" description no longer have a ghost attached to them and can't be revived.
@@ -289,3 +291,26 @@ You don't need to destroy a Spacecoin machine to make your funds stop draining.
As a Bitrunner, upgrading your quantum server will increase rewards and reduce downtime.
As a Bitrunner, your avatar has a domain info ability which will give you clues to help complete virtual domains.
Bitrunning is a crime.
+You can right click someone with wire cutters, jaws of life, and box cutters to instantly snap cablecuffs or zipties. The jaws can even instantly break handcuffs!
+You can alt-click tank transfer valves to remove a tank from them.
+You can use a multitool in your hand to track the area's local APC.
+Some items, when examined, are labeled as 'crafting components', which means you can smack them with another item to directly construct a recipe. Try using an igniter on a rod!
+You can further the cycle of life by having two adult plushies play with eachother, creating a smaller junior child plushie.
+Most species have only 32 teeth for use in dental implants. Moths have none. Lizards have seventy five.
+As a Changeling, Repurposed Glands will break bolas, disable stuns, and give you a hefty speed boost at the cost of the use of your arms - which includes the ability to open restricted airlocks.
+As a Geneticist, you should usually save all mutations you unlock. Negative mutations will increase your genetic stability, allowing you to keep more positive mutations.
+You can craft peg limbs and crutches with wood for use in dire circumstances. The latter are also available in medical vendors.
+As a Heretic, you can also sacrifice cultists, rewarding you with a knowledge point and one of three unique, powerful rewards.
+As a Cultist, if you manage to sacrifice a Heretic, you will unlock one of three powerful and unique items to be created in every one of your cult's forges, archives, or altars.
+As a Cultist, when you sacrifice a Heretic, they will be bound inside a powerful haunted longsword. Anyone can then unbind the blade, unlocking its powers and abilities, but also allowing the blade to act of its own free will.
+As a Syndicate Monkey, you're explosively allergic to species transformations and should probably avoid them.
+Biological armor will protect your limb from a zombie's infective attack, unless the limb's more damaged than the armor value. Armor with thick material, such as firesuits and EVA suits, also partially protects, preventing at least the first attack from infection.
+In a pinch, you can reduce bleeding or burn infection with several commonplace reagents - flour, salt, saltwater can all be splashed onto the wound to stall for time, and tea can be drank for a boost to your body's defences.
+First-aid analyzers double the speed of wound treatment on injuries, alongside giving out normal and improvised instructions for treatment.
+Syndicate Duffelbags are a lot quicker to zip and unzip, have significantly less slowdown, and can carry up to two of various bulky, objective-related items - such as fire axes, guns, or gibtonite. Examine them closely to see all the possibilities.
+The Coroner's surgical tools are considered 'cruel implements', which speeds up surgery on corpses but slows it on not-yet-corpses. A few other items also have it.
+As a Coroner, remember that your autopsy scanner also works as an advanced health analyzer on right-click, but only for corpses.
+As the Captain, your sabre deals extra damage to Assistants (as long as they have their original liver).
+You can automatically extract and retract arm implants by 'activating' the empty hand they're on. This includes integrated toolsets, cursed katanas, and vorpal scythes.
+You can combine the Carpet reagent with various different reagents, such as Oil and Cyanide, to create unique carpet types.
+You can bake a birthday cake and then microwave it to create a legendary cake hat. You can then combine it with an energy sword to create an energy cake.
diff --git a/tgstation.dme b/tgstation.dme
index 2b1b2bee5ac89..cd81e3073819a 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -245,6 +245,7 @@
#include "code\__DEFINES\time.dm"
#include "code\__DEFINES\tools.dm"
#include "code\__DEFINES\toys.dm"
+#include "code\__DEFINES\tracy.dm"
#include "code\__DEFINES\trader.dm"
#include "code\__DEFINES\transport.dm"
#include "code\__DEFINES\tts.dm"
@@ -352,6 +353,7 @@
#include "code\__DEFINES\dcs\signals\signals_restaurant.dm"
#include "code\__DEFINES\dcs\signals\signals_scangate.dm"
#include "code\__DEFINES\dcs\signals\signals_screentips.dm"
+#include "code\__DEFINES\dcs\signals\signals_shuttle.dm"
#include "code\__DEFINES\dcs\signals\signals_spatial_grid.dm"
#include "code\__DEFINES\dcs\signals\signals_species.dm"
#include "code\__DEFINES\dcs\signals\signals_spell.dm"
@@ -423,6 +425,7 @@
#include "code\__DEFINES\~doppler_defines\mobs.dm"
#include "code\__DEFINES\~doppler_defines\mutant_blacklists.dm"
#include "code\__DEFINES\~doppler_defines\mutant_variations.dm"
+#include "code\__DEFINES\~doppler_defines\ntnrc.dm"
#include "code\__DEFINES\~doppler_defines\obj_flags_doppler.dm"
#include "code\__DEFINES\~doppler_defines\organ_slots.dm"
#include "code\__DEFINES\~doppler_defines\preferences.dm"
@@ -442,6 +445,7 @@
#include "code\__DEFINES\~doppler_defines\traits.dm"
#include "code\__DEFINES\~doppler_defines\vv.dm"
#include "code\__DEFINES\~doppler_defines\wounds.dm"
+#include "code\__DEFINES\~doppler_defines\traits\declarations.dm"
#include "code\__HELPERS\_auxtools_api.dm"
#include "code\__HELPERS\_dreamluau.dm"
#include "code\__HELPERS\_lists.dm"
@@ -480,6 +484,7 @@
#include "code\__HELPERS\heap.dm"
#include "code\__HELPERS\hearted.dm"
#include "code\__HELPERS\honkerblast.dm"
+#include "code\__HELPERS\hud.dm"
#include "code\__HELPERS\icon_smoothing.dm"
#include "code\__HELPERS\icons.dm"
#include "code\__HELPERS\jatum.dm"
@@ -509,6 +514,7 @@
#include "code\__HELPERS\screen_objs.dm"
#include "code\__HELPERS\see_through_maps.dm"
#include "code\__HELPERS\shell.dm"
+#include "code\__HELPERS\shuttle.dm"
#include "code\__HELPERS\spatial_info.dm"
#include "code\__HELPERS\spawns.dm"
#include "code\__HELPERS\stack_trace.dm"
@@ -573,6 +579,7 @@
#include "code\_globalvars\lighting.dm"
#include "code\_globalvars\logging.dm"
#include "code\_globalvars\phobias.dm"
+#include "code\_globalvars\pipe_info.dm"
#include "code\_globalvars\rcd.dm"
#include "code\_globalvars\religion.dm"
#include "code\_globalvars\silo.dm"
@@ -595,6 +602,7 @@
#include "code\_globalvars\lists\names.dm"
#include "code\_globalvars\lists\objects.dm"
#include "code\_globalvars\lists\ores_spawned.dm"
+#include "code\_globalvars\lists\pipe_recipes.dm"
#include "code\_globalvars\lists\plumbing.dm"
#include "code\_globalvars\lists\poll_ignore.dm"
#include "code\_globalvars\lists\quirks.dm"
@@ -1101,6 +1109,7 @@
#include "code\datums\components\amputating_limbs.dm"
#include "code\datums\components\anti_magic.dm"
#include "code\datums\components\appearance_on_aggro.dm"
+#include "code\datums\components\aquarium.dm"
#include "code\datums\components\aquarium_content.dm"
#include "code\datums\components\area_based_godmode.dm"
#include "code\datums\components\area_sound_manager.dm"
@@ -1208,6 +1217,7 @@
#include "code\datums\components\interaction_booby_trap.dm"
#include "code\datums\components\irradiated.dm"
#include "code\datums\components\item_equipped_movement_rustle.dm"
+#include "code\datums\components\item_killsound.dm"
#include "code\datums\components\itembound.dm"
#include "code\datums\components\itempicky.dm"
#include "code\datums\components\jetpack.dm"
@@ -1344,6 +1354,7 @@
#include "code\datums\components\transforming.dm"
#include "code\datums\components\trapdoor.dm"
#include "code\datums\components\tree_climber.dm"
+#include "code\datums\components\tug_towards.dm"
#include "code\datums\components\twohanded.dm"
#include "code\datums\components\udder.dm"
#include "code\datums\components\unbreakable.dm"
@@ -1435,6 +1446,7 @@
#include "code\datums\diseases\rhumba_beat.dm"
#include "code\datums\diseases\transformation.dm"
#include "code\datums\diseases\tuberculosis.dm"
+#include "code\datums\diseases\weightlessness.dm"
#include "code\datums\diseases\wizarditis.dm"
#include "code\datums\diseases\advance\advance.dm"
#include "code\datums\diseases\advance\presets.dm"
@@ -1566,7 +1578,6 @@
#include "code\datums\elements\kneecapping.dm"
#include "code\datums\elements\kneejerk.dm"
#include "code\datums\elements\knockback.dm"
-#include "code\datums\elements\lazy_fishing_spot.dm"
#include "code\datums\elements\leeching_walk.dm"
#include "code\datums\elements\lifesteal.dm"
#include "code\datums\elements\light_blocking.dm"
@@ -1713,6 +1724,7 @@
#include "code\datums\looping_sounds\acid.dm"
#include "code\datums\looping_sounds\breathing.dm"
#include "code\datums\looping_sounds\burning.dm"
+#include "code\datums\looping_sounds\changeling_absorb.dm"
#include "code\datums\looping_sounds\choking.dm"
#include "code\datums\looping_sounds\cyborg.dm"
#include "code\datums\looping_sounds\item_sounds.dm"
@@ -1791,9 +1803,10 @@
#include "code\datums\proximity_monitor\proximity_monitor.dm"
#include "code\datums\proximity_monitor\fields\ai_target_tracking.dm"
#include "code\datums\proximity_monitor\fields\gravity.dm"
-#include "code\datums\proximity_monitor\fields\projectile_dampener.dm"
#include "code\datums\proximity_monitor\fields\timestop.dm"
#include "code\datums\proximity_monitor\fields\void_storm.dm"
+#include "code\datums\proximity_monitor\fields\projectile_dampener\projectile_dampener.dm"
+#include "code\datums\proximity_monitor\fields\projectile_dampener\projectile_dampener_effects.dm"
#include "code\datums\quirks\_quirk.dm"
#include "code\datums\quirks\_quirk_constant_data.dm"
#include "code\datums\quirks\negative_quirks\addict.dm"
@@ -1931,6 +1944,7 @@
#include "code\datums\status_effects\_status_effect_helpers.dm"
#include "code\datums\status_effects\agent_pinpointer.dm"
#include "code\datums\status_effects\buffs.dm"
+#include "code\datums\status_effects\death_sound.dm"
#include "code\datums\status_effects\drug_effects.dm"
#include "code\datums\status_effects\gas.dm"
#include "code\datums\status_effects\grouped_effect.dm"
@@ -2315,6 +2329,7 @@
#include "code\game\objects\effects\poster_motivational.dm"
#include "code\game\objects\effects\powerup.dm"
#include "code\game\objects\effects\rcd.dm"
+#include "code\game\objects\effects\shared_particle_holder.dm"
#include "code\game\objects\effects\spiderwebs.dm"
#include "code\game\objects\effects\step_triggers.dm"
#include "code\game\objects\effects\wanted_poster.dm"
@@ -3979,6 +3994,7 @@
#include "code\modules\clothing\head\mind_monkey_helmet.dm"
#include "code\modules\clothing\head\moth.dm"
#include "code\modules\clothing\head\papersack.dm"
+#include "code\modules\clothing\head\perceptomatrix.dm"
#include "code\modules\clothing\head\pirate.dm"
#include "code\modules\clothing\head\religious.dm"
#include "code\modules\clothing\head\soft_caps.dm"
@@ -4849,6 +4865,8 @@
#include "code\modules\mob\dead\observer\observer_say.dm"
#include "code\modules\mob\dead\observer\orbit.dm"
#include "code\modules\mob\eye\eye.dm"
+#include "code\modules\mob\eye\camera\camera.dm"
+#include "code\modules\mob\eye\camera\remote.dm"
#include "code\modules\mob\living\blood.dm"
#include "code\modules\mob\living\damage_procs.dm"
#include "code\modules\mob\living\death.dm"
@@ -4903,6 +4921,9 @@
#include "code\modules\mob\living\basic\bots\hygienebot\hygienebot_ai.dm"
#include "code\modules\mob\living\basic\bots\medbot\medbot.dm"
#include "code\modules\mob\living\basic\bots\medbot\medbot_ai.dm"
+#include "code\modules\mob\living\basic\bots\repairbot\repairbot.dm"
+#include "code\modules\mob\living\basic\bots\repairbot\repairbot_abilities.dm"
+#include "code\modules\mob\living\basic\bots\repairbot\repairbot_ai.dm"
#include "code\modules\mob\living\basic\bots\vibebot\vibebot.dm"
#include "code\modules\mob\living\basic\bots\vibebot\vibebot_abilities.dm"
#include "code\modules\mob\living\basic\bots\vibebot\vibebot_ai.dm"
@@ -5357,7 +5378,6 @@
#include "code\modules\mob\living\simple_animal\bot\bot_announcement.dm"
#include "code\modules\mob\living\simple_animal\bot\construction.dm"
#include "code\modules\mob\living\simple_animal\bot\ed209bot.dm"
-#include "code\modules\mob\living\simple_animal\bot\floorbot.dm"
#include "code\modules\mob\living\simple_animal\bot\mulebot.dm"
#include "code\modules\mob\living\simple_animal\bot\secbot.dm"
#include "code\modules\mob\living\simple_animal\bot\SuperBeepsky.dm"
@@ -5979,28 +5999,32 @@
#include "code\modules\research\xenobiology\vatgrowing\samples\viruses\_virus.dm"
#include "code\modules\security_levels\keycard_authentication.dm"
#include "code\modules\security_levels\security_level_datums.dm"
-#include "code\modules\shuttle\arrivals.dm"
-#include "code\modules\shuttle\assault_pod.dm"
-#include "code\modules\shuttle\battlecruiser_starfury.dm"
-#include "code\modules\shuttle\computer.dm"
-#include "code\modules\shuttle\docking.dm"
-#include "code\modules\shuttle\elevator.dm"
-#include "code\modules\shuttle\emergency.dm"
-#include "code\modules\shuttle\ferry.dm"
-#include "code\modules\shuttle\infiltrator.dm"
-#include "code\modules\shuttle\manipulator.dm"
-#include "code\modules\shuttle\medisim.dm"
-#include "code\modules\shuttle\monastery.dm"
-#include "code\modules\shuttle\navigation_computer.dm"
-#include "code\modules\shuttle\on_move.dm"
-#include "code\modules\shuttle\ripple.dm"
#include "code\modules\shuttle\shuttle.dm"
-#include "code\modules\shuttle\shuttle_rotate.dm"
-#include "code\modules\shuttle\spaceship_navigation_beacon.dm"
-#include "code\modules\shuttle\special.dm"
-#include "code\modules\shuttle\supply.dm"
-#include "code\modules\shuttle\syndicate.dm"
-#include "code\modules\shuttle\white_ship.dm"
+#include "code\modules\shuttle\misc\manipulator.dm"
+#include "code\modules\shuttle\misc\medisim.dm"
+#include "code\modules\shuttle\misc\ripple.dm"
+#include "code\modules\shuttle\misc\spaceship_navigation_beacon.dm"
+#include "code\modules\shuttle\misc\special.dm"
+#include "code\modules\shuttle\mobile_port\mobile_port.dm"
+#include "code\modules\shuttle\mobile_port\shuttle_move.dm"
+#include "code\modules\shuttle\mobile_port\shuttle_move_callbacks.dm"
+#include "code\modules\shuttle\mobile_port\shuttle_rotate_callbacks.dm"
+#include "code\modules\shuttle\mobile_port\variants\arrivals.dm"
+#include "code\modules\shuttle\mobile_port\variants\assault_pod.dm"
+#include "code\modules\shuttle\mobile_port\variants\battlecruiser_starfury.dm"
+#include "code\modules\shuttle\mobile_port\variants\elevator.dm"
+#include "code\modules\shuttle\mobile_port\variants\ferry.dm"
+#include "code\modules\shuttle\mobile_port\variants\infiltrator.dm"
+#include "code\modules\shuttle\mobile_port\variants\supply.dm"
+#include "code\modules\shuttle\mobile_port\variants\emergency\emergency.dm"
+#include "code\modules\shuttle\mobile_port\variants\emergency\emergency_console.dm"
+#include "code\modules\shuttle\mobile_port\variants\emergency\emergency_types.dm"
+#include "code\modules\shuttle\mobile_port\variants\emergency\pods.dm"
+#include "code\modules\shuttle\shuttle_consoles\monastery.dm"
+#include "code\modules\shuttle\shuttle_consoles\navigation_computer.dm"
+#include "code\modules\shuttle\shuttle_consoles\shuttle_console.dm"
+#include "code\modules\shuttle\shuttle_consoles\syndicate.dm"
+#include "code\modules\shuttle\shuttle_consoles\white_ship.dm"
#include "code\modules\shuttle\shuttle_events\_shuttle_events.dm"
#include "code\modules\shuttle\shuttle_events\blackhole.dm"
#include "code\modules\shuttle\shuttle_events\carp.dm"
@@ -6010,6 +6034,8 @@
#include "code\modules\shuttle\shuttle_events\player_controlled.dm"
#include "code\modules\shuttle\shuttle_events\projectile.dm"
#include "code\modules\shuttle\shuttle_events\turbulence.dm"
+#include "code\modules\shuttle\stationary_port\port_types.dm"
+#include "code\modules\shuttle\stationary_port\stationary_port.dm"
#include "code\modules\spatial_grid\cell_tracker.dm"
#include "code\modules\spells\spell.dm"
#include "code\modules\spells\spell_types\madness_curse.dm"
@@ -6177,7 +6203,6 @@
#include "code\modules\surgery\organs\external\wings\functional_wings.dm"
#include "code\modules\surgery\organs\external\wings\moth_wings.dm"
#include "code\modules\surgery\organs\external\wings\wings.dm"
-#include "code\modules\surgery\organs\internal\_internal_organ.dm"
#include "code\modules\surgery\organs\internal\appendix\_appendix.dm"
#include "code\modules\surgery\organs\internal\appendix\appendix_golem.dm"
#include "code\modules\surgery\organs\internal\cyberimp\augments_arms.dm"
@@ -6362,6 +6387,7 @@
#include "code\modules\vending\liberation.dm"
#include "code\modules\vending\liberation_toy.dm"
#include "code\modules\vending\magivend.dm"
+#include "code\modules\vending\mail.dm"
#include "code\modules\vending\medical.dm"
#include "code\modules\vending\medical_wall.dm"
#include "code\modules\vending\megaseed.dm"
@@ -6555,6 +6581,8 @@
#include "modular_doppler\autotransfer\autotransfer_config.dm"
#include "modular_doppler\autotransfer\shuttle.dm"
#include "modular_doppler\autotransfer\transfer_vote.dm"
+#include "modular_doppler\bitrunning_prefs_disks\code\disks\prefs_disk.dm"
+#include "modular_doppler\bitrunning_prefs_disks\code\outfit_overrides\bitrunner_outfit_override.dm"
#include "modular_doppler\cell_component\code\cell_component.dm"
#include "modular_doppler\colony_fabricator\code\cargo_packs.dm"
#include "modular_doppler\colony_fabricator\code\colony_fabricator.dm"
@@ -6610,21 +6638,21 @@
#include "modular_doppler\cryosleep\code\mood.dm"
#include "modular_doppler\cryosleep\code\objective.dm"
#include "modular_doppler\cryosleep\code\objects\structures\signs\signs_maps.dm"
+#include "modular_doppler\deathmatch\deathmatch_loadouts.dm"
+#include "modular_doppler\deathmatch\deathmatch_maps.dm"
+#include "modular_doppler\deathmatch\deathmatch_structures.dm"
#include "modular_doppler\deforest_medical_items\code\cargo_packs.dm"
#include "modular_doppler\deforest_medical_items\code\healing_stack_items.dm"
#include "modular_doppler\deforest_medical_items\code\illegal_injectors.dm"
#include "modular_doppler\deforest_medical_items\code\injectors.dm"
-#include "modular_doppler\deforest_medical_items\code\medstation.dm"
#include "modular_doppler\deforest_medical_items\code\storage_items.dm"
#include "modular_doppler\deforest_medical_items\code\storage_items_robotics.dm"
#include "modular_doppler\deforest_medical_items\code\synth_healing.dm"
#include "modular_doppler\deforest_medical_items\code\treatment_zone_projector.dm"
#include "modular_doppler\deforest_medical_items\code\vulnerable_status_effect.dm"
#include "modular_doppler\deforest_medical_items\code\chemicals\demoneye.dm"
-#include "modular_doppler\deforest_medical_items\code\chemicals\twitch.dm"
-#include "modular_doppler\deforest_medical_items\code\medstation_designs\blood.dm"
-#include "modular_doppler\deforest_medical_items\code\medstation_designs\medical.dm"
#include "modular_doppler\disable_suicide\config_entries.dm"
+#include "modular_doppler\doppler_command_uniforms\hop\overrides.dm"
#include "modular_doppler\dopplerboop\dopplerboops.dm"
#include "modular_doppler\dopplerboop\human.dm"
#include "modular_doppler\emotes\code\emotes.dm"
@@ -6635,6 +6663,26 @@
#include "modular_doppler\emotes\code\overlay_emotes\overlay_emotes.dm"
#include "modular_doppler\enterprise_resource_planning\code\breasts.dm"
#include "modular_doppler\enterprise_resource_planning\code\erp_prefs.dm"
+#include "modular_doppler\epic_loot\code\_basetype.dm"
+#include "modular_doppler\epic_loot\code\random_spawners_real.dm"
+#include "modular_doppler\epic_loot\code\where_they_spawn.dm"
+#include "modular_doppler\epic_loot\code\loot_items\components.dm"
+#include "modular_doppler\epic_loot\code\loot_items\electronics.dm"
+#include "modular_doppler\epic_loot\code\loot_items\medical.dm"
+#include "modular_doppler\epic_loot\code\loot_items\valuables.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\ammo_box.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\computer_tower.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\files.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\grenade_box.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\gun_case.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\large_crate.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\medbox.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\military_case.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\register.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\safe.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\toolbox.dm"
+#include "modular_doppler\epic_loot\code\loot_structures\wall_jackets.dm"
+#include "modular_doppler\epic_loot\code\storage_containers\containers.dm"
#include "modular_doppler\examinemore\code\examine_more.dm"
#include "modular_doppler\face_mouse_preferences\code\face_mouse_pref.dm"
#include "modular_doppler\flavortext_and_records\code\defines.dm"
@@ -6702,6 +6750,7 @@
#include "modular_doppler\hearthkin\tribal_extended\code\weapons\sword.dm"
#include "modular_doppler\height_scaling\code\icons.dm"
#include "modular_doppler\height_scaling\code\preferences.dm"
+#include "modular_doppler\human_health_maximum\code\to_the_limit.dm"
#include "modular_doppler\icspawn\cconsultant_items.dm"
#include "modular_doppler\icspawn\observer_spawn.dm"
#include "modular_doppler\icspawn\spell.dm"
@@ -6800,12 +6849,16 @@
#include "modular_doppler\modular_cosmetics\code\jacket_pockets.dm"
#include "modular_doppler\modular_cosmetics\code\towels.dm"
#include "modular_doppler\modular_cosmetics\code\uniform_overrides.dm"
+#include "modular_doppler\modular_cosmetics\code\belt\crusaderbelt.dm"
#include "modular_doppler\modular_cosmetics\code\belt\med_bandolier.dm"
#include "modular_doppler\modular_cosmetics\code\face\basemasks.dm"
#include "modular_doppler\modular_cosmetics\code\face\glasses.dm"
#include "modular_doppler\modular_cosmetics\code\face\masks.dm"
+#include "modular_doppler\modular_cosmetics\code\face\papermask.dm"
#include "modular_doppler\modular_cosmetics\code\hands\gloves.dm"
#include "modular_doppler\modular_cosmetics\code\hands\rings.dm"
+#include "modular_doppler\modular_cosmetics\code\hands\special.dm"
+#include "modular_doppler\modular_cosmetics\code\hats\civilian.dm"
#include "modular_doppler\modular_cosmetics\code\hats\doppler_command_hats.dm"
#include "modular_doppler\modular_cosmetics\code\head\bows.dm"
#include "modular_doppler\modular_cosmetics\code\head\hair_tie.dm"
@@ -6817,6 +6870,7 @@
#include "modular_doppler\modular_cosmetics\code\plushies\plushes.dm"
#include "modular_doppler\modular_cosmetics\code\shoes\baseshoes.dm"
#include "modular_doppler\modular_cosmetics\code\shoes\gags_shoes.dm"
+#include "modular_doppler\modular_cosmetics\code\shoes\galoshes.dm"
#include "modular_doppler\modular_cosmetics\code\storage\backpacks.dm"
#include "modular_doppler\modular_cosmetics\code\storage\belts.dm"
#include "modular_doppler\modular_cosmetics\code\storage\rings.dm"
@@ -6828,6 +6882,7 @@
#include "modular_doppler\modular_cosmetics\code\suits\shirts.dm"
#include "modular_doppler\modular_cosmetics\code\under\doppler_uniforms.dm"
#include "modular_doppler\modular_cosmetics\code\under\dresses.dm"
+#include "modular_doppler\modular_cosmetics\code\under\formal.dm"
#include "modular_doppler\modular_cosmetics\code\under\medical_extra.dm"
#include "modular_doppler\modular_cosmetics\code\under\miscellania.dm"
#include "modular_doppler\modular_cosmetics\code\under\pants.dm"
@@ -6871,7 +6926,6 @@
#include "modular_doppler\modular_customization\accessories\code\monkey_accessories\monkey_tail.dm"
#include "modular_doppler\modular_customization\accessories\code\moth_accessories\moth_antennae.dm"
#include "modular_doppler\modular_customization\accessories\code\moth_accessories\moth_fluff.dm"
-#include "modular_doppler\modular_customization\accessories\code\moth_accessories\moth_wings.dm"
#include "modular_doppler\modular_customization\accessories\code\non_species_specific\avian_accessories\avian_ears.dm"
#include "modular_doppler\modular_customization\accessories\code\non_species_specific\avian_accessories\avian_fluff.dm"
#include "modular_doppler\modular_customization\accessories\code\non_species_specific\avian_accessories\avian_snout.dm"
@@ -6968,6 +7022,7 @@
#include "modular_doppler\modular_items\aac_device.dm"
#include "modular_doppler\modular_items\bettermed_overrides.dm"
#include "modular_doppler\modular_items\conversion_kits.dm"
+#include "modular_doppler\modular_items\emergency_breach_equipment.dm"
#include "modular_doppler\modular_items\invisible_gear.dm"
#include "modular_doppler\modular_items\shipchem_overrides.dm"
#include "modular_doppler\modular_items\hairbrush\code\hairbrush.dm"
@@ -7021,14 +7076,18 @@
#include "modular_doppler\modular_quirks\breather\nitrogen_breather\nitrogen_breather.dm"
#include "modular_doppler\modular_quirks\breather\nitrogen_breather\nitrogen_tanks.dm"
#include "modular_doppler\modular_quirks\breather\water_breather\water_breather.dm"
+#include "modular_doppler\modular_quirks\cybernetic_limb_mounts\cybernetic_limb_mounts.dm"
#include "modular_doppler\modular_quirks\entombed\code\entombed.dm"
#include "modular_doppler\modular_quirks\entombed\code\entombed_alt_actions.dm"
#include "modular_doppler\modular_quirks\entombed\code\entombed_mod.dm"
+#include "modular_doppler\modular_quirks\evil_replacements\bad_vibes.dm"
+#include "modular_doppler\modular_quirks\evil_replacements\unholy_aura.dm"
#include "modular_doppler\modular_quirks\excitable\excitable.dm"
#include "modular_doppler\modular_quirks\fragility\code\fragile.dm"
#include "modular_doppler\modular_quirks\hardened_soles\hardened_soles.dm"
#include "modular_doppler\modular_quirks\left_handed\left_handed.dm"
#include "modular_doppler\modular_quirks\linguist\linguist.dm"
+#include "modular_doppler\modular_quirks\narcolepsy\narcolepsy.dm"
#include "modular_doppler\modular_quirks\night_vision\night_vision.dm"
#include "modular_doppler\modular_quirks\overwrites\equipping.dm"
#include "modular_doppler\modular_quirks\overwrites\musician.dm"
@@ -7039,6 +7098,7 @@
#include "modular_doppler\modular_quirks\paycheck_rations\code\tickets.dm"
#include "modular_doppler\modular_quirks\permitted_cybernetic\permitted_cybernetic.dm"
#include "modular_doppler\modular_quirks\permitted_cybernetic\code\preferences.dm"
+#include "modular_doppler\modular_quirks\system_shock\system_shock.dm"
#include "modular_doppler\modular_sounds\code\sounds.dm"
#include "modular_doppler\modular_species\_species.dm"
#include "modular_doppler\modular_species\code\bloodsplatter.dm"
@@ -7105,14 +7165,17 @@
#include "modular_doppler\modular_weapons\company_and_or_faction_based\carwo_defense_systems\gunsets.dm"
#include "modular_doppler\modular_weapons\manufacturer_examine\code\gun_company_additions.dm"
#include "modular_doppler\modular_weapons\manufacturer_examine\code\manufacturer_element.dm"
+#include "modular_doppler\ntnrc_for_all\code\common_chat.dm"
+#include "modular_doppler\ntnrc_for_all\code\ntnrc_client_edits.dm"
+#include "modular_doppler\ntnrc_for_all\code\pda_prefs_edits.dm"
+#include "modular_doppler\ntnrc_for_all\code\ss_modular_computers_edits.dm"
+#include "modular_doppler\ntnrc_for_all\code\username_prefs.dm"
#include "modular_doppler\obj_flags_doppler\code\objs.dm"
#include "modular_doppler\objects_and_structures\code\flora.dm"
#include "modular_doppler\objects_and_structures\code\icemoon_tiles.dm"
#include "modular_doppler\objects_and_structures\code\mannequin.dm"
#include "modular_doppler\objects_and_structures\code\sauna_oven.dm"
-#include "modular_doppler\objects_and_structures\code\structure.dm"
#include "modular_doppler\objects_and_structures\code\towel_bins.dm"
-#include "modular_doppler\objects_and_structures\code\trash_pile.dm"
#include "modular_doppler\objects_and_structures\code\watercloset.dm"
#include "modular_doppler\pixel_shift\living.dm"
#include "modular_doppler\pixel_shift\living_movement.dm"
@@ -7137,9 +7200,11 @@
#include "modular_doppler\religion\code\mind.dm"
#include "modular_doppler\religion\code\religious_sects.dm"
#include "modular_doppler\research\designs\limbgrower_designs.dm"
+#include "modular_doppler\sprite_swaps\code\bigclosets.dm"
#include "modular_doppler\stone\code\ore_veins.dm"
#include "modular_doppler\stone\code\stone.dm"
#include "modular_doppler\tableflip\tableflip.dm"
+#include "modular_doppler\the-business\code\twitch.dm"
#include "modular_doppler\time_clock\code\console.dm"
#include "modular_doppler\time_clock\code\console_tgui.dm"
#include "modular_doppler\time_clock\code\mind.dm"
diff --git a/tgui/package.json b/tgui/package.json
index 57d02a389d267..f89241c5a3f2e 100644
--- a/tgui/package.json
+++ b/tgui/package.json
@@ -45,7 +45,7 @@
"mini-css-extract-plugin": "^2.9.2",
"prettier": "^3.2.5",
"sass": "^1.80.6",
- "sass-loader": "^14.2.1",
+ "sass-loader": "^16.0.3",
"style-loader": "^4.0.0",
"swc-loader": "^0.2.6",
"typescript": "^5.6.3",
diff --git a/tgui/packages/tgui-panel/package.json b/tgui/packages/tgui-panel/package.json
index 325e2fde7ca48..f761ce3c61681 100644
--- a/tgui/packages/tgui-panel/package.json
+++ b/tgui/packages/tgui-panel/package.json
@@ -11,6 +11,7 @@
"react-dom": "^18.3.1",
"tgui": "workspace:*",
"tgui-dev-server": "workspace:*",
- "tgui-polyfill": "workspace:*"
+ "tgui-polyfill": "workspace:*",
+ "tgui-styles": "^0.0.10"
}
}
diff --git a/tgui/packages/tgui-panel/styles/components/Chat.scss b/tgui/packages/tgui-panel/styles/components/Chat.scss
index b439ace8c58f1..882f86a7aaacb 100644
--- a/tgui/packages/tgui-panel/styles/components/Chat.scss
+++ b/tgui/packages/tgui-panel/styles/components/Chat.scss
@@ -8,7 +8,7 @@
@use '~tgui/styles/base.scss';
@use '~tgui/styles/colors.scss';
-$text-color: #abc6ec !default;
+$text-color: hsl(210, 50%, 80%) !default;
$color-bg-section: base.$color-bg-section !default;
.Chat {
@@ -21,11 +21,11 @@ $color-bg-section: base.$color-bg-section !default;
font-size: 0.7em;
padding: 0.2em 0.3em;
line-height: 1;
- color: white;
+ color: hsl(0, 0%, 100%);
text-align: center;
white-space: nowrap;
vertical-align: middle;
- background-color: crimson;
+ background-color: hsl(348, 83%, 47%);
border-radius: 10px;
transition: font-size 200ms ease-out;
@@ -68,12 +68,12 @@ $color-bg-section: base.$color-bg-section !default;
}
.Chat__highlight {
- color: #000;
+ color: hsl(0, 0%, 0%);
}
.Chat__highlight--restricted {
- color: #fff;
- background-color: #a00;
+ color: hsl(0, 0%, 100%);
+ background-color: hsl(0, 100%, 33.3%);
font-weight: bold;
}
@@ -83,7 +83,7 @@ $color-bg-section: base.$color-bg-section !default;
.ChatMessage--highlighted {
position: relative;
- border-left: math.div(1em, 6) solid rgba(255, 221, 68);
+ border-left: math.div(1em, 6) solid hsl(50, 100%, 63.5%);
padding-left: 0.5em;
&:after {
@@ -93,7 +93,7 @@ $color-bg-section: base.$color-bg-section !default;
bottom: 0;
left: 0;
right: 0;
- background-color: rgba(255, 221, 68, 0.1);
+ background-color: hsla(50, 100%, 63.5%, 0.1);
// Make this click-through since this is an overlay
pointer-events: none;
}
diff --git a/tgui/packages/tgui-panel/styles/components/Notifications.scss b/tgui/packages/tgui-panel/styles/components/Notifications.scss
index f3669967fd70c..2e99e59a20aa0 100644
--- a/tgui/packages/tgui-panel/styles/components/Notifications.scss
+++ b/tgui/packages/tgui-panel/styles/components/Notifications.scss
@@ -11,8 +11,8 @@
}
.Notification {
- color: #fff;
- background-color: crimson;
+ color: hsl(0, 0%, 100%);
+ background-color: hsl(348, 83%, 47%);
padding: 0.5em;
margin: 1em 0;
diff --git a/tgui/packages/tgui-panel/styles/components/Ping.scss b/tgui/packages/tgui-panel/styles/components/Ping.scss
index 251b0fd953912..292caf11105e0 100644
--- a/tgui/packages/tgui-panel/styles/components/Ping.scss
+++ b/tgui/packages/tgui-panel/styles/components/Ping.scss
@@ -23,6 +23,6 @@ $border-color: rgba(140, 140, 140, 0.5) !default;
left: 0.5em;
width: 0.5em;
height: 0.5em;
- background-color: #888;
+ background-color: hsl(0, 0%, 53.3%);
border-radius: 0.25em;
}
diff --git a/tgui/packages/tgui-panel/styles/main.scss b/tgui/packages/tgui-panel/styles/main.scss
index 08e60d18ee6a3..60198a654b930 100644
--- a/tgui/packages/tgui-panel/styles/main.scss
+++ b/tgui/packages/tgui-panel/styles/main.scss
@@ -5,11 +5,13 @@
@use 'sass:meta';
@use 'sass:color';
+// Components
+@use 'pkg:tgui-styles';
@use '~tgui/styles/colors.scss';
@use '~tgui/styles/base.scss' with (
- $color-bg: #202020,
- $color-bg-section: color.adjust(#202020, $lightness: -5%),
+ $color-bg: hsl(0, 0%, 12.5%),
+ $color-bg-section: color.adjust(hsl(0, 0%, 12.5%), $lightness: -5%),
$color-bg-grad-spread: 0%
);
@@ -23,29 +25,6 @@
@include meta.load-css('~tgui/styles/atomic/outline.scss');
@include meta.load-css('~tgui/styles/atomic/text.scss');
-// Components
-@include meta.load-css('~tgui/styles/components/BlockQuote.scss');
-@include meta.load-css('~tgui/styles/components/Button.scss');
-@include meta.load-css('~tgui/styles/components/ColorBox.scss');
-@include meta.load-css('~tgui/styles/components/Dimmer.scss');
-@include meta.load-css('~tgui/styles/components/Divider.scss');
-@include meta.load-css('~tgui/styles/components/Dropdown.scss');
-@include meta.load-css('~tgui/styles/components/Flex.scss');
-@include meta.load-css('~tgui/styles/components/Input.scss');
-@include meta.load-css('~tgui/styles/components/Knob.scss');
-@include meta.load-css('~tgui/styles/components/LabeledList.scss');
-@include meta.load-css('~tgui/styles/components/Modal.scss');
-@include meta.load-css('~tgui/styles/components/NoticeBox.scss');
-@include meta.load-css('~tgui/styles/components/NumberInput.scss');
-@include meta.load-css('~tgui/styles/components/ProgressBar.scss');
-@include meta.load-css('~tgui/styles/components/Section.scss');
-@include meta.load-css('~tgui/styles/components/Slider.scss');
-@include meta.load-css('~tgui/styles/components/Stack.scss');
-@include meta.load-css('~tgui/styles/components/Table.scss');
-@include meta.load-css('~tgui/styles/components/Tabs.scss');
-@include meta.load-css('~tgui/styles/components/TextArea.scss');
-@include meta.load-css('~tgui/styles/components/Tooltip.scss');
-
// Components specific to tgui-panel
@include meta.load-css('./components/Chat.scss');
@include meta.load-css('./components/Ping.scss');
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
index c1cb06cff3ae2..5329e25487006 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
@@ -27,15 +27,15 @@ img.icon {
}
a {
- color: #397ea5;
+ color: hsl(201.7, 48.6%, 43.5%);
}
a.visited {
- color: #7c00e6;
+ color: hsl(272.3, 100%, 45.1%);
}
a:visited {
- color: #7c00e6;
+ color: hsl(272.3, 100%, 45.1%);
}
a.popt {
@@ -139,7 +139,7 @@ a.popt {
}
.highlightPopup input.highlightColor {
- background-color: #ffff00;
+ background-color: hsl(60, 100%, 50%);
}
.highlightPopup input.highlightTermSubmit {
@@ -199,7 +199,7 @@ a.popt {
/* MOTD */
.motd {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
font-family: Verdana, sans-serif;
white-space: normal;
}
@@ -210,7 +210,7 @@ a.popt {
.motd h4,
.motd h5,
.motd h6 {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
text-decoration: underline;
}
@@ -219,7 +219,7 @@ a.popt {
.motd a:visited,
.motd a:active,
.motd a:hover {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
}
/* ADD HERE FOR BOLD */
@@ -255,13 +255,13 @@ h3,
h4,
h5,
h6 {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
font-family: Georgia, Verdana, sans-serif;
}
h1.alert,
h2.alert {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
}
em {
@@ -270,27 +270,27 @@ em {
}
.ooc {
- color: #cca300;
+ color: hsl(47.9, 100%, 40%);
font-weight: bold;
}
.adminobserverooc {
- color: #0099cc;
+ color: hsl(195, 100%, 40%);
font-weight: bold;
}
.adminooc {
- color: #3d5bc3;
+ color: hsl(226.6, 52.8%, 50.2%);
font-weight: bold;
}
.adminsay {
- color: #ff4500;
+ color: hsl(16.2, 100%, 50%);
font-weight: bold;
}
.admin {
- color: #5975da;
+ color: hsl(227, 63.5%, 60.2%);
font-weight: bold;
}
@@ -306,91 +306,91 @@ em {
}
.deadsay {
- color: #e2c1ff;
+ color: hsl(271.9, 100%, 87.8%);
}
.binarysay {
- color: #1e90ff;
+ color: hsl(209.6, 100%, 55.9%);
}
.binarysay a {
- color: #00ff00;
+ color: hsl(120, 100%, 50%);
}
.binarysay a:active,
.binarysay a:visited {
- color: #88ff88;
+ color: hsl(120, 100%, 76.7%);
}
/* RADIO COLORS */
/* IF YOU CHANGE THIS KEEP IT IN SYNC WITH TGUI CONSTANTS */
.radio {
- color: #1ecc43;
+ color: hsl(132.8, 74.4%, 45.9%);
}
.sciradio {
- color: #c68cfa;
+ color: hsl(271.6, 91.7%, 76.5%);
}
.comradio {
- color: #fcdf03;
+ color: hsl(53, 97.6%, 50%);
}
.secradio {
- color: #dd3535;
+ color: hsl(0, 71.2%, 53.7%);
}
.medradio {
- color: #57b8f0;
+ color: hsl(202, 83.6%, 64.1%);
}
.engradio {
- color: #f37746;
+ color: hsl(17, 87.8%, 61.4%);
}
.suppradio {
- color: #b88646;
+ color: hsl(33.7, 44.9%, 49.8%);
}
.servradio {
- color: #6ca729;
+ color: hsl(88.1, 60.6%, 40.8%);
}
.syndradio {
- color: #8f4a4b;
+ color: hsl(359.1, 31.8%, 42.5%);
}
.gangradio {
- color: #ac2ea1;
+ color: hsl(305.2, 57.8%, 42.7%);
}
.centcomradio {
- color: #2681a5;
+ color: hsl(197, 62.6%, 39.8%);
}
.aiprivradio {
- color: #d65d95;
+ color: hsl(332.2, 59.6%, 60.2%);
}
.enteradio {
- color: #79c5a8;
+ color: hsl(157.1, 39.6%, 62.4%);
}
.redteamradio {
- color: #ff4444 !important;
+ color: hsl(0, 100%, 63.3%) !important;
}
.blueteamradio {
- color: #3434fd !important;
+ color: hsl(240, 98%, 59.8%) !important;
}
.greenteamradio {
- color: #34fd34 !important;
+ color: hsl(120, 98%, 59.8%) !important;
}
.yellowteamradio {
- color: #fdfd34 !important;
+ color: hsl(60, 98%, 59.8%) !important;
}
.yell {
@@ -398,122 +398,122 @@ em {
}
.alert {
- color: #d82020;
+ color: hsl(0, 74.2%, 48.6%);
}
.userdanger {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-weight: bold;
font-size: 185%;
}
.bolddanger {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-weight: bold;
}
.danger {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
}
.tinydanger {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-size: 85%;
}
.smalldanger {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-size: 90%;
}
.warning {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-style: italic;
}
.alertwarning {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
}
.boldwarning {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-style: italic;
font-weight: bold;
}
.announce {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-weight: bold;
}
.boldannounce {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-weight: bold;
}
.minorannounce {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-weight: bold;
font-size: 185%;
}
.minoralert {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
font-size: 125%;
}
.priorityannounce {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
font-weight: bold;
font-size: 225%;
}
.prioritytitle {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
font-weight: bold;
font-size: 185%;
}
.priorityalert {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-size: 140%;
}
.greenannounce {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
font-weight: bold;
}
.rose {
- color: #ff5050;
+ color: hsl(0, 100%, 65.7%);
}
.info {
- color: #9ab0ff;
+ color: hsl(226.9, 100%, 80.2%);
}
.notice {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
}
.tinynotice {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
font-size: 85%;
}
.tinynoticeital {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
font-style: italic;
font-size: 85%;
}
.smallnotice {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
font-size: 90%;
}
.smallnoticeital {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
font-style: italic;
font-size: 90%;
}
@@ -524,218 +524,218 @@ em {
}
.boldnotice {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
font-weight: bold;
}
.hear {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
font-style: italic;
}
.adminnotice {
- color: #6685f5;
+ color: hsl(227, 87.7%, 68%);
}
.adminhelp {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
}
.unconscious {
- color: #a4bad6;
+ color: hsl(213.6, 37.9%, 74.1%);
font-weight: bold;
}
.suicide {
- color: #ff5050;
+ color: hsl(0, 100%, 65.7%);
font-style: italic;
}
.green {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
}
.grey {
- color: #838383;
+ color: hsl(0, 0%, 51.4%);
}
.red {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
}
.blue {
- color: #215cff;
+ color: hsl(224.1, 100%, 56.5%);
}
.nicegreen {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
}
.boldnicegreen {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
font-weight: bold;
}
.blob {
- color: #ee4000;
+ color: hsl(16.1, 100%, 46.7%);
}
.blobannounce {
- color: #556b2f;
+ color: hsl(82, 39%, 30.2%);
font-weight: bold;
font-size: 185%;
}
.cult {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
}
.cult_italic {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-style: italic;
}
.cult_bold {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-style: italic;
font-weight: bold;
}
.cult_bold_italic {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 185%;
}
.cult_large {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 185%;
}
.narsie {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 925%;
}
.narsiesmall {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 370%;
}
.colossus {
- color: #7f282a;
+ color: hsl(358.6, 52.1%, 32.7%);
font-size: 310%;
}
.hierophant {
- color: #b441ee;
+ color: hsl(279.9, 83.6%, 59.4%);
font-weight: bold;
font-style: italic;
}
.hierophant_warning {
- color: #c56bf1;
+ color: hsl(280.3, 82.7%, 68.2%);
font-style: italic;
}
.purple {
- color: #9956d3;
+ color: hsl(272.2, 58.7%, 58.2%);
}
.holoparasite {
- color: #88809c;
+ color: hsl(257.1, 12.4%, 55.7%);
}
.revennotice {
- color: #c099e2;
+ color: hsl(272.1, 55.7%, 74.3%);
}
.revenboldnotice {
- color: #c099e2;
+ color: hsl(272.1, 55.7%, 74.3%);
font-weight: bold;
}
.revenbignotice {
- color: #c099e2;
+ color: hsl(272.1, 55.7%, 74.3%);
font-weight: bold;
font-size: 185%;
}
.revenminor {
- color: #823abb;
+ color: hsl(273.5, 52.7%, 48%);
}
.revenwarning {
- color: #760fbb;
+ color: hsl(275.9, 85.1%, 39.6%);
font-style: italic;
}
.revendanger {
- color: #760fbb;
+ color: hsl(275.9, 85.1%, 39.6%);
font-weight: bold;
font-size: 185%;
}
.deconversion_message {
- color: #a947ff;
+ color: hsl(272, 100%, 63.9%);
font-size: 185%;
font-style: italic;
}
.ghostalert {
- color: #6600ff;
+ color: hsl(264, 100%, 50%);
font-style: italic;
font-weight: bold;
}
.alien {
- color: #855d85;
+ color: hsl(300, 17.7%, 44.3%);
}
.noticealien {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
}
.alertalien {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
font-weight: bold;
}
.changeling {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
font-style: italic;
}
.alertsyndie {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-size: 185%;
font-weight: bold;
}
.spiderbroodmother {
- color: #8800ff;
+ color: hsl(272, 100%, 50%);
font-weight: bold;
font-size: 185%;
}
.spiderbreacher {
- color: #e8b670;
+ color: hsl(35, 72.3%, 67.5%);
font-weight: bold;
font-size: 140%;
}
.spiderscout {
- color: #231d98;
+ color: hsl(242.9, 68%, 35.5%);
font-weight: bold;
font-size: 120%;
}
.interface {
- color: #750e75;
+ color: hsl(300, 78.6%, 25.7%);
}
.sans {
@@ -751,7 +751,7 @@ em {
}
.tape_recorder {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-family: 'Courier New', cursive, sans-serif;
}
@@ -786,17 +786,17 @@ em {
}
.greentext {
- color: #059223;
+ color: hsl(132.8, 93.4%, 29.6%);
font-size: 185%;
}
.redtext {
- color: #c51e1e;
+ color: hsl(0, 73.6%, 44.5%);
font-size: 185%;
}
.clown {
- color: #ff70c1;
+ color: hsl(326, 100%, 72%);
font-size: 160%;
font-family: 'Comic Sans MS', cursive, sans-serif;
font-weight: bold;
@@ -808,13 +808,13 @@ em {
}
.his_grace {
- color: #15d512;
+ color: hsl(119.1, 84.4%, 45.3%);
font-family: 'Courier New', cursive, sans-serif;
font-style: italic;
}
.hypnophrase {
- color: #202020;
+ color: hsl(0, 0%, 12.5%);
font-weight: bold;
animation: hypnocolor 1500ms infinite;
animation-direction: alternate;
@@ -822,43 +822,43 @@ em {
@keyframes hypnocolor {
0% {
- color: #202020;
+ color: hsl(0, 0%, 12.5%);
}
25% {
- color: #4b02ac;
+ color: hsl(265.8, 97.7%, 34.1%);
}
50% {
- color: #9f41f1;
+ color: hsl(272, 86.3%, 60%);
}
75% {
- color: #541c9c;
+ color: hsl(266.2, 69.6%, 36.1%);
}
100% {
- color: #7adbf3;
+ color: hsl(191.9, 83.4%, 71.6%);
}
}
.phobia {
- color: #dd0000;
+ color: hsl(0, 100%, 43.3%);
font-weight: bold;
animation: phobia 750ms infinite;
}
@keyframes phobia {
0% {
- color: #f75a5a;
+ color: hsl(0, 90.8%, 66.1%);
}
50% {
- color: #dd0000;
+ color: hsl(0, 100%, 43.3%);
}
100% {
- color: #f75a5a;
+ color: hsl(0, 90.8%, 66.1%);
}
}
@@ -876,7 +876,7 @@ em {
}
.memo {
- color: #638500;
+ color: hsl(75.3, 100%, 26.1%);
text-align: center;
}
@@ -886,35 +886,35 @@ em {
}
.abductor {
- color: #c204c2;
+ color: hsl(300, 96%, 38.8%);
font-style: italic;
}
.mind_control {
- color: #df3da9;
+ color: hsl(320, 71.7%, 55.7%);
font-size: 100%;
font-weight: bold;
font-style: italic;
}
.slime {
- color: #00ced1;
+ color: hsl(180.9, 100%, 41%);
}
.drone {
- color: #848482;
+ color: hsl(60, 0.8%, 51.4%);
}
.monkey {
- color: #975032;
+ color: hsl(17.8, 50.2%, 39.4%);
}
.swarmer {
- color: #2c75ff;
+ color: hsl(219.2, 100%, 58.6%);
}
.resonate {
- color: #298f85;
+ color: hsl(174.1, 55.4%, 36.1%);
}
.upside_down {
@@ -938,7 +938,7 @@ em {
}
.internal.boldnshit {
- color: #3d5bc3;
+ color: hsl(226.6, 52.8%, 50.2%);
font-weight: bold;
}
@@ -967,8 +967,8 @@ em {
}
.examine_block {
- background: #1b1c1e;
- border: 1px solid #a4bad6;
+ background: hsl(220, 5.3%, 11.2%);
+ border: 1px solid hsl(213.6, 37.9%, 74.1%);
margin: 0.5em;
padding: 0.5em 0.75em;
}
@@ -990,7 +990,7 @@ em {
.separator::after {
content: '';
flex: 1;
- border-bottom: 1px solid #a4bad6;
+ border-bottom: 1px solid hsl(213.6, 37.9%, 74.1%);
}
.separator:not(:empty)::before {
@@ -1040,51 +1040,51 @@ em {
/*DOPPLER ADDITION END*/
$alert-stripe-colors: (
- 'default': #00283a,
- 'green': #003d00,
- 'blue': #00283a,
- 'pink': #30001b,
- 'yellow': #574a00,
- 'orange': #593400,
- 'red': #420000,
- 'purple': #2c0030,
- 'grey': #252525,
+ 'default': hsl(198.6, 100%, 11.4%),
+ 'green': hsl(120, 100%, 12%),
+ 'blue': hsl(198.6, 100%, 11.4%),
+ 'pink': hsl(326.2, 100%, 9.4%),
+ 'yellow': hsl(51, 100%, 17.1%),
+ 'orange': hsl(35.1, 100%, 17.5%),
+ 'red': hsl(0, 100%, 12.9%),
+ 'purple': hsl(295, 100%, 9.4%),
+ 'grey': hsl(0, 0%, 14.5%),
);
$alert-stripe-alternate-colors: (
- 'default': #003045,
- 'green': #004700,
- 'blue': #003045,
- 'pink': #400025,
- 'yellow': #4d4100,
- 'orange': #6b4200,
- 'red': #520000,
- 'purple': #38003d,
- 'grey': #292929,
+ 'default': hsl(198.3, 100%, 13.5%),
+ 'green': hsl(120, 100%, 13.9%),
+ 'blue': hsl(198.3, 100%, 13.5%),
+ 'pink': hsl(325.3, 100%, 12.5%),
+ 'yellow': hsl(50.6, 100%, 15.1%),
+ 'orange': hsl(37, 100%, 21%),
+ 'red': hsl(0, 100%, 16.1%),
+ 'purple': hsl(295.1, 100%, 12%),
+ 'grey': hsl(0, 0%, 16.1%),
);
$alert-major-header-colors: (
- 'default': #33d5ff,
- 'green': #00ff80,
- 'blue': #33d5ff,
- 'pink': #ff5297,
- 'yellow': #fff4e0,
- 'orange': #feefe7,
- 'red': #ff5297,
- 'purple': #c7a1f7,
- 'grey': #ff5297,
+ 'default': hsl(192.4, 100%, 60%),
+ 'green': hsl(150.1, 100%, 50%),
+ 'blue': hsl(192.4, 100%, 60%),
+ 'pink': hsl(336.1, 100%, 66.1%),
+ 'yellow': hsl(38.7, 100%, 93.9%),
+ 'orange': hsl(20.9, 92%, 95.1%),
+ 'red': hsl(336.1, 100%, 66.1%),
+ 'purple': hsl(266.5, 84.3%, 80%),
+ 'grey': hsl(336.1, 100%, 66.1%),
);
$alert-subheader-header-colors: (
- 'default': #ff5297,
- 'green': #ff85b5,
- 'blue': #ff5297,
- 'pink': #33d5ff,
- 'yellow': #33d5ff,
- 'orange': #33d5ff,
- 'red': #33d5ff,
- 'purple': #33d5ff,
- 'grey': #33d5ff,
+ 'default': hsl(336.1, 100%, 66.1%),
+ 'green': hsl(336.4, 100%, 76.1%),
+ 'blue': hsl(336.1, 100%, 66.1%),
+ 'pink': hsl(192.4, 100%, 60%),
+ 'yellow': hsl(192.4, 100%, 60%),
+ 'orange': hsl(192.4, 100%, 60%),
+ 'red': hsl(192.4, 100%, 60%),
+ 'purple': hsl(192.4, 100%, 60%),
+ 'grey': hsl(192.4, 100%, 60%),
);
$border-width: 4;
@@ -1111,8 +1111,8 @@ $border-width-px: $border-width * 1px;
}
.major_announcement_text {
- color: #eaeaea;
- background-color: #131313;
+ color: hsl(0, 0%, 91.8%);
+ background-color: hsl(0, 0%, 7.5%);
font-weight: bold;
font-size: 100%;
text-align: left;
@@ -1133,8 +1133,8 @@ $border-width-px: $border-width * 1px;
}
.minor_announcement_text {
- background-color: #202020;
- color: #eaeaea;
+ background-color: hsl(0, 0%, 12.5%);
+ color: hsl(0, 0%, 91.8%);
padding: 0.5rem 0.5rem;
text-align: left;
font-size: 100%;
@@ -1147,18 +1147,18 @@ $border-width-px: $border-width * 1px;
}
.ooc_alert {
- background: #4d4100;
- border: 1px solid #cca300;
+ background: hsl(50.6, 100%, 15.1%);
+ border: 1px solid hsl(47.9, 100%, 40%);
margin: 0.5em;
padding: 0.5em 0.5em 0.5em 0.2em;
- color: #ffffff;
+ color: hsl(0, 0%, 100%);
font-weight: bold;
display: flex;
flex-direction: column;
}
.ooc_announcement_text {
- color: #cca300;
+ color: hsl(47.9, 100%, 40%);
padding: 0.5em 0 0 0.35em;
display: flex;
flex-direction: column;
@@ -1166,7 +1166,7 @@ $border-width-px: $border-width * 1px;
@each $color-name, $color-value in $alert-stripe-colors {
.chat_alert_#{$color-name} {
- color: #ffffff;
+ color: hsl(0, 0%, 100%);
padding: 0.5rem 0.5rem;
box-shadow: none;
font-weight: bold;
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
index 4efa080ced03a..3db23507b56ae 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
@@ -11,7 +11,7 @@ body {
padding: 0;
margin: 0;
height: 100%;
- color: #000000;
+ color: hsl(0, 0%, 0%);
}
body {
@@ -45,15 +45,15 @@ img.icon {
}
a {
- color: #0000ff;
+ color: hsl(240, 100%, 50%);
}
a.visited {
- color: #ff00ff;
+ color: hsl(300, 100%, 50%);
}
a:visited {
- color: #ff00ff;
+ color: hsl(300, 100%, 50%);
}
a.popt {
@@ -157,7 +157,7 @@ a.popt {
}
.highlightPopup input.highlightColor {
- background-color: #ffff00;
+ background-color: hsl(60, 100%, 50%);
}
.highlightPopup input.highlightTermSubmit {
@@ -217,7 +217,7 @@ a.popt {
/* MOTD */
.motd {
- color: #638500;
+ color: hsl(75.3, 100%, 26.1%);
font-family: Verdana, sans-serif;
white-space: normal;
}
@@ -228,7 +228,7 @@ a.popt {
.motd h4,
.motd h5,
.motd h6 {
- color: #638500;
+ color: hsl(75.3, 100%, 26.1%);
text-decoration: underline;
}
@@ -237,7 +237,7 @@ a.popt {
.motd a:visited,
.motd a:active,
.motd a:hover {
- color: #638500;
+ color: hsl(75.3, 100%, 26.1%);
}
/* ADD HERE FOR BOLD */
@@ -273,13 +273,13 @@ h3,
h4,
h5,
h6 {
- color: #0000ff;
+ color: hsl(240, 100%, 50%);
font-family: Georgia, Verdana, sans-serif;
}
h1.alert,
h2.alert {
- color: #000000;
+ color: hsl(0, 0%, 0%);
}
em {
@@ -288,27 +288,27 @@ em {
}
.ooc {
- color: #002eb8;
+ color: hsl(225, 100%, 36.1%);
font-weight: bold;
}
.adminobserverooc {
- color: #0099cc;
+ color: hsl(195, 100%, 40%);
font-weight: bold;
}
.adminooc {
- color: #700038;
+ color: hsl(330, 100%, 22%);
font-weight: bold;
}
.adminsay {
- color: #ff4500;
+ color: hsl(16.2, 100%, 50%);
font-weight: bold;
}
.admin {
- color: #4473ff;
+ color: hsl(224.9, 100%, 63.3%);
font-weight: bold;
}
@@ -324,90 +324,90 @@ em {
}
.deadsay {
- color: #5c00e6;
+ color: hsl(264, 100%, 45.1%);
}
.binarysay {
- color: #20c20e;
- background-color: #000000;
+ color: hsl(114, 86.5%, 40.8%);
+ background-color: hsl(0, 0%, 0%);
display: block;
}
.binarysay a {
- color: #00ff00;
+ color: hsl(120, 100%, 50%);
}
.binarysay a:active,
.binarysay a:visited {
- color: #88ff88;
+ color: hsl(120, 100%, 76.7%);
}
.radio {
- color: #008000;
+ color: hsl(120, 100%, 25.1%);
}
.sciradio {
- color: #993399;
+ color: hsl(300, 50%, 40%);
}
.comradio {
- color: #948f02;
+ color: hsl(57.9, 97.3%, 29.4%);
}
.secradio {
- color: #a30000;
+ color: hsl(0, 100%, 32%);
}
.medradio {
- color: #337296;
+ color: hsl(201.8, 49.3%, 39.4%);
}
.engradio {
- color: #fb5613;
+ color: hsl(17.3, 96.7%, 52.9%);
}
.suppradio {
- color: #a8732b;
+ color: hsl(34.6, 59.2%, 41.4%);
}
.servradio {
- color: #6eaa2c;
+ color: hsl(88.6, 58.9%, 42%);
}
.syndradio {
- color: #6d3f40;
+ color: hsl(358.7, 26.7%, 33.7%);
}
.gangradio {
- color: #ac2ea1;
+ color: hsl(305.2, 57.8%, 42.7%);
}
.centcomradio {
- color: #686868;
+ color: hsl(0, 0%, 40.8%);
}
.aiprivradio {
- color: #ff00ff;
+ color: hsl(300, 100%, 50%);
}
.enteradio {
- color: #5c8a87;
+ color: hsl(176.1, 20%, 45.1%);
}
.redteamradio {
- color: #ff0000 !important;
+ color: hsl(0, 100%, 50%) !important;
}
.blueteamradio {
- color: #0000ff !important;
+ color: hsl(240, 100%, 50%) !important;
}
.greenteamradio {
- color: #00ff00 !important;
+ color: hsl(120, 100%, 50%) !important;
}
.yellowteamradio {
- color: #d1ba22 !important;
+ color: hsl(52.1, 72%, 47.6%) !important;
}
.yell {
@@ -415,345 +415,345 @@ em {
}
.alert {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
}
h1.alert,
h2.alert {
- color: #000000;
+ color: hsl(0, 0%, 0%);
}
.userdanger {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
font-size: 185%;
}
.bolddanger {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
}
.danger {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
}
.tinydanger {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-size: 85%;
}
.smalldanger {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-size: 90%;
}
.warning {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-style: italic;
}
.alertwarning {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
}
.boldwarning {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-style: italic;
font-weight: bold;
}
.announce {
- color: #228b22;
+ color: hsl(120, 60.7%, 33.9%);
font-weight: bold;
}
.boldannounce {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
}
.minorannounce {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
font-size: 185%;
}
.minoralert {
- color: #000000;
+ color: hsl(0, 0%, 0%);
font-size: 125%;
}
.priorityannounce {
- color: #000000;
+ color: hsl(0, 0%, 0%);
font-weight: bold;
font-size: 225%;
}
.prioritytitle {
- color: #0000ff;
+ color: hsl(240, 100%, 50%);
font-weight: bold;
font-size: 185%;
}
.priorityalert {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-size: 140%;
}
.greenannounce {
- color: #00ff00;
+ color: hsl(120, 100%, 50%);
font-weight: bold;
}
.rose {
- color: #ff5050;
+ color: hsl(0, 100%, 65.7%);
}
.info {
- color: #0000cc;
+ color: hsl(240, 100%, 40%);
}
.notice {
- color: #000099;
+ color: hsl(240, 100%, 30%);
}
.tinynotice {
- color: #000099;
+ color: hsl(240, 100%, 30%);
font-size: 85%;
}
.tinynoticeital {
- color: #000099;
+ color: hsl(240, 100%, 30%);
font-style: italic;
font-size: 85%;
}
.smallnotice {
- color: #000099;
+ color: hsl(240, 100%, 30%);
font-size: 90%;
}
.smallnoticeital {
- color: #000099;
+ color: hsl(240, 100%, 30%);
font-style: italic;
font-size: 90%;
}
.boldnotice {
- color: #000099;
+ color: hsl(240, 100%, 30%);
font-weight: bold;
}
.hear {
- color: #000099;
+ color: hsl(240, 100%, 30%);
font-style: italic;
}
.adminnotice {
- color: #0000ff;
+ color: hsl(240, 100%, 50%);
}
.adminhelp {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-weight: bold;
}
.unconscious {
- color: #0000ff;
+ color: hsl(240, 100%, 50%);
font-weight: bold;
}
.suicide {
- color: #ff5050;
+ color: hsl(0, 100%, 65.7%);
font-style: italic;
}
.green {
- color: #03ff39;
+ color: hsl(132.9, 100%, 50.6%);
}
.grey {
- color: #838383;
+ color: hsl(0, 0%, 51.4%);
}
.red {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
}
.blue {
- color: #0000ff;
+ color: hsl(240, 100%, 50%);
}
.nicegreen {
- color: #14a833;
+ color: hsl(132.6, 78.7%, 36.9%);
}
.boldnicegreen {
- color: #14a833;
+ color: hsl(132.6, 78.7%, 36.9%);
font-weight: bold;
}
.cult {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
}
.cultitalic {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-style: italic;
}
.cult_bold {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-style: italic;
font-weight: bold;
}
.cult_bold_italic {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 185%;
}
.cult_large {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 185%;
}
.blob {
- color: #ee4000;
+ color: hsl(16.1, 100%, 46.7%);
}
.blobannounce {
- color: #323f1c;
+ color: hsl(82.3, 38.5%, 17.8%);
font-weight: bold;
font-size: 185%;
}
.narsie {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 925%;
}
.narsiesmall {
- color: #973e3b;
+ color: hsl(2, 43.8%, 41.2%);
font-weight: bold;
font-size: 370%;
}
.colossus {
- color: #7f282a;
+ color: hsl(358.6, 52.1%, 32.7%);
font-size: 310%;
}
.hierophant {
- color: #660099;
+ color: hsl(280, 100%, 30%);
font-weight: bold;
font-style: italic;
}
.hierophant_warning {
- color: #660099;
+ color: hsl(280, 100%, 30%);
font-style: italic;
}
.purple {
- color: #5e2d79;
+ color: hsl(278.7, 45.8%, 32.5%);
}
.holoparasite {
- color: #35333a;
+ color: hsl(257.1, 6.4%, 21.4%);
}
.revennotice {
- color: #1d2953;
+ color: hsl(226.7, 48.2%, 22%);
}
.revenboldnotice {
- color: #1d2953;
+ color: hsl(226.7, 48.2%, 22%);
font-weight: bold;
}
.revenbignotice {
- color: #1d2953;
+ color: hsl(226.7, 48.2%, 22%);
font-weight: bold;
font-size: 185%;
}
.revenminor {
- color: #823abb;
+ color: hsl(273.5, 52.7%, 48%);
}
.revenwarning {
- color: #760fbb;
+ color: hsl(275.9, 85.1%, 39.6%);
font-style: italic;
}
.revendanger {
- color: #760fbb;
+ color: hsl(275.9, 85.1%, 39.6%);
font-weight: bold;
font-size: 185%;
}
.deconversion_message {
- color: #5000a0;
+ color: hsl(270, 100%, 31.4%);
font-size: 185%;
font-style: italic;
}
.ghostalert {
- color: #5c00e6;
+ color: hsl(264, 100%, 45.1%);
font-style: italic;
font-weight: bold;
}
.alien {
- color: #543354;
+ color: hsl(300, 24.4%, 26.5%);
}
.noticealien {
- color: #00c000;
+ color: hsl(120, 100%, 37.6%);
}
.alertalien {
- color: #00c000;
+ color: hsl(120, 100%, 37.6%);
font-weight: bold;
}
.changeling {
- color: #800080;
+ color: hsl(300, 100%, 25.1%);
font-style: italic;
}
.alertsyndie {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-size: 185%;
font-weight: bold;
}
.spiderbroodmother {
- color: #4d004d;
+ color: hsl(300, 100%, 15.1%);
font-weight: bold;
font-size: 185%;
}
.spiderbreacher {
- color: #804b02;
+ color: hsl(34.8, 96.9%, 25.5%);
font-weight: bold;
font-size: 140%;
}
.spiderscout {
- color: #0c0674;
+ color: hsl(243.3, 90.2%, 23.9%);
font-weight: bold;
font-size: 120%;
}
.interface {
- color: #330033;
+ color: hsl(300, 100%, 10%);
}
.sans {
@@ -769,7 +769,7 @@ h2.alert {
}
.tape_recorder {
- color: #800000;
+ color: hsl(0, 100%, 25.1%);
font-family: 'Courier New', cursive, sans-serif;
}
@@ -804,17 +804,17 @@ h2.alert {
}
.greentext {
- color: #00ff00;
+ color: hsl(120, 100%, 50%);
font-size: 185%;
}
.redtext {
- color: #ff0000;
+ color: hsl(0, 100%, 50%);
font-size: 185%;
}
.clown {
- color: #ff69bf;
+ color: hsl(325.6, 100%, 70.6%);
font-size: 160%;
font-family: 'Comic Sans MS', cursive, sans-serif;
font-weight: bold;
@@ -826,13 +826,13 @@ h2.alert {
}
.his_grace {
- color: #15d512;
+ color: hsl(119.1, 84.4%, 45.3%);
font-family: 'Courier New', cursive, sans-serif;
font-style: italic;
}
.hypnophrase {
- color: #0d0d0d;
+ color: hsl(0, 0%, 5.1%);
font-weight: bold;
animation: hypnocolor 1500ms infinite;
animation-direction: alternate;
@@ -840,43 +840,43 @@ h2.alert {
@keyframes hypnocolor {
0% {
- color: #0d0d0d;
+ color: hsl(0, 0%, 5.1%);
}
25% {
- color: #410194;
+ color: hsl(266.1, 98.7%, 29.2%);
}
50% {
- color: #7f17d8;
+ color: hsl(272.3, 80.8%, 46.9%);
}
75% {
- color: #410194;
+ color: hsl(266.1, 98.7%, 29.2%);
}
100% {
- color: #3bb5d3;
+ color: hsl(191.8, 63.3%, 52.9%);
}
}
.phobia {
- color: #dd0000;
+ color: hsl(0, 100%, 43.3%);
font-weight: bold;
animation: phobia 750ms infinite;
}
@keyframes phobia {
0% {
- color: #0d0d0d;
+ color: hsl(0, 0%, 5.1%);
}
50% {
- color: #dd0000;
+ color: hsl(0, 100%, 43.3%);
}
100% {
- color: #0d0d0d;
+ color: hsl(0, 0%, 5.1%);
}
}
@@ -894,7 +894,7 @@ h2.alert {
}
.memo {
- color: #638500;
+ color: hsl(75.3, 100%, 26.1%);
text-align: center;
}
@@ -904,35 +904,35 @@ h2.alert {
}
.abductor {
- color: #800080;
+ color: hsl(300, 100%, 25.1%);
font-style: italic;
}
.mind_control {
- color: #a00d6f;
+ color: hsl(320, 85%, 33.9%);
font-size: 100%;
font-weight: bold;
font-style: italic;
}
.slime {
- color: #00ced1;
+ color: hsl(180.9, 100%, 41%);
}
.drone {
- color: #848482;
+ color: hsl(60, 0.8%, 51.4%);
}
.monkey {
- color: #975032;
+ color: hsl(17.8, 50.2%, 39.4%);
}
.swarmer {
- color: #2c75ff;
+ color: hsl(219.2, 100%, 58.6%);
}
.resonate {
- color: #298f85;
+ color: hsl(174.1, 55.4%, 36.1%);
}
.upside_down {
@@ -985,8 +985,8 @@ h2.alert {
}
.examine_block {
- background: #f2f7fa;
- border: 1px solid #111a27;
+ background: hsl(202.5, 44.4%, 96.5%);
+ border: 1px solid hsl(215.5, 39.3%, 11%);
margin: 0.5em;
padding: 0.5em 0.75em;
}
@@ -1008,7 +1008,7 @@ h2.alert {
.separator::after {
content: '';
flex: 1;
- border-bottom: 1px solid #111a27;
+ border-bottom: 1px solid hsl(215.5, 39.3%, 11%);
}
.separator:not(:empty)::before {
@@ -1059,51 +1059,51 @@ h2.alert {
/*DOPPLER ADDITION END*/
$alert-stripe-colors: (
- 'default': #b3bfff,
- 'green': #adffad,
- 'blue': #b3bfff,
- 'pink': #ffb3df,
- 'yellow': #fff3b3,
- 'orange': #ffe2b3,
- 'red': #ffb3b3,
- 'purple': #fac2ff,
- 'grey': #e3e3e3,
+ 'default': hsl(230.5, 100%, 85.1%),
+ 'green': hsl(120, 100%, 83.9%),
+ 'blue': hsl(230.5, 100%, 85.1%),
+ 'pink': hsl(325.3, 100%, 85.1%),
+ 'yellow': hsl(50.5, 100%, 85.1%),
+ 'orange': hsl(37.1, 100%, 85.1%),
+ 'red': hsl(0, 100%, 85.1%),
+ 'purple': hsl(295.1, 100%, 88%),
+ 'grey': hsl(0, 0%, 89%),
);
$alert-stripe-alternate-colors: (
- 'default': #bdc8ff,
- 'green': #bdffbd,
- 'blue': #bdc8ff,
- 'pink': #ffc2e5,
- 'yellow': #fff5c2,
- 'orange': #ffe8c2,
- 'red': #ffc2c2,
- 'purple': #fbd1ff,
- 'grey': #ebebeb,
+ 'default': hsl(230, 100%, 87.1%),
+ 'green': hsl(120, 100%, 87.1%),
+ 'blue': hsl(230, 100%, 87.1%),
+ 'pink': hsl(325.6, 100%, 88%),
+ 'yellow': hsl(50.2, 100%, 88%),
+ 'orange': hsl(37.4, 100%, 88%),
+ 'red': hsl(0, 100%, 88%),
+ 'purple': hsl(294.8, 100%, 91%),
+ 'grey': hsl(0, 0%, 92.2%),
);
$alert-major-header-colors: (
- 'default': #003061,
- 'green': #005229,
- 'blue': #003061,
- 'pink': #800033,
- 'yellow': #754900,
- 'orange': #823208,
- 'red': #800029,
- 'purple': #450d8c,
- 'grey': #800033,
+ 'default': hsl(210.3, 100%, 19%),
+ 'green': hsl(150, 100%, 16.1%),
+ 'blue': hsl(210.3, 100%, 19%),
+ 'pink': hsl(336.1, 100%, 25.1%),
+ 'yellow': hsl(37.4, 100%, 22.9%),
+ 'orange': hsl(20.7, 88.4%, 27.1%),
+ 'red': hsl(340.8, 100%, 25.1%),
+ 'purple': hsl(266.5, 83%, 30%),
+ 'grey': hsl(336.1, 100%, 25.1%),
);
$alert-subheader-header-colors: (
- 'default': #6b0020,
- 'green': #6b0020,
- 'blue': #6b0020,
- 'pink': #002c85,
- 'yellow': #002c85,
- 'orange': #002c85,
- 'red': #002c85,
- 'purple': #002c85,
- 'grey': #002c85,
+ 'default': hsl(342.1, 100%, 21%),
+ 'green': hsl(342.1, 100%, 21%),
+ 'blue': hsl(342.1, 100%, 21%),
+ 'pink': hsl(220.2, 100%, 26.1%),
+ 'yellow': hsl(220.2, 100%, 26.1%),
+ 'orange': hsl(220.2, 100%, 26.1%),
+ 'red': hsl(220.2, 100%, 26.1%),
+ 'purple': hsl(220.2, 100%, 26.1%),
+ 'grey': hsl(220.2, 100%, 26.1%),
);
$border-width: 4;
@@ -1130,8 +1130,8 @@ $border-width-px: $border-width * 1px;
}
.major_announcement_text {
- color: #131313;
- background-color: #eaeaea;
+ color: hsl(0, 0%, 7.5%);
+ background-color: hsl(0, 0%, 91.8%);
font-weight: bold;
font-size: 100%;
text-align: left;
@@ -1152,8 +1152,8 @@ $border-width-px: $border-width * 1px;
}
.minor_announcement_text {
- background-color: #eaeaea;
- color: #202020;
+ background-color: hsl(0, 0%, 91.8%);
+ color: hsl(0, 0%, 12.5%);
padding: 0.5rem 0.5rem;
text-align: left;
font-size: 100%;
@@ -1166,18 +1166,18 @@ $border-width-px: $border-width * 1px;
}
.ooc_alert {
- background: #bdc8ff;
- border: 1px solid #002eb8;
+ background: hsl(230, 100%, 87.1%);
+ border: 1px solid hsl(225, 100%, 36.1%);
margin: 0.5em;
padding: 0.5em 0.5em 0.5em 0.2em;
- color: #00283a;
+ color: hsl(198.6, 100%, 11.4%);
font-weight: bold;
display: flex;
flex-direction: column;
}
.ooc_announcement_text {
- color: #002eb8;
+ color: hsl(225, 100%, 36.1%);
padding: 0.5em 0 0 0.35em;
display: flex;
flex-direction: column;
@@ -1185,7 +1185,7 @@ $border-width-px: $border-width * 1px;
@each $color-name, $color-value in $alert-stripe-colors {
.chat_alert_#{$color-name} {
- color: #ffffff;
+ color: hsl(0, 0%, 100%);
padding: 0.5rem 0.5rem;
box-shadow: none;
font-weight: bold;
diff --git a/tgui/packages/tgui-panel/styles/themes/light.scss b/tgui/packages/tgui-panel/styles/themes/light.scss
index f8bfd67ee934f..0d8e301001f29 100644
--- a/tgui/packages/tgui-panel/styles/themes/light.scss
+++ b/tgui/packages/tgui-panel/styles/themes/light.scss
@@ -7,21 +7,20 @@
@use 'sass:meta';
@use '~tgui/styles/colors.scss' with (
- $primary: #ffffff,
+ $primary: hsl(0, 0%, 100%),
$bg-lightness: -25%,
$fg-lightness: -10%,
- $label: #3b3b3b,
+ $label: hsl(0, 0%, 23.1%),
// Makes button look actually grey due to weird maths.
- $grey: #ffffff,
+ $grey: hsl(0, 0%, 100%),
// Commenting out color maps will adjust all colors based on the lightness
// settings above, but will add extra 10KB to the theme.
// $fg-map-keys: (),
// $bg-map-keys: (),
);
@use '~tgui/styles/base.scss' with (
- $color-fg: #000000,
- $color-bg: #eeeeee,
- $color-bg-section: #ffffff,
+ $color-fg: hsl(0, 0%, 0%),
+ $color-bg: hsl(0, 0%, 93.3%),
$color-bg-grad-spread: 0%
);
@@ -33,7 +32,7 @@
// Components
@include meta.load-css(
- '~tgui/styles/components/Tabs.scss',
+ 'pkg:tgui-styles/components/Tabs',
$with: (
'text-color': rgba(0, 0, 0, 0.5),
'color-default': rgba(0, 0, 0, 1),
@@ -41,35 +40,39 @@
'tab-color-hovered': rgba(0, 0, 0, 0.075)
)
);
- @include meta.load-css('~tgui/styles/components/Section.scss');
@include meta.load-css(
- '~tgui/styles/components/Button.scss',
+ 'pkg:tgui-styles/components/Section',
+ $with: ('background-color': hsl(0, 0%, 100%))
+ );
+
+ @include meta.load-css(
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': #bbbbbb,
- 'color-disabled': #363636,
- 'color-selected': #0668b8,
- 'color-caution': #be6209,
- 'color-danger': #9a9d00,
+ 'color-default': hsl(0, 0%, 73.3%),
+ 'color-disabled': hsl(0, 0%, 21.2%),
+ 'color-selected': hsl(204, 94%, 35.3%),
+ 'color-caution': hsl(28, 91%, 38.2%),
+ 'color-danger': hsl(62, 100%, 30.2%),
'color-transparent-text': rgba(0, 0, 0, 0.5)
)
);
@include meta.load-css(
- '~tgui/styles/components/Input.scss',
+ 'pkg:tgui-styles/components/Input',
$with: (
'border-color': colors.fg(colors.$label),
- 'background-color': #e6e6e6
+ 'background-color': hsl(0, 0%, 90.2%)
)
);
- @include meta.load-css('~tgui/styles/components/NumberInput.scss');
- @include meta.load-css('~tgui/styles/components/TextArea.scss');
- @include meta.load-css('~tgui/styles/components/Knob.scss');
- @include meta.load-css('~tgui/styles/components/Slider.scss');
- @include meta.load-css('~tgui/styles/components/ProgressBar.scss');
+ @include meta.load-css('pkg:tgui-styles/components/NumberInput');
+ @include meta.load-css('pkg:tgui-styles/components/TextArea');
+ @include meta.load-css('pkg:tgui-styles/components/Knob');
+ @include meta.load-css('pkg:tgui-styles/components/Slider');
+ @include meta.load-css('pkg:tgui-styles/components/ProgressBar');
// Components specific to tgui-panel
@include meta.load-css(
'../components/Chat.scss',
- $with: ('text-color': #000000)
+ $with: ('text-color': hsl(0, 0%, 0%))
);
// Layouts
diff --git a/tgui/packages/tgui-say/TguiSay.tsx b/tgui/packages/tgui-say/TguiSay.tsx
index c06e72405d4f1..1dea8c58cae44 100644
--- a/tgui/packages/tgui-say/TguiSay.tsx
+++ b/tgui/packages/tgui-say/TguiSay.tsx
@@ -23,7 +23,7 @@ type State = {
size: WINDOW_SIZES;
};
-const CHANNEL_REGEX = /^:\w\s/;
+const CHANNEL_REGEX = /^[:.]\w\s/;
export class TguiSay extends Component<{}, State> {
private channelIterator: ChannelIterator;
diff --git a/tgui/packages/tgui-say/package.json b/tgui/packages/tgui-say/package.json
index 5c8eaf390a96c..d8c09604c1b26 100644
--- a/tgui/packages/tgui-say/package.json
+++ b/tgui/packages/tgui-say/package.json
@@ -9,6 +9,7 @@
"react": "^18.3.1",
"react-dom": "^18.3.1",
"tgui": "workspace:*",
- "tgui-polyfill": "workspace:*"
+ "tgui-polyfill": "workspace:*",
+ "tgui-styles": "^0.0.10"
}
}
diff --git a/tgui/packages/tgui-say/styles/colors.scss b/tgui/packages/tgui-say/styles/colors.scss
index 9a6c1beb265ad..05cef9b550991 100644
--- a/tgui/packages/tgui-say/styles/colors.scss
+++ b/tgui/packages/tgui-say/styles/colors.scss
@@ -1,31 +1,31 @@
@use 'sass:map';
-$background: #131313;
-$button: #1f1f1f;
-$lightMode: #ffffff;
-$lightBorder: #bbbbbb;
-$lightHover: #eaeaea;
+$background: hsl(0, 0%, 7.5%);
+$button: hsl(0, 0%, 12.2%);
+$lightMode: hsl(0, 0%, 100%);
+$lightBorder: hsl(0, 0%, 73.3%);
+$lightHover: hsl(0, 0%, 91.8%);
$_channel_map: (
- 'Admin': #ffbbff,
- 'AI': #d65d95,
- 'CCom': #2681a5,
- 'Cling': #4c701f,
- 'Cmd': #fcdf03,
- 'Engi': #f37746,
- 'Hive': #855d85,
- 'io': #1e90ff,
- 'Me': #5975da,
- 'Med': #57b8f0,
- 'OOC': #cca300,
- 'Ent': #5c8a87,
- 'Radio': #1ecc43,
- 'Say': #a4bad6,
- 'Sci': #c68cfa,
- 'Sec': #dd3535,
- 'Supp': #b88646,
- 'Svc': #6ca729,
- 'Synd': #8f4a4b,
+ 'Admin': hsl(300, 100%, 86.7%),
+ 'AI': hsl(332.2, 59.6%, 60.2%),
+ 'CCom': hsl(197, 62.6%, 39.8%),
+ 'Cling': hsl(86.7, 56.6%, 28%),
+ 'Cmd': hsl(53, 97.6%, 50%),
+ 'Engi': hsl(17, 87.8%, 61.4%),
+ 'Hive': hsl(300, 17.7%, 44.3%),
+ 'io': hsl(209.6, 100%, 55.9%),
+ 'Me': hsl(227, 63.5%, 60.2%),
+ 'Med': hsl(202, 83.6%, 64.1%),
+ 'OOC': hsl(47.9, 100%, 40%),
+ 'Ent': hsl(176.1, 20%, 45.1%),
+ 'Radio': hsl(132.8, 74.4%, 45.9%),
+ 'Say': hsl(213.6, 37.9%, 74.1%),
+ 'Sci': hsl(271.6, 91.7%, 76.5%),
+ 'Sec': hsl(0, 71.2%, 53.7%),
+ 'Supp': hsl(33.7, 44.9%, 49.8%),
+ 'Svc': hsl(88.1, 60.6%, 40.8%),
+ 'Synd': hsl(359.1, 31.8%, 42.5%),
// DOPPLER EDIT ADDITION START
'Whis': #7c7fd9,
'LOOC': #ffceb6,
diff --git a/tgui/packages/tgui-say/styles/main.scss b/tgui/packages/tgui-say/styles/main.scss
index 8c7ca885c9047..8e164aa21fa7f 100644
--- a/tgui/packages/tgui-say/styles/main.scss
+++ b/tgui/packages/tgui-say/styles/main.scss
@@ -7,7 +7,7 @@
// Atomic styles
@include meta.load-css('~tgui/styles/atomic/text.scss');
// External styles
-@include meta.load-css('~tgui/styles/components/TextArea.scss');
+@include meta.load-css('pkg:tgui-styles/components/TextArea');
// Local styles
@include meta.load-css('./button.scss');
@include meta.load-css('./content.scss');
diff --git a/tgui/packages/tgui/interfaces/ApcControl.jsx b/tgui/packages/tgui/interfaces/ApcControl.jsx
index caeb5ee1bed6e..16c74b8d955c4 100644
--- a/tgui/packages/tgui/interfaces/ApcControl.jsx
+++ b/tgui/packages/tgui/interfaces/ApcControl.jsx
@@ -1,5 +1,4 @@
import { map, sortBy } from 'common/collections';
-import { flow } from 'common/fp';
import { useState } from 'react';
import {
Box,
@@ -11,6 +10,7 @@ import {
Table,
Tabs,
} from 'tgui-core/components';
+import { flow } from 'tgui-core/fp';
import { useBackend, useLocalState } from '../backend';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/Aquarium.tsx b/tgui/packages/tgui/interfaces/Aquarium.tsx
index 592a2af2ea839..c5eb08e564419 100644
--- a/tgui/packages/tgui/interfaces/Aquarium.tsx
+++ b/tgui/packages/tgui/interfaces/Aquarium.tsx
@@ -1,4 +1,3 @@
-import { capitalizeFirst } from 'common/string';
import {
Box,
Button,
@@ -12,6 +11,7 @@ import {
Stack,
} from 'tgui-core/components';
import { BooleanLike } from 'tgui-core/react';
+import { capitalizeFirst } from 'tgui-core/string';
import { useBackend } from '../backend';
import { Window } from '../layouts';
@@ -24,7 +24,7 @@ type Data = {
fluidTypes: string[];
fishData: FishData[];
propData: PropData[];
- allowBreeding: BooleanLike;
+ safe_mode: BooleanLike;
feedingInterval: number;
heartIcon: string;
heartIconState: string;
@@ -270,7 +270,7 @@ const Settings = (props) => {
maxTemperature,
fluidTypes,
fluidType,
- allowBreeding,
+ safe_mode,
feedingInterval,
} = data;
@@ -319,13 +319,14 @@ const Settings = (props) => {
-
+
act('allow_breeding')}
+ tooltip="Prevent fish dying in hostile water and temperatures at the cost of features like growth and reproduction"
+ content={safe_mode ? 'Online' : 'Offline'}
+ selected={safe_mode}
+ onClick={() => act('safe_mode')}
/>
diff --git a/tgui/packages/tgui/interfaces/BigManipulator.tsx b/tgui/packages/tgui/interfaces/BigManipulator.tsx
index 9b0f6a3a3f6cc..ffca97b25346b 100644
--- a/tgui/packages/tgui/interfaces/BigManipulator.tsx
+++ b/tgui/packages/tgui/interfaces/BigManipulator.tsx
@@ -1,4 +1,4 @@
-import { BooleanLike } from 'common/react';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
import { Button, Section, Stack, Table } from '../components';
diff --git a/tgui/packages/tgui/interfaces/Biogenerator.tsx b/tgui/packages/tgui/interfaces/Biogenerator.tsx
index f87eb73d903f9..a978287c04530 100644
--- a/tgui/packages/tgui/interfaces/Biogenerator.tsx
+++ b/tgui/packages/tgui/interfaces/Biogenerator.tsx
@@ -12,8 +12,7 @@ import {
Table,
Tabs,
} from 'tgui-core/components';
-import { BooleanLike } from 'tgui-core/react';
-import { classes } from 'tgui-core/react';
+import { BooleanLike, classes } from 'tgui-core/react';
import { useBackend } from '../backend';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/ChemDispenser.tsx b/tgui/packages/tgui/interfaces/ChemDispenser.tsx
index 1f5f8b1b37b73..6beaf45acb022 100644
--- a/tgui/packages/tgui/interfaces/ChemDispenser.tsx
+++ b/tgui/packages/tgui/interfaces/ChemDispenser.tsx
@@ -191,12 +191,11 @@ export const ChemDispenser = (props) => {
width="129.5px"
lineHeight={1.75}
tooltip={'pH: ' + chemical.pH}
+ style={{
+ textShadow: '1px 1px 0 black',
+ }}
backgroundColor={
- recipeReagents.includes(chemical.id)
- ? showPhCol
- ? 'black'
- : 'green'
- : 'default'
+ recipeReagents.includes(chemical.id) ? 'green' : 'default'
}
onClick={() =>
act('dispense', {
@@ -204,7 +203,14 @@ export const ChemDispenser = (props) => {
})
}
>
- {chemical.title}
+
+ {chemical.title}
+
))}
diff --git a/tgui/packages/tgui/interfaces/CrewManifest.jsx b/tgui/packages/tgui/interfaces/CrewManifest.jsx
index 6557dda31f4b9..4039eb8fc3a2f 100644
--- a/tgui/packages/tgui/interfaces/CrewManifest.jsx
+++ b/tgui/packages/tgui/interfaces/CrewManifest.jsx
@@ -1,5 +1,5 @@
import { Icon, Section, Table, Tooltip } from 'tgui-core/components';
-import { classes } from '../../common/react';
+import { classes } from 'tgui-core/react';
import { useBackend } from '../backend';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx b/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx
index e7b66093d2099..113704af7e64d 100644
--- a/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx
+++ b/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -14,7 +11,10 @@ import {
Stack,
Table,
Tooltip,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { ButtonCheckbox } from '../components/Button';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx b/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx
index 252a6e5123113..3731d927c03b3 100644
--- a/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx
+++ b/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Button,
Dropdown,
@@ -10,7 +7,10 @@ import {
Stack,
Table,
Tooltip,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Lobby = {
diff --git a/tgui/packages/tgui/interfaces/DecalPainter.tsx b/tgui/packages/tgui/interfaces/DecalPainter.tsx
index dd835773960c7..5b45db3a4ddad 100644
--- a/tgui/packages/tgui/interfaces/DecalPainter.tsx
+++ b/tgui/packages/tgui/interfaces/DecalPainter.tsx
@@ -1,5 +1,6 @@
+import { Button, ColorBox, Flex, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, ColorBox, Flex, Section } from '../components';
import { Window } from '../layouts';
type DecalInfo = {
diff --git a/tgui/packages/tgui/interfaces/DestinationTagger.tsx b/tgui/packages/tgui/interfaces/DestinationTagger.tsx
index 5326f93e01bac..37fe5d3c1553f 100644
--- a/tgui/packages/tgui/interfaces/DestinationTagger.tsx
+++ b/tgui/packages/tgui/interfaces/DestinationTagger.tsx
@@ -1,7 +1,7 @@
import { map, sortBy } from 'common/collections';
+import { Button, Section, Stack } from 'tgui-core/components';
import { useBackend } from '../backend';
-import { Button, Section, Stack } from '../components';
import { Window } from '../layouts';
type DestinationTaggerData = {
diff --git a/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx b/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx
index 85a895a03e975..fda2dd32c8896 100644
--- a/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx
+++ b/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Box, Button, Image, NoticeBox, Section } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Box, Button, Image, NoticeBox, Section } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/DisposalUnit.jsx b/tgui/packages/tgui/interfaces/DisposalUnit.jsx
index f163c3c1c2c22..08bb0a9ad19ca 100644
--- a/tgui/packages/tgui/interfaces/DisposalUnit.jsx
+++ b/tgui/packages/tgui/interfaces/DisposalUnit.jsx
@@ -1,5 +1,11 @@
+import {
+ Button,
+ LabeledList,
+ ProgressBar,
+ Section,
+} from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, LabeledList, ProgressBar, Section } from '../components';
import { Window } from '../layouts';
export const DisposalUnit = (props) => {
diff --git a/tgui/packages/tgui/interfaces/DnaVault.tsx b/tgui/packages/tgui/interfaces/DnaVault.tsx
index 2b6781d6cf747..42220a7076015 100644
--- a/tgui/packages/tgui/interfaces/DnaVault.tsx
+++ b/tgui/packages/tgui/interfaces/DnaVault.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -8,7 +5,10 @@ import {
ProgressBar,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/DopplerArray.jsx b/tgui/packages/tgui/interfaces/DopplerArray.jsx
index f62fa8de56b71..14bd9b160dfe4 100644
--- a/tgui/packages/tgui/interfaces/DopplerArray.jsx
+++ b/tgui/packages/tgui/interfaces/DopplerArray.jsx
@@ -1,4 +1,3 @@
-import { useBackend, useSharedState } from '../backend';
import {
Box,
Button,
@@ -8,7 +7,9 @@ import {
Section,
Stack,
Tabs,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend, useSharedState } from '../backend';
import { Window } from '../layouts';
export const DopplerArray = (props) => {
diff --git a/tgui/packages/tgui/interfaces/EightBallVote.tsx b/tgui/packages/tgui/interfaces/EightBallVote.tsx
index f85b8724ffefb..c129ae0b083a7 100644
--- a/tgui/packages/tgui/interfaces/EightBallVote.tsx
+++ b/tgui/packages/tgui/interfaces/EightBallVote.tsx
@@ -1,8 +1,16 @@
-import { BooleanLike } from 'common/react';
-import { toTitleCase } from 'common/string';
+import {
+ Box,
+ Button,
+ Divider,
+ Flex,
+ NoticeBox,
+ Section,
+ Stack,
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+import { toTitleCase } from 'tgui-core/string';
import { useBackend } from '../backend';
-import { Box, Button, NoticeBox, Section, Stack } from '../components';
import { Window } from '../layouts';
type Data = {
@@ -21,12 +29,22 @@ export function EightBallVote(props) {
const { data } = useBackend();
const { shaking } = data;
+ const idealHeight = shaking ? 265 : 70;
return (
-
-
- {(shaking && (
- No question is currently being asked.
- )) || }
+
+
+ {!shaking ? (
+
+ No question is currently being asked.
+
+ ) : (
+ <>
+
+ A question is currently being asked!
+
+
+ >
+ )}
);
@@ -34,19 +52,25 @@ export function EightBallVote(props) {
function EightBallVoteQuestion(props) {
const { act, data } = useBackend();
- const { question, answers = [] } = data;
+ const { shaking, question, answers = [] } = data;
return (
-
-
- "{question}"
-
+
+
+ "
+ {question}
+ "
+
+
+
+
{answers.map((answer) => (
{
diff --git a/tgui/packages/tgui/interfaces/ElevatorPanel.tsx b/tgui/packages/tgui/interfaces/ElevatorPanel.tsx
index bb1998df4b6ee..9611db502a2f6 100644
--- a/tgui/packages/tgui/interfaces/ElevatorPanel.tsx
+++ b/tgui/packages/tgui/interfaces/ElevatorPanel.tsx
@@ -1,7 +1,3 @@
-import { clamp } from 'common/math';
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Blink,
Box,
@@ -10,7 +6,11 @@ import {
Icon,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { clamp } from 'tgui-core/math';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type FloorData = {
diff --git a/tgui/packages/tgui/interfaces/EmergencyShuttleConsole.tsx b/tgui/packages/tgui/interfaces/EmergencyShuttleConsole.tsx
index 04214e092d634..05a6a7c6faa92 100644
--- a/tgui/packages/tgui/interfaces/EmergencyShuttleConsole.tsx
+++ b/tgui/packages/tgui/interfaces/EmergencyShuttleConsole.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Box, Button, Section, Stack } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Box, Button, Section, Stack } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/EmotePanel.tsx b/tgui/packages/tgui/interfaces/EmotePanel.tsx
index 5c2169091c451..314118fa3cfd2 100644
--- a/tgui/packages/tgui/interfaces/EmotePanel.tsx
+++ b/tgui/packages/tgui/interfaces/EmotePanel.tsx
@@ -1,9 +1,9 @@
import { useState } from 'react';
+import { Box, Button, Flex, Icon, Section } from 'tgui-core/components';
import { BooleanLike } from '../../common/react';
import { capitalizeFirst } from '../../common/string';
import { useBackend } from '../backend';
-import { Box, Button, Flex, Icon, Section } from '../components';
import { Window } from '../layouts';
import { SearchBar } from './common/SearchBar';
diff --git a/tgui/packages/tgui/interfaces/EngravedMessage.jsx b/tgui/packages/tgui/interfaces/EngravedMessage.jsx
index 91a2b3b458fb7..c9cc5d8863a4b 100644
--- a/tgui/packages/tgui/interfaces/EngravedMessage.jsx
+++ b/tgui/packages/tgui/interfaces/EngravedMessage.jsx
@@ -1,7 +1,7 @@
-import { decodeHtmlEntities } from 'common/string';
+import { Box, Button, LabeledList, Section, Stack } from 'tgui-core/components';
+import { decodeHtmlEntities } from 'tgui-core/string';
import { useBackend } from '../backend';
-import { Box, Button, LabeledList, Section, Stack } from '../components';
import { Window } from '../layouts';
export const EngravedMessage = (props) => {
diff --git a/tgui/packages/tgui/interfaces/ExodroneConsole.tsx b/tgui/packages/tgui/interfaces/ExodroneConsole.tsx
index 4839e19760e08..d79f1ae7113e0 100644
--- a/tgui/packages/tgui/interfaces/ExodroneConsole.tsx
+++ b/tgui/packages/tgui/interfaces/ExodroneConsole.tsx
@@ -1,4 +1,3 @@
-import { capitalize } from 'common/string';
import {
createContext,
Fragment,
@@ -6,10 +5,6 @@ import {
useContext,
useState,
} from 'react';
-
-import { resolveAsset } from '../assets';
-import nt_logo from '../assets/bg-nanotrasen.svg';
-import { useBackend } from '../backend';
import {
BlockQuote,
Box,
@@ -22,7 +17,12 @@ import {
ProgressBar,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { capitalize } from 'tgui-core/string';
+
+import { resolveAsset } from '../assets';
+import nt_logo from '../assets/bg-nanotrasen.svg';
+import { useBackend } from '../backend';
import { formatTime } from '../format';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/ExoscannerConsole.tsx b/tgui/packages/tgui/interfaces/ExoscannerConsole.tsx
index f825964de3b8d..2df66473dd56c 100644
--- a/tgui/packages/tgui/interfaces/ExoscannerConsole.tsx
+++ b/tgui/packages/tgui/interfaces/ExoscannerConsole.tsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
BlockQuote,
Box,
@@ -9,7 +8,9 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { formatTime } from '../format';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/ExosuitControlConsole.jsx b/tgui/packages/tgui/interfaces/ExosuitControlConsole.jsx
index 1987005cfca84..748b98e4d310a 100644
--- a/tgui/packages/tgui/interfaces/ExosuitControlConsole.jsx
+++ b/tgui/packages/tgui/interfaces/ExosuitControlConsole.jsx
@@ -1,6 +1,3 @@
-import { toFixed } from 'common/math';
-
-import { useBackend } from '../backend';
import {
AnimatedNumber,
Box,
@@ -8,7 +5,10 @@ import {
LabeledList,
NoticeBox,
Section,
-} from '../components';
+} from 'tgui-core/components';
+import { toFixed } from 'tgui-core/math';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const ExosuitControlConsole = (props) => {
diff --git a/tgui/packages/tgui/interfaces/ExosuitFabricator.tsx b/tgui/packages/tgui/interfaces/ExosuitFabricator.tsx
index e78aae9591bd0..3785e6b5987da 100644
--- a/tgui/packages/tgui/interfaces/ExosuitFabricator.tsx
+++ b/tgui/packages/tgui/interfaces/ExosuitFabricator.tsx
@@ -1,8 +1,8 @@
-import { BooleanLike, classes } from 'common/react';
+import { Box, Button, Icon, Section, Stack } from 'tgui-core/components';
+import { Tooltip } from 'tgui-core/components';
+import { BooleanLike, classes } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Box, Button, Icon, Section, Stack } from '../components';
-import { Tooltip } from '../components';
import { Window } from '../layouts';
import { DesignBrowser } from './Fabrication/DesignBrowser';
import { MaterialAccessBar } from './Fabrication/MaterialAccessBar';
diff --git a/tgui/packages/tgui/interfaces/ExperimentConfigure.jsx b/tgui/packages/tgui/interfaces/ExperimentConfigure.jsx
index d91bc564e4449..8b26ec78b39a3 100644
--- a/tgui/packages/tgui/interfaces/ExperimentConfigure.jsx
+++ b/tgui/packages/tgui/interfaces/ExperimentConfigure.jsx
@@ -1,6 +1,4 @@
import { sortBy } from 'common/collections';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +8,9 @@ import {
Section,
Table,
Tooltip,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
const ExperimentStages = (props) => {
diff --git a/tgui/packages/tgui/interfaces/Experimentator.tsx b/tgui/packages/tgui/interfaces/Experimentator.tsx
index d2fd0b23b26f2..a92f966c6c07f 100644
--- a/tgui/packages/tgui/interfaces/Experimentator.tsx
+++ b/tgui/packages/tgui/interfaces/Experimentator.tsx
@@ -1,7 +1,3 @@
-import { BooleanLike } from 'common/react';
-import { toTitleCase } from 'common/string';
-
-import { useBackend } from '../backend';
import {
Button,
Icon,
@@ -10,7 +6,11 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+import { toTitleCase } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/Fabricator.tsx b/tgui/packages/tgui/interfaces/Fabricator.tsx
index 9c50cf973b31b..0174317d5d038 100644
--- a/tgui/packages/tgui/interfaces/Fabricator.tsx
+++ b/tgui/packages/tgui/interfaces/Fabricator.tsx
@@ -1,4 +1,3 @@
-import { classes } from 'common/react';
import {
Box,
Button,
@@ -8,6 +7,7 @@ import {
Stack,
Tooltip,
} from 'tgui-core/components';
+import { classes } from 'tgui-core/react';
import { useBackend } from '../backend';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/Fax.tsx b/tgui/packages/tgui/interfaces/Fax.tsx
index 1cefc44448bf2..b43b5536df8d5 100644
--- a/tgui/packages/tgui/interfaces/Fax.tsx
+++ b/tgui/packages/tgui/interfaces/Fax.tsx
@@ -1,6 +1,7 @@
+import { Box, Button, LabeledList, Section, Table } from 'tgui-core/components';
+
import { sortBy } from '../../common/collections';
import { useBackend } from '../backend';
-import { Box, Button, LabeledList, Section, Table } from '../components';
import { Window } from '../layouts';
type FaxData = {
diff --git a/tgui/packages/tgui/interfaces/FilingCabinet.tsx b/tgui/packages/tgui/interfaces/FilingCabinet.tsx
index 1e9d6e1b717a1..5eb577ab84259 100644
--- a/tgui/packages/tgui/interfaces/FilingCabinet.tsx
+++ b/tgui/packages/tgui/interfaces/FilingCabinet.tsx
@@ -1,5 +1,6 @@
+import { Box, Button, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Button, Section, Stack } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/Filteriffic.jsx b/tgui/packages/tgui/interfaces/Filteriffic.jsx
index 09bd14264523d..83a66b0da72c1 100644
--- a/tgui/packages/tgui/interfaces/Filteriffic.jsx
+++ b/tgui/packages/tgui/interfaces/Filteriffic.jsx
@@ -1,9 +1,5 @@
import { map } from 'common/collections';
-import { toFixed } from 'common/math';
import { useState } from 'react';
-
-import { numberOfDecimalDigits } from '../../common/math';
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -15,7 +11,11 @@ import {
NoticeBox,
NumberInput,
Section,
-} from '../components';
+} from 'tgui-core/components';
+import { toFixed } from 'tgui-core/math';
+
+import { numberOfDecimalDigits } from '../../common/math';
+import { useBackend } from '../backend';
import { Window } from '../layouts';
const FilterIntegerEntry = (props) => {
diff --git a/tgui/packages/tgui/interfaces/FishAnalyzer.tsx b/tgui/packages/tgui/interfaces/FishAnalyzer.tsx
index 357434c129fcb..1de90f6a64fd0 100644
--- a/tgui/packages/tgui/interfaces/FishAnalyzer.tsx
+++ b/tgui/packages/tgui/interfaces/FishAnalyzer.tsx
@@ -1,8 +1,4 @@
-import { createSearch } from 'common/string';
import { useState } from 'react';
-import { BooleanLike } from 'tgui-core/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -13,7 +9,11 @@ import {
ProgressBar,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+import { createSearch } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type FishData = {
diff --git a/tgui/packages/tgui/interfaces/FishCatalog.tsx b/tgui/packages/tgui/interfaces/FishCatalog.tsx
index 34ee7a629b2c8..59c84e5e6ba54 100644
--- a/tgui/packages/tgui/interfaces/FishCatalog.tsx
+++ b/tgui/packages/tgui/interfaces/FishCatalog.tsx
@@ -1,10 +1,10 @@
import { sortBy } from 'common/collections';
-import { classes } from 'common/react';
-import { capitalize } from 'common/string';
import { useState } from 'react';
+import { Box, Button, LabeledList, Section, Stack } from 'tgui-core/components';
+import { classes } from 'tgui-core/react';
+import { capitalize } from 'tgui-core/string';
import { useBackend } from '../backend';
-import { Box, Button, LabeledList, Section, Stack } from '../components';
import { Window } from '../layouts';
type FishingTips = {
diff --git a/tgui/packages/tgui/interfaces/FishingCalculator.tsx b/tgui/packages/tgui/interfaces/FishingCalculator.tsx
index 7daf82fa60e50..c1dd3f1e202ef 100644
--- a/tgui/packages/tgui/interfaces/FishingCalculator.tsx
+++ b/tgui/packages/tgui/interfaces/FishingCalculator.tsx
@@ -1,9 +1,8 @@
-import { round } from 'common/math';
import { useState } from 'react';
+import { Button, Dropdown, Input, Stack, Table } from 'tgui-core/components';
+import { round } from 'tgui-core/math';
import { useBackend } from '../backend';
-import { Button, Dropdown, Input, Stack, Table } from '../components';
-import { TableCell, TableRow } from '../components/Table';
import { Window } from '../layouts';
type FishCalculatorEntry = {
@@ -83,23 +82,23 @@ export const FishingCalculator = (props) => {
-
- Outcome
- Weight
- Probabilty
- Difficulty
- Count
-
+
+ Outcome
+ Weight
+ Probabilty
+ Difficulty
+ Count
+
{data.info?.map((result) => (
-
- {result.result}
- {result.weight}
-
+
+ {result.result}
+ {result.weight}
+
{round((result.weight / weight_sum) * 100, 2)}%
-
- {result.difficulty}
- {result.count}
-
+
+ {result.difficulty}
+ {result.count}
+
))}
diff --git a/tgui/packages/tgui/interfaces/FishingRod.tsx b/tgui/packages/tgui/interfaces/FishingRod.tsx
index cd1b87051c6a5..300e2bd54e22b 100644
--- a/tgui/packages/tgui/interfaces/FishingRod.tsx
+++ b/tgui/packages/tgui/interfaces/FishingRod.tsx
@@ -1,5 +1,6 @@
+import { Box, Button, Flex, Image, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Button, Flex, Image, Section, Stack } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/Flatpacker.tsx b/tgui/packages/tgui/interfaces/Flatpacker.tsx
index 1cc90276480fc..a6d88a13a409d 100644
--- a/tgui/packages/tgui/interfaces/Flatpacker.tsx
+++ b/tgui/packages/tgui/interfaces/Flatpacker.tsx
@@ -1,7 +1,3 @@
-import { BooleanLike } from 'common/react';
-import { toTitleCase } from 'common/string';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -12,8 +8,11 @@ import {
Section,
Stack,
Table,
-} from '../components';
-import { TableCell } from '../components/Table';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+import { toTitleCase } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
import { MaterialAccessBar } from './Fabrication/MaterialAccessBar';
import { MaterialIcon } from './Fabrication/MaterialIcon';
@@ -181,11 +180,11 @@ const CostPreview = (props: CostPreviewProps) => {
/>
-
+
{toTitleCase(material.name)}
-
+
x{(material.amount / SHEET_MATERIAL_AMOUNT).toFixed(2)}
diff --git a/tgui/packages/tgui/interfaces/Folder.tsx b/tgui/packages/tgui/interfaces/Folder.tsx
index 5faa9f62f5ceb..69ee8351cd81b 100644
--- a/tgui/packages/tgui/interfaces/Folder.tsx
+++ b/tgui/packages/tgui/interfaces/Folder.tsx
@@ -1,5 +1,6 @@
+import { Box, Button, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Button, Section, Stack } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/ForceEvent.tsx b/tgui/packages/tgui/interfaces/ForceEvent.tsx
index 4811e2fc20f2c..b8cee3cb2a39c 100644
--- a/tgui/packages/tgui/interfaces/ForceEvent.tsx
+++ b/tgui/packages/tgui/interfaces/ForceEvent.tsx
@@ -1,8 +1,15 @@
import { paginate } from 'common/collections';
-import { BooleanLike } from 'common/react';
+import {
+ Button,
+ Icon,
+ Input,
+ Section,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend, useLocalState } from '../backend';
-import { Button, Icon, Input, Section, Stack, Tabs } from '../components';
import { Window } from '../layouts';
const CATEGORY_PAGE_ITEMS = 4;
diff --git a/tgui/packages/tgui/interfaces/GasAnalyzer.tsx b/tgui/packages/tgui/interfaces/GasAnalyzer.tsx
index d92197887eb43..1528d295e7240 100644
--- a/tgui/packages/tgui/interfaces/GasAnalyzer.tsx
+++ b/tgui/packages/tgui/interfaces/GasAnalyzer.tsx
@@ -1,5 +1,6 @@
+import { Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Section } from '../components';
import { Window } from '../layouts';
import {
AtmosHandbookContent,
diff --git a/tgui/packages/tgui/interfaces/Gateway.jsx b/tgui/packages/tgui/interfaces/Gateway.jsx
index 5c56f3d9eec1d..7c2100829b4d0 100644
--- a/tgui/packages/tgui/interfaces/Gateway.jsx
+++ b/tgui/packages/tgui/interfaces/Gateway.jsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -6,7 +5,9 @@ import {
NoticeBox,
ProgressBar,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const Gateway = () => {
diff --git a/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx b/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx
index 8391ac97e044d..c6b415f8e2903 100644
--- a/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx
+++ b/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx
@@ -1,5 +1,6 @@
+import { Button, Flex, NoticeBox, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Flex, NoticeBox, Section } from '../components';
import { Window } from '../layouts';
export const GhostPoolProtection = (props) => {
diff --git a/tgui/packages/tgui/interfaces/GlandDispenser.tsx b/tgui/packages/tgui/interfaces/GlandDispenser.tsx
index 5aa23b0457593..6206089269607 100644
--- a/tgui/packages/tgui/interfaces/GlandDispenser.tsx
+++ b/tgui/packages/tgui/interfaces/GlandDispenser.tsx
@@ -1,5 +1,6 @@
+import { Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Section } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/Gps.jsx b/tgui/packages/tgui/interfaces/Gps.jsx
index c12ba6a9efd7e..df751293e11f1 100644
--- a/tgui/packages/tgui/interfaces/Gps.jsx
+++ b/tgui/packages/tgui/interfaces/Gps.jsx
@@ -1,10 +1,17 @@
import { map, sortBy } from 'common/collections';
-import { flow } from 'common/fp';
-import { clamp } from 'common/math';
import { vecLength, vecSubtract } from 'common/vector';
+import {
+ Box,
+ Button,
+ Icon,
+ LabeledList,
+ Section,
+ Table,
+} from 'tgui-core/components';
+import { flow } from 'tgui-core/fp';
+import { clamp } from 'tgui-core/math';
import { useBackend } from '../backend';
-import { Box, Button, Icon, LabeledList, Section, Table } from '../components';
import { Window } from '../layouts';
const coordsToVec = (coords) => map(coords.split(', '), parseFloat);
diff --git a/tgui/packages/tgui/interfaces/GravityGenerator.jsx b/tgui/packages/tgui/interfaces/GravityGenerator.jsx
index fd5a2906225b2..1b96dc5d69616 100644
--- a/tgui/packages/tgui/interfaces/GravityGenerator.jsx
+++ b/tgui/packages/tgui/interfaces/GravityGenerator.jsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -6,7 +5,9 @@ import {
NoticeBox,
ProgressBar,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const GravityGenerator = (props) => {
diff --git a/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx b/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx
index 5a988907524e6..2b836cd995179 100644
--- a/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx
+++ b/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -12,7 +11,9 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type ColorEntry = {
diff --git a/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx b/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx
index 48b01dfd88506..4cea15f229f7c 100644
--- a/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx
+++ b/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Button, NoticeBox, Section, Table } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Button, NoticeBox, Section, Table } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx b/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx
index 857ae24173245..8362e1fa82b95 100644
--- a/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx
+++ b/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx
@@ -1,5 +1,11 @@
+import {
+ Button,
+ LabeledList,
+ NumberInput,
+ Section,
+} from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, LabeledList, NumberInput, Section } from '../components';
import { Window } from '../layouts';
export const GulagTeleporterConsole = (props) => {
diff --git a/tgui/packages/tgui/interfaces/HealthSensor.tsx b/tgui/packages/tgui/interfaces/HealthSensor.tsx
index fbff3aaa1eae0..c6c0e1a549883 100644
--- a/tgui/packages/tgui/interfaces/HealthSensor.tsx
+++ b/tgui/packages/tgui/interfaces/HealthSensor.tsx
@@ -1,7 +1,12 @@
-import { BooleanLike } from 'common/react';
+import {
+ AnimatedNumber,
+ Button,
+ ProgressBar,
+ Section,
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { AnimatedNumber, Button, ProgressBar, Section } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx b/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx
index 835f94d8a7e1d..5bd8a94c06b2f 100644
--- a/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx
+++ b/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx
@@ -1,5 +1,3 @@
-import { BooleanLike } from '../../common/react';
-import { useBackend } from '../backend';
import {
Button,
ColorBox,
@@ -7,7 +5,10 @@ import {
LabeledList,
NumberInput,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { BooleanLike } from '../../common/react';
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type EyeColorData = {
diff --git a/tgui/packages/tgui/interfaces/HoloPay.tsx b/tgui/packages/tgui/interfaces/HoloPay.tsx
index c0e3d134c8b31..c8e64f50b8644 100644
--- a/tgui/packages/tgui/interfaces/HoloPay.tsx
+++ b/tgui/packages/tgui/interfaces/HoloPay.tsx
@@ -1,6 +1,4 @@
-import { decodeHtmlEntities } from 'common/string';
import { useState } from 'react';
-import { useBackend } from 'tgui/backend';
import {
Box,
Button,
@@ -13,8 +11,11 @@ import {
Table,
TextArea,
Tooltip,
-} from 'tgui/components';
-import { Window } from 'tgui/layouts';
+} from 'tgui-core/components';
+import { decodeHtmlEntities } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
+import { Window } from '../layouts';
type HoloPayData = {
available_logos: string[];
diff --git a/tgui/packages/tgui/interfaces/Holodeck.jsx b/tgui/packages/tgui/interfaces/Holodeck.jsx
index 7ebff7d574e78..cf81bf04630d3 100644
--- a/tgui/packages/tgui/interfaces/Holodeck.jsx
+++ b/tgui/packages/tgui/interfaces/Holodeck.jsx
@@ -1,5 +1,6 @@
+import { Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Section } from '../components';
import { Window } from '../layouts';
export const Holodeck = (props) => {
diff --git a/tgui/packages/tgui/interfaces/Holopad.jsx b/tgui/packages/tgui/interfaces/Holopad.jsx
index 177c5566feb09..6c234c25bfa9f 100644
--- a/tgui/packages/tgui/interfaces/Holopad.jsx
+++ b/tgui/packages/tgui/interfaces/Holopad.jsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -8,7 +7,9 @@ import {
Modal,
NoticeBox,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const Holopad = (props) => {
diff --git a/tgui/packages/tgui/interfaces/HotkeysHelp.tsx b/tgui/packages/tgui/interfaces/HotkeysHelp.tsx
index 7f4a5f95e951c..96beb2aa10c08 100644
--- a/tgui/packages/tgui/interfaces/HotkeysHelp.tsx
+++ b/tgui/packages/tgui/interfaces/HotkeysHelp.tsx
@@ -1,5 +1,6 @@
+import { Box, Section, Table, Tooltip } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Section, Table, Tooltip } from '../components';
import { Window } from '../layouts';
type BindingInfo = {
diff --git a/tgui/packages/tgui/interfaces/HypnoChair.jsx b/tgui/packages/tgui/interfaces/HypnoChair.jsx
index 671cd16aa73c2..51ddf7f5064b6 100644
--- a/tgui/packages/tgui/interfaces/HypnoChair.jsx
+++ b/tgui/packages/tgui/interfaces/HypnoChair.jsx
@@ -1,5 +1,12 @@
+import {
+ Button,
+ Icon,
+ Input,
+ LabeledList,
+ Section,
+} from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Icon, Input, LabeledList, Section } from '../components';
import { Window } from '../layouts';
export const HypnoChair = (props) => {
diff --git a/tgui/packages/tgui/interfaces/IVDrip.tsx b/tgui/packages/tgui/interfaces/IVDrip.tsx
index 4254f53fa549b..8807ca7cd7f10 100644
--- a/tgui/packages/tgui/interfaces/IVDrip.tsx
+++ b/tgui/packages/tgui/interfaces/IVDrip.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
Section,
Slider,
Tooltip,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type IVDripData = {
diff --git a/tgui/packages/tgui/interfaces/ImplantChair.jsx b/tgui/packages/tgui/interfaces/ImplantChair.jsx
index 44d5f3a17240d..bb45f02a8bd6d 100644
--- a/tgui/packages/tgui/interfaces/ImplantChair.jsx
+++ b/tgui/packages/tgui/interfaces/ImplantChair.jsx
@@ -1,5 +1,6 @@
+import { Button, Icon, LabeledList, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Icon, LabeledList, Section } from '../components';
import { Window } from '../layouts';
export const ImplantChair = (props) => {
diff --git a/tgui/packages/tgui/interfaces/ImplantPad.tsx b/tgui/packages/tgui/interfaces/ImplantPad.tsx
index 90ec17261f613..ec5bf47d04240 100644
--- a/tgui/packages/tgui/interfaces/ImplantPad.tsx
+++ b/tgui/packages/tgui/interfaces/ImplantPad.tsx
@@ -1,6 +1,7 @@
+import { Box, Button, Divider, Flex } from 'tgui-core/components';
+
import { BooleanLike } from '../../common/react';
import { useBackend } from '../backend';
-import { Box, Button, Divider, Flex } from '../components';
import { Window } from '../layouts';
import { sanitizeText } from '../sanitize';
diff --git a/tgui/packages/tgui/interfaces/InfraredEmitter.tsx b/tgui/packages/tgui/interfaces/InfraredEmitter.tsx
index 24aad262f893f..ae2748c4ebc4c 100644
--- a/tgui/packages/tgui/interfaces/InfraredEmitter.tsx
+++ b/tgui/packages/tgui/interfaces/InfraredEmitter.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Button, LabeledList, Section } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Button, LabeledList, Section } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/InfuserBook.tsx b/tgui/packages/tgui/interfaces/InfuserBook.tsx
index 70169b44651de..d4091ae421860 100644
--- a/tgui/packages/tgui/interfaces/InfuserBook.tsx
+++ b/tgui/packages/tgui/interfaces/InfuserBook.tsx
@@ -1,8 +1,15 @@
import { paginate, range } from 'common/collections';
import { useState } from 'react';
+import {
+ BlockQuote,
+ Box,
+ Button,
+ Section,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
import { useBackend } from '../backend';
-import { BlockQuote, Box, Button, Section, Stack, Tabs } from '../components';
import { Window } from '../layouts';
type Entry = {
diff --git a/tgui/packages/tgui/interfaces/InstrumentEditor.tsx b/tgui/packages/tgui/interfaces/InstrumentEditor.tsx
index 0afbff0a967bb..594ebbcaff2f7 100644
--- a/tgui/packages/tgui/interfaces/InstrumentEditor.tsx
+++ b/tgui/packages/tgui/interfaces/InstrumentEditor.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
NumberInput,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/Intellicard.jsx b/tgui/packages/tgui/interfaces/Intellicard.jsx
index ed172df03d001..4bca0486d6a8a 100644
--- a/tgui/packages/tgui/interfaces/Intellicard.jsx
+++ b/tgui/packages/tgui/interfaces/Intellicard.jsx
@@ -1,11 +1,12 @@
-import { useBackend } from '../backend';
import {
BlockQuote,
Button,
LabeledList,
ProgressBar,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const Intellicard = (props) => {
diff --git a/tgui/packages/tgui/interfaces/Interview.tsx b/tgui/packages/tgui/interfaces/Interview.tsx
index 3f53a177c980f..a02e578e00755 100644
--- a/tgui/packages/tgui/interfaces/Interview.tsx
+++ b/tgui/packages/tgui/interfaces/Interview.tsx
@@ -1,6 +1,4 @@
import { ReactNode, useState } from 'react';
-
-import { useBackend } from '../backend';
import {
BlockQuote,
Box,
@@ -8,7 +6,9 @@ import {
NoticeBox,
Section,
TextArea,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/InterviewManager.jsx b/tgui/packages/tgui/interfaces/InterviewManager.jsx
index 0e92d662f3f50..d2e6d0fb85b06 100644
--- a/tgui/packages/tgui/interfaces/InterviewManager.jsx
+++ b/tgui/packages/tgui/interfaces/InterviewManager.jsx
@@ -1,5 +1,6 @@
+import { Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Section } from '../components';
import { Window } from '../layouts';
export const InterviewManager = (props) => {
diff --git a/tgui/packages/tgui/interfaces/JobSelection.tsx b/tgui/packages/tgui/interfaces/JobSelection.tsx
index 44f7c8194f70a..e598ef37f7fe5 100644
--- a/tgui/packages/tgui/interfaces/JobSelection.tsx
+++ b/tgui/packages/tgui/interfaces/JobSelection.tsx
@@ -1,8 +1,5 @@
import { deepMerge } from 'common/collections';
-import { Color } from 'common/color';
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
+import { Color } from 'tgui-core/color';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
NoticeBox,
Stack,
StyleableSection,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
import { JOB2ICON } from './common/JobToIcon';
diff --git a/tgui/packages/tgui/interfaces/Jukebox.tsx b/tgui/packages/tgui/interfaces/Jukebox.tsx
index fe9eb054aef66..dd4155b0f466b 100644
--- a/tgui/packages/tgui/interfaces/Jukebox.tsx
+++ b/tgui/packages/tgui/interfaces/Jukebox.tsx
@@ -1,7 +1,4 @@
import { sortBy } from 'common/collections';
-
-import { BooleanLike } from '../../common/react';
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
LabeledControls,
LabeledList,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { BooleanLike } from '../../common/react';
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Song = {
diff --git a/tgui/packages/tgui/interfaces/KeyComboModal.tsx b/tgui/packages/tgui/interfaces/KeyComboModal.tsx
index 0340ae811cd77..e5368292e2e16 100644
--- a/tgui/packages/tgui/interfaces/KeyComboModal.tsx
+++ b/tgui/packages/tgui/interfaces/KeyComboModal.tsx
@@ -1,8 +1,8 @@
-import { isEscape, KEY } from 'common/keys';
import { useState } from 'react';
+import { Autofocus, Box, Button, Section, Stack } from 'tgui-core/components';
+import { isEscape, KEY } from 'tgui-core/keys';
import { useBackend, useLocalState } from '../backend';
-import { Autofocus, Box, Button, Section, Stack } from '../components';
import { Window } from '../layouts';
import { InputButtons } from './common/InputButtons';
import { Loader } from './common/Loader';
diff --git a/tgui/packages/tgui/interfaces/KeycardAuth.jsx b/tgui/packages/tgui/interfaces/KeycardAuth.jsx
index b29ac9de75e9a..b0d88d37735a7 100644
--- a/tgui/packages/tgui/interfaces/KeycardAuth.jsx
+++ b/tgui/packages/tgui/interfaces/KeycardAuth.jsx
@@ -1,5 +1,6 @@
+import { Box, Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Button, Section } from '../components';
import { Window } from '../layouts';
export const KeycardAuth = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LTSRBT.tsx b/tgui/packages/tgui/interfaces/LTSRBT.tsx
index d8c399d2705a8..48e2941b53f86 100644
--- a/tgui/packages/tgui/interfaces/LTSRBT.tsx
+++ b/tgui/packages/tgui/interfaces/LTSRBT.tsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Button,
Image,
@@ -7,7 +6,9 @@ import {
Section,
Stack,
TextArea,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx b/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx
index 4e0aebdcdd5bb..0cd5f6823615e 100644
--- a/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx
+++ b/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx
@@ -1,7 +1,6 @@
-import { toTitleCase } from 'common/string';
+import { Button, LabeledList, Section } from 'tgui-core/components';
import { useBackend } from '../backend';
-import { Box, Button, LabeledList, Section, Table } from '../components';
import { Window } from '../layouts';
export const LaborClaimConsole = (props) => {
@@ -40,8 +39,8 @@ export const LaborClaimConsole = (props) => {
materials, points will be calculated based on volume of delivered
materials.
- Please note that only sheets printed with our manufacturer's seal of
- quality, such as those produced from the work camp furnace, will be
+ Please note that only sheets printed with our manufacturer's seal
+ of quality, such as those produced from the work camp furnace, will be
accepted as proof of labour.
diff --git a/tgui/packages/tgui/interfaces/LanguageMenu.jsx b/tgui/packages/tgui/interfaces/LanguageMenu.jsx
index fc5a43feb6133..404ac8484ef99 100644
--- a/tgui/packages/tgui/interfaces/LanguageMenu.jsx
+++ b/tgui/packages/tgui/interfaces/LanguageMenu.jsx
@@ -1,5 +1,6 @@
+import { Button, LabeledList, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, LabeledList, Section } from '../components';
import { Window } from '../layouts';
export const LanguageMenu = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx b/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx
index fdad995589449..e584a9deed0ce 100644
--- a/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx
+++ b/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -9,7 +8,9 @@ import {
Section,
Stack,
Tabs,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx b/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx
index 5e7d1ba8516b4..8dfa89318eda5 100644
--- a/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx
+++ b/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { NoticeBox } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { NoticeBox } from '../components';
import { Window } from '../layouts';
import { LaunchpadControl } from './LaunchpadConsole';
diff --git a/tgui/packages/tgui/interfaces/Lawpanel.tsx b/tgui/packages/tgui/interfaces/Lawpanel.tsx
index 3ce64868ff8aa..7d72c527ab25a 100644
--- a/tgui/packages/tgui/interfaces/Lawpanel.tsx
+++ b/tgui/packages/tgui/interfaces/Lawpanel.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Button,
Collapsible,
@@ -11,7 +8,10 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
const lawtype_to_color = {
diff --git a/tgui/packages/tgui/interfaces/LibraryAdmin.tsx b/tgui/packages/tgui/interfaces/LibraryAdmin.tsx
index fd88fdc48fb2f..5e9ead80a6054 100644
--- a/tgui/packages/tgui/interfaces/LibraryAdmin.tsx
+++ b/tgui/packages/tgui/interfaces/LibraryAdmin.tsx
@@ -1,8 +1,5 @@
import { map, sortBy } from 'common/collections';
-import { capitalize } from 'common/string';
import { useState } from 'react';
-
-import { useBackend, useLocalState } from '../backend';
import {
Box,
Button,
@@ -13,7 +10,10 @@ import {
Stack,
Table,
TextArea,
-} from '../components';
+} from 'tgui-core/components';
+import { capitalize } from 'tgui-core/string';
+
+import { useBackend, useLocalState } from '../backend';
import { Window } from '../layouts';
import { PageSelect } from './LibraryConsole';
diff --git a/tgui/packages/tgui/interfaces/LibraryConsole.jsx b/tgui/packages/tgui/interfaces/LibraryConsole.jsx
index de10b3a2e86b0..87d87f9bac84f 100644
--- a/tgui/packages/tgui/interfaces/LibraryConsole.jsx
+++ b/tgui/packages/tgui/interfaces/LibraryConsole.jsx
@@ -1,8 +1,5 @@
import { map, sortBy } from 'common/collections';
-import { classes } from 'common/react';
import { useState } from 'react';
-
-import { useBackend, useLocalState } from '../backend';
import {
Box,
Button,
@@ -16,7 +13,10 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+import { classes } from 'tgui-core/react';
+
+import { useBackend, useLocalState } from '../backend';
import { Window } from '../layouts';
import { sanitizeText } from '../sanitize';
diff --git a/tgui/packages/tgui/interfaces/LibraryScanner.jsx b/tgui/packages/tgui/interfaces/LibraryScanner.jsx
index efa7156abfbee..3f06b7b3ab36f 100644
--- a/tgui/packages/tgui/interfaces/LibraryScanner.jsx
+++ b/tgui/packages/tgui/interfaces/LibraryScanner.jsx
@@ -1,5 +1,6 @@
+import { Button, NoticeBox, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, NoticeBox, Section, Stack } from '../components';
import { Window } from '../layouts';
export const LibraryScanner = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LibraryVisitor.jsx b/tgui/packages/tgui/interfaces/LibraryVisitor.jsx
index cb27e42704d98..50ea9bad108c0 100644
--- a/tgui/packages/tgui/interfaces/LibraryVisitor.jsx
+++ b/tgui/packages/tgui/interfaces/LibraryVisitor.jsx
@@ -1,6 +1,4 @@
import { map, sortBy } from 'common/collections';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +8,9 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
import { PageSelect } from './LibraryConsole';
diff --git a/tgui/packages/tgui/interfaces/LightController.tsx b/tgui/packages/tgui/interfaces/LightController.tsx
index 810b644f90f6b..e65104fd9c5a1 100644
--- a/tgui/packages/tgui/interfaces/LightController.tsx
+++ b/tgui/packages/tgui/interfaces/LightController.tsx
@@ -1,9 +1,17 @@
import { useState } from 'react';
+import {
+ Box,
+ Button,
+ Knob,
+ Section,
+ Slider,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
import { round } from '../../common/math';
import { BooleanLike, classes } from '../../common/react';
import { useBackend } from '../backend';
-import { Box, Button, Knob, Section, Slider, Stack, Tabs } from '../components';
import { Window } from '../layouts';
enum Direction {
diff --git a/tgui/packages/tgui/interfaces/LightSpawn.tsx b/tgui/packages/tgui/interfaces/LightSpawn.tsx
index 68e3430d8178e..75c1f2cf07d6c 100644
--- a/tgui/packages/tgui/interfaces/LightSpawn.tsx
+++ b/tgui/packages/tgui/interfaces/LightSpawn.tsx
@@ -1,8 +1,16 @@
import { useState } from 'react';
+import {
+ Box,
+ Button,
+ Knob,
+ Section,
+ Slider,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
import { classes } from '../../common/react';
import { useBackend, useLocalState } from '../backend';
-import { Box, Button, Knob, Section, Slider, Stack, Tabs } from '../components';
import { Window } from '../layouts';
enum Direction {
diff --git a/tgui/packages/tgui/interfaces/Limbgrower.jsx b/tgui/packages/tgui/interfaces/Limbgrower.jsx
index 363b416f12fde..8ee02d086b78e 100644
--- a/tgui/packages/tgui/interfaces/Limbgrower.jsx
+++ b/tgui/packages/tgui/interfaces/Limbgrower.jsx
@@ -1,4 +1,3 @@
-import { useBackend, useSharedState } from '../backend';
import {
Box,
Button,
@@ -7,7 +6,9 @@ import {
LabeledList,
Section,
Tabs,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend, useSharedState } from '../backend';
import { Window } from '../layouts';
export const Limbgrower = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LingMMITalk.tsx b/tgui/packages/tgui/interfaces/LingMMITalk.tsx
index 9f4effb2e663a..fc1f0da7c9e80 100644
--- a/tgui/packages/tgui/interfaces/LingMMITalk.tsx
+++ b/tgui/packages/tgui/interfaces/LingMMITalk.tsx
@@ -1,7 +1,7 @@
import { useState } from 'react';
+import { Button, ByondUi, Stack, TextArea } from 'tgui-core/components';
import { useBackend } from '../backend';
-import { Button, ByondUi, Stack, TextArea } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/LockedSafe.tsx b/tgui/packages/tgui/interfaces/LockedSafe.tsx
index ba8d6bc966140..77d042912afe1 100644
--- a/tgui/packages/tgui/interfaces/LockedSafe.tsx
+++ b/tgui/packages/tgui/interfaces/LockedSafe.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Box, Flex } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Box, Flex } from '../components';
import { Window } from '../layouts';
import { NukeKeypad } from './NuclearBomb';
diff --git a/tgui/packages/tgui/interfaces/LogViewer.tsx b/tgui/packages/tgui/interfaces/LogViewer.tsx
index ffdd18a730fe1..0fe5daf5ec783 100644
--- a/tgui/packages/tgui/interfaces/LogViewer.tsx
+++ b/tgui/packages/tgui/interfaces/LogViewer.tsx
@@ -1,6 +1,4 @@
import { useState } from 'react';
-
-import { useBackend } from '../backend';
import {
Button,
Collapsible,
@@ -8,7 +6,9 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type LogViewerData = {
diff --git a/tgui/packages/tgui/interfaces/MODpaint.jsx b/tgui/packages/tgui/interfaces/MODpaint.jsx
index 7a047b384260c..0d9a56e459eb5 100644
--- a/tgui/packages/tgui/interfaces/MODpaint.jsx
+++ b/tgui/packages/tgui/interfaces/MODpaint.jsx
@@ -1,6 +1,3 @@
-import { capitalize } from 'common/string';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -9,7 +6,10 @@ import {
Section,
Slider,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { capitalize } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
const colorToMatrix = (param) => {
diff --git a/tgui/packages/tgui/interfaces/MODsuit.tsx b/tgui/packages/tgui/interfaces/MODsuit.tsx
index 11d1e294824aa..d2b96a7735c0f 100644
--- a/tgui/packages/tgui/interfaces/MODsuit.tsx
+++ b/tgui/packages/tgui/interfaces/MODsuit.tsx
@@ -1,7 +1,4 @@
-import { BooleanLike } from 'common/react';
import { useState } from 'react';
-
-import { useBackend } from '../backend';
import {
AnimatedNumber,
Box,
@@ -18,32 +15,39 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { formatSiUnit } from '../format';
import { Window } from '../layouts';
type MODsuitData = {
// Static
ui_theme: string;
- control: string;
complexity_max: number;
- parts: PartData[];
// Dynamic
suit_status: SuitStatus;
user_status: UserStatus;
module_custom_status: ModuleCustomStatus;
module_info: Module[];
+ control: string;
+ parts: PartData[];
};
type PartData = {
slot: string;
name: string;
+ deployed: BooleanLike;
+ ref: string;
};
type SuitStatus = {
core_name: string;
- cell_charge_current: number;
- cell_charge_max: number;
+ charge_current: number;
+ charge_max: number;
+ chargebar_color: string;
+ chargebar_string: string;
active: BooleanLike;
open: BooleanLike;
seconds_electrified: number;
@@ -53,8 +57,8 @@ type SuitStatus = {
complexity: number;
selected_module: string;
ai_name: string;
- has_pai: boolean;
- is_ai: boolean;
+ has_pai: BooleanLike;
+ is_ai: BooleanLike;
link_id: string;
link_freq: string;
link_call: string;
@@ -257,6 +261,20 @@ const ConfigurePinEntry = (props) => {
);
};
+// fuck u smartkar configs werent meant to be used as actions 🖕🖕🖕
+// and really u couldnt be bothered to make this and instead used
+// the pin entry? 🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕
+const ConfigureButtonEntry = (props) => {
+ const { name, value, module_ref } = props;
+ const { act } = useBackend();
+ return (
+
act('configure', { key: name, ref: module_ref })}
+ icon={value}
+ />
+ );
+};
+
const ConfigureDataEntry = (props) => {
const { name, display_name, type, value, values, module_ref } = props;
const configureEntryTypes = {
@@ -264,6 +282,7 @@ const ConfigureDataEntry = (props) => {
bool: ,
color: ,
list: ,
+ button: ,
pin: ,
};
return (
@@ -347,9 +366,10 @@ const radiationLevels = (param) => {
const SuitStatusSection = (props) => {
const { act, data } = useBackend();
const {
- core_name,
- cell_charge_current,
- cell_charge_max,
+ charge_current,
+ charge_max,
+ chargebar_color,
+ chargebar_string,
active,
open,
seconds_electrified,
@@ -368,9 +388,6 @@ const SuitStatusSection = (props) => {
: active
? 'Active'
: 'Inactive';
- const charge_percent = Math.round(
- (100 * cell_charge_current) / cell_charge_max,
- );
return (
{
- {!core_name
- ? 'No Core Detected'
- : cell_charge_max === 1
- ? 'Power Cell Missing'
- : cell_charge_current === 1e31
- ? 'Infinite'
- : `${formatSiUnit(
- cell_charge_current,
- 0,
- 'J',
- )} of ${formatSiUnit(
- cell_charge_max,
- 0,
- 'J',
- )} (${charge_percent}%)`}
+ {chargebar_string}
@@ -484,14 +483,14 @@ const HardwareSection = (props) => {
return (
-
- {ai_name || 'No AI Detected'}
-
+ {control}
{core_name || 'No Core Detected'}
- {control}
+
+ {ai_name || 'No AI Detected'}
+
);
@@ -504,7 +503,18 @@ const ModParts = (props) => {
<>
{parts.map((part) => {
return (
-
+ act('deploy', { ref: part.ref })}
+ />
+ }
+ >
{part.name}
);
diff --git a/tgui/packages/tgui/interfaces/MafiaPanel.tsx b/tgui/packages/tgui/interfaces/MafiaPanel.tsx
index 179ef4d38094c..2044c6609bd52 100644
--- a/tgui/packages/tgui/interfaces/MafiaPanel.tsx
+++ b/tgui/packages/tgui/interfaces/MafiaPanel.tsx
@@ -1,8 +1,4 @@
-import { BooleanLike, classes } from 'common/react';
-import { decodeHtmlEntities } from 'common/string';
import { useState } from 'react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -13,7 +9,11 @@ import {
Stack,
Tabs,
TextArea,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike, classes } from 'tgui-core/react';
+import { decodeHtmlEntities } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
import { formatTime } from '../format';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/ManufacturingSorter.tsx b/tgui/packages/tgui/interfaces/ManufacturingSorter.tsx
index 9ae38a3e5b616..ffebb2d61aa8f 100644
--- a/tgui/packages/tgui/interfaces/ManufacturingSorter.tsx
+++ b/tgui/packages/tgui/interfaces/ManufacturingSorter.tsx
@@ -1,7 +1,14 @@
-import { BooleanLike } from 'common/react';
+import {
+ Box,
+ Button,
+ Icon,
+ LabeledList,
+ Section,
+ Stack,
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Box, Button, Icon, LabeledList, Section, Stack } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/MassDriverControl.jsx b/tgui/packages/tgui/interfaces/MassDriverControl.jsx
index adcd246109314..b19b5962a9164 100644
--- a/tgui/packages/tgui/interfaces/MassDriverControl.jsx
+++ b/tgui/packages/tgui/interfaces/MassDriverControl.jsx
@@ -1,5 +1,12 @@
+import {
+ Box,
+ Button,
+ LabeledList,
+ NumberInput,
+ Section,
+} from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Button, LabeledList, NumberInput, Section } from '../components';
import { Window } from '../layouts';
export const MassDriverControl = (props) => {
diff --git a/tgui/packages/tgui/interfaces/MassSpec.tsx b/tgui/packages/tgui/interfaces/MassSpec.tsx
index a6074ce95d57e..f2f212c241192 100644
--- a/tgui/packages/tgui/interfaces/MassSpec.tsx
+++ b/tgui/packages/tgui/interfaces/MassSpec.tsx
@@ -1,7 +1,3 @@
-import { round } from 'common/math';
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +6,11 @@ import {
Section,
Slider,
Table,
-} from '../components';
+} from 'tgui-core/components';
+import { round } from 'tgui-core/math';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Reagent = {
@@ -403,7 +403,7 @@ const MassSpectroscopy = (props: SpectroscopyProps) => {
step={graphUpperRange / base_width}
suppressFlicker
height={17.2}
- format={(value: number) => round(value, 2)}
+ format={(value: number) => round(value, 2).toString()}
width={(centerValue / graphUpperRange) * base_width + 'px'}
value={lowerRange}
minValue={graphLowerRange}
@@ -418,7 +418,7 @@ const MassSpectroscopy = (props: SpectroscopyProps) => {
round(value, 2)}
+ format={(value: number) => round(value, 2).toString()}
step={graphUpperRange / base_width}
width={base_width - (centerValue / graphUpperRange) * base_width + 'px'}
value={upperRange}
@@ -437,7 +437,7 @@ const MassSpectroscopy = (props: SpectroscopyProps) => {
mt={1.2}
value={centerValue}
height={1.9}
- format={(value: number) => round(value, 2)}
+ format={(value: number) => round(value, 2).toString()}
width={base_width + 'px'}
minValue={graphLowerRange + 1}
maxValue={graphUpperRange - 1}
diff --git a/tgui/packages/tgui/interfaces/MatMarket.tsx b/tgui/packages/tgui/interfaces/MatMarket.tsx
index d793b8501f0b4..5dccaf99bef01 100644
--- a/tgui/packages/tgui/interfaces/MatMarket.tsx
+++ b/tgui/packages/tgui/interfaces/MatMarket.tsx
@@ -1,8 +1,4 @@
import { sortBy } from 'common/collections';
-import { BooleanLike } from 'common/react';
-import { toTitleCase } from 'common/string';
-
-import { useBackend } from '../backend';
import {
Button,
Collapsible,
@@ -10,7 +6,11 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+import { toTitleCase } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
import { formatMoney } from '../format';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/MatrixMathTester.tsx b/tgui/packages/tgui/interfaces/MatrixMathTester.tsx
index 118c891c6ae89..2cf28e24acf1e 100644
--- a/tgui/packages/tgui/interfaces/MatrixMathTester.tsx
+++ b/tgui/packages/tgui/interfaces/MatrixMathTester.tsx
@@ -1,8 +1,14 @@
-import { toFixed } from 'common/math';
import { useState } from 'react';
+import {
+ Button,
+ Input,
+ NumberInput,
+ Section,
+ Table,
+} from 'tgui-core/components';
+import { toFixed } from 'tgui-core/math';
import { useBackend } from '../backend';
-import { Button, Input, NumberInput, Section, Table } from '../components';
import { Window } from '../layouts';
const MatrixMathTesterInput = (props: { value: number; varName: string }) => {
diff --git a/tgui/packages/tgui/interfaces/MechBayPowerConsole.jsx b/tgui/packages/tgui/interfaces/MechBayPowerConsole.jsx
index 3c56bcab7ddc4..323241e0d9520 100644
--- a/tgui/packages/tgui/interfaces/MechBayPowerConsole.jsx
+++ b/tgui/packages/tgui/interfaces/MechBayPowerConsole.jsx
@@ -1,11 +1,12 @@
-import { useBackend } from '../backend';
import {
Button,
LabeledList,
NoticeBox,
ProgressBar,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { formatEnergy } from '../format';
import { Window } from '../layouts';
diff --git a/tgui/packages/tgui/interfaces/MechpadConsole.jsx b/tgui/packages/tgui/interfaces/MechpadConsole.jsx
index 938fcbe464ee5..aac7c77c80aed 100644
--- a/tgui/packages/tgui/interfaces/MechpadConsole.jsx
+++ b/tgui/packages/tgui/interfaces/MechpadConsole.jsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -7,7 +6,9 @@ import {
Input,
NoticeBox,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const MechpadControl = (props) => {
diff --git a/tgui/packages/tgui/interfaces/MedicalKiosk.jsx b/tgui/packages/tgui/interfaces/MedicalKiosk.jsx
index 9ca231dd64534..15708faa787ca 100644
--- a/tgui/packages/tgui/interfaces/MedicalKiosk.jsx
+++ b/tgui/packages/tgui/interfaces/MedicalKiosk.jsx
@@ -1,4 +1,3 @@
-import { useBackend, useSharedState } from '../backend';
import {
AnimatedNumber,
Box,
@@ -9,7 +8,9 @@ import {
ProgressBar,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend, useSharedState } from '../backend';
import { Window } from '../layouts';
export const MedicalKiosk = (props) => {
diff --git a/tgui/packages/tgui/interfaces/MemoryPanel.jsx b/tgui/packages/tgui/interfaces/MemoryPanel.jsx
index 83a846c2a34f1..26b2eb0d0511a 100644
--- a/tgui/packages/tgui/interfaces/MemoryPanel.jsx
+++ b/tgui/packages/tgui/interfaces/MemoryPanel.jsx
@@ -1,5 +1,6 @@
+import { Button, Dimmer, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Dimmer, Section, Stack } from '../components';
import { Window } from '../layouts';
const STORY_VALUE_KEY = -1;
diff --git a/tgui/packages/tgui/interfaces/MessageMonitor.tsx b/tgui/packages/tgui/interfaces/MessageMonitor.tsx
index fb237bb786d4d..ed470c6cef2be 100644
--- a/tgui/packages/tgui/interfaces/MessageMonitor.tsx
+++ b/tgui/packages/tgui/interfaces/MessageMonitor.tsx
@@ -1,7 +1,4 @@
-import { BooleanLike } from 'common/react';
import { Dispatch, SetStateAction, useState } from 'react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
enum Screen {
diff --git a/tgui/packages/tgui/interfaces/Microscope.tsx b/tgui/packages/tgui/interfaces/Microscope.tsx
index 44aa7d2b660b0..dd01d2b7a584a 100644
--- a/tgui/packages/tgui/interfaces/Microscope.tsx
+++ b/tgui/packages/tgui/interfaces/Microscope.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/MineBot.tsx b/tgui/packages/tgui/interfaces/MineBot.tsx
index 9118562cdd0fc..a583b13da72a3 100644
--- a/tgui/packages/tgui/interfaces/MineBot.tsx
+++ b/tgui/packages/tgui/interfaces/MineBot.tsx
@@ -1,7 +1,4 @@
-import { BooleanLike } from 'common/react';
import { useState } from 'react';
-
-import { useBackend } from '../backend';
import {
Button,
Dropdown,
@@ -11,7 +8,10 @@ import {
ProgressBar,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/MinigamesMenu.tsx b/tgui/packages/tgui/interfaces/MinigamesMenu.tsx
index 32aab73f90430..e39c3812a4758 100644
--- a/tgui/packages/tgui/interfaces/MinigamesMenu.tsx
+++ b/tgui/packages/tgui/interfaces/MinigamesMenu.tsx
@@ -1,5 +1,6 @@
+import { Button, Divider, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Divider, Section, Stack } from '../components';
import { Window } from '../layouts';
export const MinigamesMenu = (props) => {
diff --git a/tgui/packages/tgui/interfaces/ModularShieldGen.tsx b/tgui/packages/tgui/interfaces/ModularShieldGen.tsx
index 2ac07fa63c76f..fb9e7d07736fa 100644
--- a/tgui/packages/tgui/interfaces/ModularShieldGen.tsx
+++ b/tgui/packages/tgui/interfaces/ModularShieldGen.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Button,
LabeledList,
@@ -8,7 +5,10 @@ import {
ProgressBar,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type ModularShieldGenData = {
@@ -25,7 +25,6 @@ type ModularShieldGenData = {
};
export const ModularShieldGen = (props) => {
- const { topLevel } = props;
const { act, data } = useBackend();
const {
max_strength,
@@ -50,7 +49,6 @@ export const ModularShieldGen = (props) => {
color={recovering ? 'red' : 'white'}
>
{
{
{
@@ -58,7 +62,13 @@ export const OreContainer = (props) => {
-
+ }
+ />
@@ -87,30 +97,6 @@ export const OreContainer = (props) => {
);
};
-const RetrieveIcon = (props) => {
- const { data } = useBackend();
- const { ore_images = [] } = data;
- const { ore } = props;
-
- let icon_display = ore_images.find((icon) => icon.name === ore.name);
-
- if (!icon_display) {
- return null;
- }
-
- return (
-
- );
-};
-
const Orename = (props) => {
const { ore_name } = props;
const return_name = ore_name.split(' ');
diff --git a/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx b/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx
index 3bb87d7dce240..b9088f32e0d4a 100644
--- a/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx
+++ b/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx
@@ -6,8 +6,8 @@ import {
BlockQuote,
Box,
Button,
+ DmIcon,
Icon,
- Image,
Input,
LabeledList,
Section,
@@ -175,14 +175,7 @@ export const OreRedemptionMachine = (props) => {
};
const MaterialRow = (props) => {
- const { data } = useBackend();
- const { compact } = props;
- const { material_icons } = data;
- const { material, onRelease } = props;
-
- const display = material_icons.find(
- (mat_icon) => mat_icon.id === material.id,
- );
+ const { compact, material, onRelease } = props;
const sheet_amounts = Math.floor(material.amount);
const print_amount = 5;
@@ -192,14 +185,12 @@ const MaterialRow = (props) => {
{!compact && (
- }
/>
)}
diff --git a/tgui/packages/tgui/interfaces/ProduceConsole.tsx b/tgui/packages/tgui/interfaces/ProduceConsole.tsx
index 686b194abea8c..b13fda8af077c 100644
--- a/tgui/packages/tgui/interfaces/ProduceConsole.tsx
+++ b/tgui/packages/tgui/interfaces/ProduceConsole.tsx
@@ -8,8 +8,8 @@ import {
Button,
Dimmer,
Divider,
+ DmIcon,
Icon,
- Image,
Input,
NumberInput,
Section,
@@ -26,7 +26,8 @@ type OrderDatum = {
cat: string;
ref: string;
cost: number;
- product_icon: string;
+ icon: string;
+ icon_state: string;
};
type Item = {
@@ -127,13 +128,13 @@ const ShoppingTab = (props) => {
/>{' '}
{!condensed && (
- }
/>
)}
diff --git a/tgui/packages/tgui/interfaces/RapidPipeDispenser.tsx b/tgui/packages/tgui/interfaces/RapidPipeDispenser.tsx
index 3bfe22f816479..46b58c4e381bd 100644
--- a/tgui/packages/tgui/interfaces/RapidPipeDispenser.tsx
+++ b/tgui/packages/tgui/interfaces/RapidPipeDispenser.tsx
@@ -48,29 +48,6 @@ const TOOLS = [
},
];
-const LAYERS = [
- {
- name: '1',
- bitmask: 1,
- },
- {
- name: '2',
- bitmask: 2,
- },
- {
- name: '3',
- bitmask: 4,
- },
- {
- name: '4',
- bitmask: 8,
- },
- {
- name: '5',
- bitmask: 16,
- },
-] as const;
-
type DirectionsAllowed = {
north: BooleanLike;
south: BooleanLike;
@@ -113,19 +90,19 @@ type Preview = {
};
type Data = {
+ // Static
+ paint_colors: Colors;
+ max_pipe_layers: number;
// Dynamic
category: number;
pipe_layers: number;
multi_layer: BooleanLike;
- ducting_layer: number;
categories: Category[];
selected_recipe: string;
selected_color: string;
selected_category: string;
mode: number;
init_directions: DirectionsAllowed;
- // Static
- paint_colors: Colors;
};
export const ColorItem = (props) => {
@@ -168,13 +145,14 @@ const ModeItem = (props) => {
act('mode', {
mode: tool.bitmask,
})
}
- />
+ >
+ {tool.name}
+
))}
);
@@ -201,7 +179,7 @@ const CategoryItem = (props) => {
};
const SelectionSection = (props) => {
- const { act, data } = useBackend();
+ const { data } = useBackend();
const { category: rootCategoryIndex } = data;
return (
@@ -217,37 +195,46 @@ const SelectionSection = (props) => {
const LayerSelect = (props) => {
const { act, data } = useBackend();
- const { pipe_layers } = data;
- const { multi_layer } = data;
+ const { pipe_layers, multi_layer, max_pipe_layers } = data;
+ const layer_to_bitmask = (layer: number) => {
+ return 1 << layer;
+ };
+
return (
- {LAYERS.map((layer) => (
- act('pipe_layers', { pipe_layers: layer.bitmask })}
- />
- ))}
+ {Array(max_pipe_layers)
+ .keys()
+ .map((layer) => (
+
+ act('pipe_layers', { pipe_layers: layer_to_bitmask(layer) })
+ }
+ >
+ {layer + 1}
+
+ ))}
{
act('toggle_multi_layer');
}}
- />
+ >
+ Multi
+
);
};
const PreviewSelect = (props) => {
- const { act, data } = useBackend();
+ const { act } = useBackend();
return (
{props.previews.map((preview) => (
@@ -288,8 +275,8 @@ const PreviewSelect = (props) => {
};
const PipeTypeSection = (props) => {
- const { act, data } = useBackend();
- const { categories = [], selected_category, selected_recipe } = data;
+ const { data } = useBackend();
+ const { categories = [], selected_category } = data;
const [categoryName, setCategoryName] = useState(selected_category);
const shownCategory =
categories.find((category) => category.cat_name === categoryName) ||
@@ -411,7 +398,7 @@ export const SmartPipeBlockSection = (props) => {
};
export const RapidPipeDispenser = (props) => {
- const { act, data } = useBackend();
+ const { data } = useBackend();
const { category: rootCategoryIndex } = data;
return (
diff --git a/tgui/packages/tgui/interfaces/RepairBot.tsx b/tgui/packages/tgui/interfaces/RepairBot.tsx
new file mode 100644
index 0000000000000..58bc26bec41d6
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/RepairBot.tsx
@@ -0,0 +1,101 @@
+import { BooleanLike } from 'common/react';
+import React from 'react';
+import { useBackend } from 'tgui/backend';
+import {
+ Button,
+ DmIcon,
+ Flex,
+ NoticeBox,
+ Section,
+ Stack,
+} from 'tgui/components';
+import { BotControl, BotSettings } from 'tgui/interfaces/SimpleBot';
+import { Window } from 'tgui/layouts';
+
+type Data = {
+ can_hack: BooleanLike;
+ custom_controls: Record;
+ emagged: BooleanLike;
+ has_access: BooleanLike;
+ locked: BooleanLike;
+ settings: Settings;
+ repairbot_materials: RepairbotMaterials[];
+};
+
+type RepairbotMaterials = {
+ material_ref: string;
+ material_name: string;
+ material_icon: string;
+ material_icon_state: string;
+};
+
+type Settings = {
+ airplane_mode: BooleanLike;
+ allow_possession: BooleanLike;
+ has_personality: BooleanLike;
+ maintenance_lock: BooleanLike;
+ pai_inserted: boolean;
+ patrol_station: BooleanLike;
+ possession_enabled: BooleanLike;
+ power: BooleanLike;
+};
+
+export function RepairBot(props) {
+ const { data } = useBackend();
+ const { can_hack, locked } = data;
+ const access = !locked || !!can_hack;
+
+ return (
+
+
+
+
+
+
+ {!!access && (
+ <>
+
+
+
+
+
+
+ >
+ )}
+
+
+
+ );
+}
+
+function RepairBotMats(props) {
+ const { act, data } = useBackend();
+ const { repairbot_materials } = data;
+
+ return (
+
+ {repairbot_materials.length === 0 && No Materials! }
+
+ {repairbot_materials.map((mat) => (
+
+
+ act('remove_item', {
+ item_reference: mat.material_ref,
+ })
+ }
+ >
+
+
+
+ ))}
+
+
+ );
+}
diff --git a/tgui/packages/tgui/interfaces/RepairbotResources.tsx b/tgui/packages/tgui/interfaces/RepairbotResources.tsx
new file mode 100644
index 0000000000000..0e82b83d30ad3
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/RepairbotResources.tsx
@@ -0,0 +1,106 @@
+import { useBackend } from '../backend';
+import {
+ Button,
+ DmIcon,
+ Flex,
+ ProgressBar,
+ Section,
+ Stack,
+} from '../components';
+import { Window } from '../layouts';
+
+type Data = {
+ stacks: Stacks[];
+ repairbot_icon: string;
+ repairbot_icon_state: string;
+};
+
+type Stacks = {
+ stack_name: string;
+ stack_amount: number;
+ stack_maximum_amount: number;
+ stack_icon: string;
+ stack_icon_state: string;
+ stack_reference: string;
+};
+export const RepairbotResources = (props) => {
+ const { act, data } = useBackend();
+ const { stacks, repairbot_icon, repairbot_icon_state } = data;
+ return (
+
+
+
+ }
+ >
+
+ {stacks.map((stack) => (
+
+
+
+
+
+
+
+
+
+
+
+
+ act('eject', {
+ item_reference: stack.stack_reference,
+ })
+ }
+ >
+ Eject
+
+
+
+
+
+
+ ))}
+
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/ScannerGate.jsx b/tgui/packages/tgui/interfaces/ScannerGate.jsx
index 51e32cbdc6e67..8eb61cea7f270 100644
--- a/tgui/packages/tgui/interfaces/ScannerGate.jsx
+++ b/tgui/packages/tgui/interfaces/ScannerGate.jsx
@@ -67,10 +67,6 @@ const SCANNER_GATE_ROUTES = {
title: 'Scanner Mode: Nutrition',
component: () => ScannerGateNutrition,
},
- Contraband: {
- title: 'Scanner Mode: Contraband',
- component: () => ScannerGateContraband,
- },
};
const ScannerGateControl = (props) => {
@@ -98,7 +94,6 @@ const ScannerGateControl = (props) => {
const ScannerGateOff = (props) => {
const { act, data } = useBackend();
- const { contraband_enabled } = data;
return (
<>
Select a scanning mode below.
@@ -127,11 +122,6 @@ const ScannerGateOff = (props) => {
content="Nutrition"
onClick={() => act('set_mode', { new_mode: 'Nutrition' })}
/>
- act('set_mode', { new_mode: 'Contraband' })}
- />
>
);
@@ -273,21 +263,6 @@ const ScannerGateNutrition = (props) => {
);
};
-const ScannerGateContraband = (props) => {
- const { data } = useBackend();
- const { reverse } = data;
- return (
- <>
-
- Trigger if the person scanned {reverse ? 'does not have' : 'has'} any
- anything considered contraband. Requires an N-spect scanner installed to
- enable.
-
-
- >
- );
-};
-
const ScannerGateMode = (props) => {
const { act, data } = useBackend();
const { reverse } = data;
diff --git a/tgui/packages/tgui/interfaces/SimpleBot.tsx b/tgui/packages/tgui/interfaces/SimpleBot.tsx
index 8ac2b4201a74c..2085dcd46459f 100644
--- a/tgui/packages/tgui/interfaces/SimpleBot.tsx
+++ b/tgui/packages/tgui/interfaces/SimpleBot.tsx
@@ -35,7 +35,7 @@ type Settings = {
export function SimpleBot(props) {
const { data } = useBackend();
- const { can_hack, custom_controls, locked } = data;
+ const { can_hack, locked } = data;
const access = !locked || !!can_hack;
return (
@@ -43,25 +43,11 @@ export function SimpleBot(props) {
- }>
- {!access ? Locked! : }
-
+
{!!access && (
-
-
- {Object.entries(custom_controls).map((control) => (
-
-
-
- ))}
-
-
+
)}
@@ -70,6 +56,36 @@ export function SimpleBot(props) {
);
}
+export function BotSettings(props) {
+ const { act, data } = useBackend();
+ const { can_hack, locked } = data;
+ const access = !locked || !!can_hack;
+ return (
+ }>
+ {!access ? Locked! : }
+
+ );
+}
+
+export function BotControl(props) {
+ const { act, data } = useBackend();
+ const { custom_controls } = data;
+ return (
+
+
+ {Object.entries(custom_controls).map((control) => (
+
+
+
+ ))}
+
+
+ );
+}
/** Creates a lock button at the top of the controls */
function TabDisplay(props) {
const { act, data } = useBackend();
diff --git a/tgui/packages/tgui/interfaces/TurbineComputer.tsx b/tgui/packages/tgui/interfaces/TurbineComputer.tsx
index 4d1305b88b5c8..f67a09f2687a8 100644
--- a/tgui/packages/tgui/interfaces/TurbineComputer.tsx
+++ b/tgui/packages/tgui/interfaces/TurbineComputer.tsx
@@ -9,7 +9,9 @@ import {
NumberInput,
ProgressBar,
Section,
+ Stack,
} from '../components';
+import { formatPower } from '../format';
import { Window } from '../layouts';
type TurbineInfo = {
@@ -19,105 +21,99 @@ type TurbineInfo = {
power: number;
temp: number;
integrity: number;
- parts_linked: BooleanLike;
- parts_ready: BooleanLike;
max_rpm: number;
max_temperature: number;
regulator: number;
};
-export const TurbineComputer = (props) => {
+const TurbineDisplay = (props) => {
const { act, data } = useBackend();
- const parts_not_connected = !data.parts_linked && (
-
-
- {
- 'Parts not connected, use a multitool on the core rotor before trying again'
- }
-
-
+
+ return (
+ = 1000)}
+ onClick={() => act('toggle_power')}
+ >
+ {data.active ? 'Online' : 'Offline'}
+
+ }
+ >
+
+
+
+ act('regulate', {
+ regulate: value * 0.01,
+ })
+ }
+ />
+
+
+
+
+
+ {data.rpm} RPM
+
+
+ {data.max_rpm} RPM
+
+
+ {data.temp} K
+
+
+ {data.max_temperature} K
+
+
+ {formatPower(data.power)}
+
+
+
);
- const parts_not_ready = data.parts_linked && !data.parts_ready && (
+};
+
+const OutOfService = (props) => {
+ return (
-
- {
- 'Some parts have open maintenance hatchet, please close them before starting'
- }
-
+
+
+
+ {
+ 'Parts not connected, close all mantainence panels/use a multitool on the rotor before trying again'
+ }
+
+
+
);
+};
+
+export const TurbineComputer = (props) => {
+ const { data } = useBackend
();
+
return (
- = 1000) || !data.parts_linked}
- onClick={() => act('toggle_power')}
- />
- }
- >
- {parts_not_connected}
- {parts_not_ready}
-
-
-
- act('regulate', {
- regulate: value * 0.01,
- })
- }
- />
-
-
-
-
-
- {data.rpm} RPM
-
-
- {data.max_rpm} RPM
-
-
- {data.temp} K
-
-
- {data.max_temperature} K
-
-
- {data.power * 4 * 0.001} kW
-
-
-
+ {data.connected ? : }
);
diff --git a/tgui/packages/tgui/interfaces/Uplink/index.tsx b/tgui/packages/tgui/interfaces/Uplink/index.tsx
index 124d6f3d5050e..0bfc05728f37f 100644
--- a/tgui/packages/tgui/interfaces/Uplink/index.tsx
+++ b/tgui/packages/tgui/interfaces/Uplink/index.tsx
@@ -341,7 +341,7 @@ export class Uplink extends Component<{}, UplinkState> {
)}
- {(primary_objectives || has_objectives) && (
+ {!!(primary_objectives || has_objectives) && (
{primary_objectives && (
diff --git a/tgui/packages/tgui/package.json b/tgui/packages/tgui/package.json
index aa9db580db7de..cc47bc939fb90 100644
--- a/tgui/packages/tgui/package.json
+++ b/tgui/packages/tgui/package.json
@@ -18,8 +18,9 @@
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-popper": "^2.3.0",
- "tgui-core": "^1.2.0",
+ "tgui-core": "^1.3.0",
"tgui-dev-server": "workspace:*",
- "tgui-polyfill": "workspace:*"
+ "tgui-polyfill": "workspace:*",
+ "tgui-styles": "^0.0.10"
}
}
diff --git a/tgui/packages/tgui/styles/atomic/candystripe.scss b/tgui/packages/tgui/styles/atomic/candystripe.scss
index 30159bf99c306..ff46280ea51e4 100644
--- a/tgui/packages/tgui/styles/atomic/candystripe.scss
+++ b/tgui/packages/tgui/styles/atomic/candystripe.scss
@@ -4,5 +4,5 @@
*/
.candystripe:nth-child(odd) {
- background-color: rgba(0, 0, 0, 0.25);
+ background-color: hsla(0, 0%, 0%, 0.25);
}
diff --git a/tgui/packages/tgui/styles/atomic/debug-layout.scss b/tgui/packages/tgui/styles/atomic/debug-layout.scss
index d015185927adb..0b0a2b7f4b2b2 100644
--- a/tgui/packages/tgui/styles/atomic/debug-layout.scss
+++ b/tgui/packages/tgui/styles/atomic/debug-layout.scss
@@ -5,13 +5,13 @@
.debug-layout,
.debug-layout *:not(g):not(path) {
- color: rgba(255, 255, 255, 0.9) !important;
+ color: hsla(0, 0%, 100%, 0.9) !important;
background: transparent !important;
- outline: 1px solid rgba(255, 255, 255, 0.5) !important;
+ outline: 1px solid hsla(0, 0%, 100%, 0.5) !important;
box-shadow: none !important;
filter: none !important;
&:hover {
- outline-color: rgba(255, 255, 255, 0.8) !important;
+ outline-color: hsla(0, 0%, 100%, 0.8) !important;
}
}
diff --git a/tgui/packages/tgui/styles/base.scss b/tgui/packages/tgui/styles/base.scss
index b3d5dd944d008..5d85f31e2fa17 100644
--- a/tgui/packages/tgui/styles/base.scss
+++ b/tgui/packages/tgui/styles/base.scss
@@ -6,9 +6,9 @@
@use 'sass:color';
@use 'sass:math';
-$color-fg: #ffffff !default;
-$color-bg: #1e4c4c !default;
-$color-bg-section: #0e2525 !default;
+$color-fg: hsl(0, 0%, 100%) !default;
+$color-bg: hsl(180, 43%, 21%) !default;
+$color-bg-section: hsl(180, 45%, 10%) !default;
$color-bg-grad-spread: 2% !default;
$color-bg-start: color.adjust(
$color-bg,
diff --git a/tgui/packages/tgui/styles/colors.scss b/tgui/packages/tgui/styles/colors.scss
index 82c26ed1f247e..61d77a7472647 100644
--- a/tgui/packages/tgui/styles/colors.scss
+++ b/tgui/packages/tgui/styles/colors.scss
@@ -9,27 +9,27 @@
// Base colors
-$black: #000000 !default;
-$white: #ffffff !default;
-$red: #ff1205 !default;
-$orange: #ed9550 !default;
-$yellow: #eff792 !default;
-$olive: #8d9770 !default;
-$green: #83bc78 !default;
-$teal: #cef2ec !default;
-$blue: #a7b4f6 !default;
-$violet: #92839f !default;
-$purple: #bfa9da !default;
-$pink: #edc1d5 !default;
-$brown: #b59d7e !default;
-$grey: #8b8b8b !default;
-$light-grey: #c5c5c5 !default;
+$black: hsl(0, 0%, 0%) !default;
+$white: hsl(0, 0%, 100%) !default;
+$red: hsl(3, 100%, 51%) !default;
+$orange: hsl(26, 81%, 62%) !default;
+$yellow: hsl(65, 86%, 77%) !default;
+$olive: hsl(75, 16%, 52%) !default;
+$green: hsl(110, 34%, 60%) !default;
+$teal: hsl(170, 58%, 88%) !default;
+$blue: hsl(230, 81%, 81%) !default;
+$violet: hsl(272, 13%, 57%) !default;
+$purple: hsl(267, 40%, 76%) !default;
+$pink: hsl(333, 55%, 84%) !default;
+$brown: hsl(34, 27%, 60%) !default;
+$grey: hsl(0, 0%, 55%) !default;
+$light-grey: hsl(0, 0%, 77%) !default;
-$primary: #306f94 !default;
-$good: #7ce176 !default;
-$average: #eebe66 !default;
-$bad: #ed6762 !default;
-$label: #92e4ff !default;
+$primary: hsl(202, 51%, 38%) !default;
+$good: hsl(117, 64%, 67%) !default;
+$average: hsl(39, 80%, 67%) !default;
+$bad: hsl(2, 79%, 66%) !default;
+$label: hsl(195, 100%, 79%) !default;
// Background and foreground color lightness ratios
$bg-lightness: -15% !default;
@@ -75,7 +75,7 @@ $bg-map-keys: map.keys($_gen_map) !default;
$fg-map: ();
@each $color-name in $fg-map-keys {
// prettier-ignore
- $fg-map: map-merge($fg-map, (
+ $fg-map: map.merge($fg-map, (
$color-name: fg(map.get($_gen_map, $color-name)),
));
}
@@ -83,7 +83,7 @@ $fg-map: ();
$bg-map: ();
@each $color-name in $bg-map-keys {
// prettier-ignore
- $bg-map: map-merge($bg-map, (
+ $bg-map: map.merge($bg-map, (
$color-name: bg(map.get($_gen_map, $color-name)),
));
}
diff --git a/tgui/packages/tgui/styles/components/BlockQuote.scss b/tgui/packages/tgui/styles/components/BlockQuote.scss
deleted file mode 100644
index 4e54030e5b65c..0000000000000
--- a/tgui/packages/tgui/styles/components/BlockQuote.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../colors.scss';
-
-$color-default: colors.fg(colors.$label) !default;
-
-.BlockQuote {
- color: $color-default;
- border-left: base.em(2px) solid $color-default;
- padding-left: 0.5em;
- margin-bottom: 0.5em;
-
- &:last-child {
- margin-bottom: 0;
- }
-}
diff --git a/tgui/packages/tgui/styles/components/Button.scss b/tgui/packages/tgui/styles/components/Button.scss
deleted file mode 100644
index fe777e9d3ef52..0000000000000
--- a/tgui/packages/tgui/styles/components/Button.scss
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../colors.scss';
-@use '../functions.scss' as *;
-
-$color-default: colors.bg(colors.$primary) !default;
-$color-disabled: #999999 !default;
-$color-selected: colors.bg(colors.$green) !default;
-$color-caution: colors.bg(colors.$yellow) !default;
-$color-danger: colors.bg(colors.$red) !default;
-$color-transparent-text: rgba(255, 255, 255, 0.5) !default;
-$border-radius: base.$border-radius !default;
-$bg-map: colors.$bg-map !default;
-
-@mixin button-color($color) {
- // Adapt text color to background luminance to ensure high contast
- $luminance: luminance($color);
- $text-color: if($luminance > 0.4, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1));
-
- transition:
- color 50ms,
- background-color 50ms;
- background-color: $color;
- color: $text-color;
-
- &:focus {
- transition:
- color 100ms,
- background-color 100ms;
- }
-
- &:hover {
- background-color: lighten($color, 30%);
- color: $text-color;
- }
-}
-
-.Button {
- position: relative;
- display: inline-block;
- line-height: 1.667em;
- padding: 0 0.5em;
- margin-right: base.em(2px);
- white-space: nowrap;
- outline: 0;
- border-radius: $border-radius;
- margin-bottom: base.em(2px);
- // Disable selection in buttons
- user-select: none;
- -ms-user-select: none;
-
- &:last-child {
- margin-right: 0;
- margin-bottom: 0;
- }
-
- .fa,
- .fas,
- .far {
- margin-left: -0.25em;
- margin-right: -0.25em;
- min-width: 1.333em;
- text-align: center;
- }
-}
-
-.Button--dropdown {
- line-height: base.em(16px);
- height: base.em(22px);
- padding: 0.2rem 0.5rem;
-}
-
-.Button--hasContent {
- // Add a margin to the icon to keep it separate from the text
- .fa,
- .fas,
- .far {
- margin-right: 0.25em;
- }
-}
-
-.Button--hasContent.Button--iconPosition--right {
- .fa,
- .fas,
- .far {
- margin-right: 0px;
- margin-left: 3px;
- }
-}
-
-.Button--ellipsis {
- display: block;
- text-overflow: ellipsis;
- overflow: hidden;
-}
-
-.Button--fluid {
- display: block;
- margin-left: 0;
- margin-right: 0;
-}
-
-.Button--circular {
- border-radius: 50%;
-}
-
-.Button--compact {
- padding: 0 0.25em;
- line-height: 1.333em;
-}
-
-@each $color-name, $color-value in $bg-map {
- .Button--color--#{$color-name} {
- @include button-color($color-value);
- }
-}
-
-.Button--color--default {
- @include button-color($color-default);
-}
-
-.Button--color--caution {
- @include button-color($color-caution);
-}
-
-.Button--color--danger {
- @include button-color($color-danger);
-}
-
-.Button--color--transparent {
- @include button-color(base.$color-bg);
- background-color: rgba(base.$color-bg, 0);
- color: $color-transparent-text;
-}
-
-.Button--disabled {
- background-color: $color-disabled !important;
-}
-
-.Button--selected {
- @include button-color($color-selected);
-}
-
-.Button--flex {
- display: inline-flex; //Inline even for fluid
- flex-direction: column;
-}
-
-.Button--flex--fluid {
- width: 100%;
-}
-
-.Button--verticalAlignContent--top {
- justify-content: flex-start;
-}
-
-.Button--verticalAlignContent--middle {
- justify-content: center;
-}
-
-.Button--verticalAlignContent--bottom {
- justify-content: flex-end;
-}
-
-.Button__content {
- display: block;
- align-self: stretch;
-}
-
-.Button__textMargin {
- margin-left: 0.4rem;
-}
diff --git a/tgui/packages/tgui/styles/components/ColorBox.scss b/tgui/packages/tgui/styles/components/ColorBox.scss
deleted file mode 100644
index 739cacee0e45c..0000000000000
--- a/tgui/packages/tgui/styles/components/ColorBox.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-.ColorBox {
- display: inline-block;
- width: 1em;
- height: 1em;
- line-height: 1em;
- text-align: center;
-}
diff --git a/tgui/packages/tgui/styles/components/Dialog.scss b/tgui/packages/tgui/styles/components/Dialog.scss
deleted file mode 100644
index c7b7fd13261f7..0000000000000
--- a/tgui/packages/tgui/styles/components/Dialog.scss
+++ /dev/null
@@ -1,105 +0,0 @@
-@use '../base';
-
-$background-color: base.$color-bg !default;
-
-.Dialog {
- position: fixed;
- left: 0;
- top: 0;
- right: 0;
- bottom: 0;
- background-color: rgba(0, 0, 0, 0.5);
- display: flex;
- align-items: center;
- justify-content: center;
-}
-
-.Dialog__content {
- background-color: $background-color;
- font-family: Consolas, monospace;
- font-size: base.em(14px);
- display: flex;
- flex-direction: column;
-}
-
-.Dialog__header {
- display: flex;
- height: 2em;
- line-height: 1.928em;
- background-color: rgba(0, 0, 0, 0.5);
- user-select: none;
- -ms-user-select: none;
-}
-
-.Dialog__title {
- display: inline;
- font-style: italic;
- margin-left: 1rem;
- margin-right: 2rem;
- flex-grow: 1;
- opacity: 0.33;
-}
-
-.Dialog__body {
- margin: 2rem 1rem 2rem 1rem;
- flex-grow: 1;
-}
-
-.Dialog__footer {
- display: flex;
- flex-direction: row;
- justify-content: flex-end;
- padding: 1rem;
- background-color: rgba(0, 0, 0, 0.25);
-}
-
-.Dialog__button {
- margin: 0 1rem 0 1rem;
- height: 2rem;
- min-width: 6rem;
- text-align: center;
-}
-
-.SaveAsDialog__inputs {
- display: flex;
- flex-direction: row;
- align-items: center;
- padding-left: 3rem;
- justify-content: flex-end;
- margin-right: 1rem;
-}
-
-.SaveAsDialog__input {
- margin-left: 1rem;
- width: 80%;
-}
-
-.SaveAsDialog__label {
- vertical-align: center;
-}
-
-.Dialog__FileList {
- position: relative;
- display: flex;
- flex-wrap: wrap;
- flex-grow: 1;
- align-content: flex-start;
- max-height: 20rem;
- overflow: auto;
- overflow-y: scroll;
-}
-
-.Dialog__FileEntry {
- text-align: center;
- margin: 1rem;
-}
-
-.Dialog__FileIcon {
- display: inline-block;
- margin: 0 0 1rem 0;
- position: relative;
- width: 6vh;
- height: auto;
- text-align: center;
- cursor: default;
-}
diff --git a/tgui/packages/tgui/styles/components/Dimmer.scss b/tgui/packages/tgui/styles/components/Dimmer.scss
deleted file mode 100644
index 32a43ce509e2f..0000000000000
--- a/tgui/packages/tgui/styles/components/Dimmer.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-$background-dimness: 0.75 !default;
-
-.Dimmer {
- // Align everything in the middle.
- // A fat middle finger for anything less than IE11.
- display: flex;
- justify-content: center;
- align-items: center;
- // Fill positioned parent
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- // Dim everything around it
- background-color: rgba(0, 0, 0, $background-dimness);
- z-index: 1;
-}
diff --git a/tgui/packages/tgui/styles/components/Divider.scss b/tgui/packages/tgui/styles/components/Divider.scss
deleted file mode 100644
index e4df190e62c4b..0000000000000
--- a/tgui/packages/tgui/styles/components/Divider.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-
-$color: rgba(255, 255, 255, 0.1) !default;
-$thickness: base.em(2px) !default;
-$spacing: 0.5em;
-
-.Divider--horizontal {
- margin: $spacing 0;
-
- &:not(.Divider--hidden) {
- border-top: $thickness solid $color;
- }
-}
-
-.Divider--vertical {
- height: 100%;
- margin: 0 $spacing;
-
- &:not(.Divider--hidden) {
- border-left: $thickness solid $color;
- }
-}
diff --git a/tgui/packages/tgui/styles/components/Dropdown.scss b/tgui/packages/tgui/styles/components/Dropdown.scss
deleted file mode 100644
index 7989f6109a232..0000000000000
--- a/tgui/packages/tgui/styles/components/Dropdown.scss
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-
-.Dropdown {
- display: flex;
- align-items: flex-start;
-}
-
-.Dropdown__control {
- flex: 1;
- font-family: Verdana, sans-serif;
- font-size: base.em(12px);
- overflow: hidden;
- user-select: none;
- width: base.em(100px);
-}
-
-.Dropdown__arrow-button {
- float: right;
- padding-left: 0.35em;
- width: 1.2em;
- border-left: base.em(1px) solid rgba(0, 0, 0, 0.25);
-}
-
-.Dropdown__menu {
- overflow-y: auto;
- align-items: center;
- max-height: base.em(200px);
- border-radius: 0 0 base.em(2px) base.em(2px);
- color: #fff;
- background-color: #000;
- background-color: rgba(0, 0, 0, 0.75);
-}
-
-.Dropdown__menu-scroll {
- overflow-y: scroll;
-}
-
-.Dropdown__menuentry {
- padding: base.em(2px) base.em(4px);
- font-family: Verdana, sans-serif;
- font-size: base.em(12px);
- line-height: base.em(17px);
- transition: background-color 100ms ease-out;
-
- &.selected {
- background-color: rgba(255, 255, 255, 0.5) !important;
- transition: background-color 0ms;
- }
-
- &:hover {
- background-color: rgba(255, 255, 255, 0.2);
- transition: background-color 0ms;
- }
-}
-
-.Dropdown__over {
- top: auto;
- bottom: 100%;
-}
-
-.Dropdown__selected-text {
- display: inline-block;
- text-overflow: ellipsis;
- white-space: nowrap;
- height: base.em(17px);
- width: calc(100% - 1.2em);
-}
diff --git a/tgui/packages/tgui/styles/components/Flex.scss b/tgui/packages/tgui/styles/components/Flex.scss
deleted file mode 100644
index d4b6b8ec3889e..0000000000000
--- a/tgui/packages/tgui/styles/components/Flex.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-.Flex {
- display: -ms-flexbox;
- display: flex;
-}
-
-.Flex--inline {
- display: inline-flex;
-}
-
-.Flex--iefix {
- display: block;
-}
-
-.Flex--iefix.Flex--inline {
- display: inline-block;
-}
-
-.Flex__item--iefix {
- display: inline-block;
-}
-
-.Flex--iefix--column {
- & > .Flex__item--iefix {
- display: block;
- }
-}
diff --git a/tgui/packages/tgui/styles/components/Icon.scss b/tgui/packages/tgui/styles/components/Icon.scss
deleted file mode 100644
index 320117a65f3e0..0000000000000
--- a/tgui/packages/tgui/styles/components/Icon.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * @file
- * @copyright 2020
- * @author ThePotato97 (https://github.com/ThePotato97)
- * @license ISC
- */
-
-.IconStack > .Icon {
- position: absolute;
- width: 100%;
- text-align: center;
-}
-
-.IconStack {
- position: relative;
- display: inline-block;
- height: 1.2em;
- line-height: 2em;
- vertical-align: middle;
-
- &:after {
- color: transparent;
- content: '.';
- }
-}
diff --git a/tgui/packages/tgui/styles/components/Input.scss b/tgui/packages/tgui/styles/components/Input.scss
deleted file mode 100644
index c2e779529f97a..0000000000000
--- a/tgui/packages/tgui/styles/components/Input.scss
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../functions.scss' as *;
-
-$text-color: base.$color-fg !default;
-$background-color: #0a0a0a !default;
-$border-color: #88bfff !default;
-$border-radius: base.$border-radius !default;
-
-.Input {
- position: relative;
- display: inline-block;
- width: base.em(120px);
- border: base.em(1px) solid $border-color;
- border: base.em(1px) solid rgba($border-color, 0.75);
- border-radius: $border-radius;
- color: $text-color;
- background-color: $background-color;
- padding: 0 base.em(4px);
- margin-right: base.em(2px);
- line-height: base.em(17px);
- overflow: visible;
-}
-
-.Input--fluid {
- display: block;
- width: auto;
-}
-
-.Input__baseline {
- display: inline-block;
- color: transparent;
-}
-
-.Input__input {
- display: block;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- border: 0;
- outline: 0;
- width: 100%;
- font-size: base.em(12px);
- line-height: base.em(17px);
- height: base.em(17px);
- margin: 0;
- padding: 0 0.5em;
- font-family: Verdana, sans-serif;
- background-color: transparent;
- color: $text-color;
- color: inherit;
-
- &:-ms-input-placeholder {
- font-style: italic;
- color: #777;
- color: rgba(255, 255, 255, 0.45);
- }
-}
-
-.Input--monospace .Input__input {
- font-family: 'Consolas', monospace;
-}
diff --git a/tgui/packages/tgui/styles/components/Knob.scss b/tgui/packages/tgui/styles/components/Knob.scss
deleted file mode 100644
index 1a5f0d10a998a..0000000000000
--- a/tgui/packages/tgui/styles/components/Knob.scss
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../colors.scss';
-@use '../functions.scss' as *;
-
-$bg-map: colors.$bg-map !default;
-$fg-map: colors.$fg-map !default;
-$ring-color: #6a96c9 !default;
-$knob-color: #333333 !default;
-$popup-background-color: #000000 !default;
-$popup-text-color: #ffffff !default;
-
-$inner-padding: 0.1em;
-
-.Knob {
- position: relative;
- font-size: 1rem;
- width: 2.6em;
- height: 2.6em;
- margin: 0 auto;
- margin-bottom: -0.2em;
- cursor: n-resize;
-
- // Adjusts a baseline in a way, that makes knob middle-aligned
- // when it flows with the text.
- &:after {
- content: '.';
- color: transparent;
- line-height: 2.5em;
- }
-}
-
-.Knob__circle {
- position: absolute;
- top: $inner-padding;
- bottom: $inner-padding;
- left: $inner-padding;
- right: $inner-padding;
- margin: 0.3em;
- background-color: $knob-color;
- background-image: linear-gradient(
- to bottom,
- rgba(255, 255, 255, 0.15) 0%,
- rgba(255, 255, 255, 0) 100%
- );
- border-radius: 50%;
- box-shadow: 0 0.05em 0.5em 0 rgba(0, 0, 0, 0.5);
-}
-
-.Knob__cursorBox {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
-}
-
-.Knob__cursor {
- position: relative;
- top: 0.05em;
- margin: 0 auto;
- width: 0.2em;
- height: 0.8em;
- background-color: rgba(255, 255, 255, 0.9);
-}
-
-.Knob__popupValue {
- position: absolute;
- top: -2rem;
- right: 50%;
- font-size: 1rem;
- text-align: center;
- padding: 0.25rem 0.5rem;
- color: $popup-text-color;
- background-color: $popup-background-color;
- transform: translateX(50%);
- white-space: nowrap;
-}
-
-.Knob__ring {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- padding: $inner-padding;
-}
-
-$pi: 3.1416;
-
-.Knob__ringTrackPivot {
- transform: rotateZ(135deg);
-}
-
-.Knob__ringTrack {
- // transform-origin: 50% 50%;
- fill: transparent;
- stroke: rgba(255, 255, 255, 0.1);
- stroke-width: 8;
- stroke-linecap: round;
- stroke-dasharray: 75 * $pi;
-}
-
-.Knob__ringFillPivot {
- transform: rotateZ(135deg);
-}
-
-.Knob--bipolar .Knob__ringFillPivot {
- transform: rotateZ(270deg);
-}
-
-.Knob__ringFill {
- fill: transparent;
- stroke: $ring-color;
- stroke-width: 8;
- stroke-linecap: round;
- stroke-dasharray: 100 * $pi;
- transition: stroke 50ms ease-out;
-}
-
-@each $color-name, $color-value in $fg-map {
- .Knob--color--#{$color-name} {
- .Knob__ringFill {
- stroke: $color-value;
- }
- }
-}
diff --git a/tgui/packages/tgui/styles/components/LabeledList.scss b/tgui/packages/tgui/styles/components/LabeledList.scss
deleted file mode 100644
index 94adf932549d5..0000000000000
--- a/tgui/packages/tgui/styles/components/LabeledList.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-
-.LabeledList {
- display: table;
- // IE8: Does not support calc
- width: 100%;
- // Compensate for negative margin
- width: calc(100% + 1em);
- border-collapse: collapse;
- border-spacing: 0;
- margin: -0.25em -0.5em;
- margin-bottom: 0;
- padding: 0;
-}
-
-.LabeledList__row {
- display: table-row;
-}
-
-.LabeledList__row:last-child .LabeledList__cell {
- padding-bottom: 0;
-}
-
-.LabeledList__cell {
- display: table-cell;
- margin: 0;
- padding: 0.25em 0.5em;
- border: 0;
- text-align: left;
-}
-
-.LabeledList__label--nowrap {
- width: 1%;
- white-space: nowrap;
- min-width: 5em;
-}
-
-.LabeledList__buttons {
- width: 0.1%;
- white-space: nowrap;
- text-align: right;
- padding-top: base.em(1px);
- padding-bottom: 0;
-}
diff --git a/tgui/packages/tgui/styles/components/MenuBar.scss b/tgui/packages/tgui/styles/components/MenuBar.scss
deleted file mode 100644
index 0f5eb47380cdb..0000000000000
--- a/tgui/packages/tgui/styles/components/MenuBar.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-
-$separator-color: base.$color-bg-section;
-$background-color: base.$color-bg !default;
-$dropdown-z-index: 5;
-
-.MenuBar {
- display: flex;
-}
-
-.MenuBar__font {
- font-family: Verdana, sans-serif;
- font-size: base.em(12px);
- line-height: base.em(17px);
-}
-
-.MenuBar__hover {
- &:hover {
- background-color: lighten($background-color, 30%);
- transition: background-color 0ms;
- }
-}
-
-.MenuBar__MenuBarButton {
- padding: 0.2rem 0.5rem 0.2rem 0.5rem;
-}
-
-.MenuBar__menu {
- position: absolute;
- z-index: $dropdown-z-index;
- background-color: $background-color;
- padding: 0.3rem 0.3rem 0.3rem 0.3rem;
- box-shadow: 4px 6px 5px -2px rgba(0, 0, 0, 0.55);
-}
-
-.MenuBar__MenuItem {
- z-index: $dropdown-z-index;
- transition: background-color 100ms ease-out;
- background-color: $background-color;
- white-space: nowrap;
- padding: 0.3rem 2rem 0.3rem 3rem;
-}
-
-.MenuBar__MenuItemToggle {
- padding: 0.3rem 2rem 0.3rem 0;
-}
-
-.MenuBar__MenuItemToggle__check {
- display: inline-block;
- vertical-align: middle;
- min-width: 3rem;
- margin-left: 0.3rem;
-}
-
-.MenuBar__over {
- top: auto;
- bottom: 100%;
-}
-
-.MenuBar__MenuBarButton-text {
- text-overflow: clip;
- white-space: nowrap;
- height: base.em(17px);
-}
-
-.MenuBar__Separator {
- display: block;
- margin: 0.3rem 0.3rem 0.3rem 2.3rem;
- border-top: 1px solid $separator-color;
-}
diff --git a/tgui/packages/tgui/styles/components/Modal.scss b/tgui/packages/tgui/styles/components/Modal.scss
deleted file mode 100644
index 005ffe316563f..0000000000000
--- a/tgui/packages/tgui/styles/components/Modal.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-
-$background-color: base.$color-bg !default;
-
-.Modal {
- background-color: $background-color;
- max-width: calc(100% - 1rem);
- padding: 1rem;
-}
diff --git a/tgui/packages/tgui/styles/components/NoticeBox.scss b/tgui/packages/tgui/styles/components/NoticeBox.scss
deleted file mode 100644
index 0394ffaa660bb..0000000000000
--- a/tgui/packages/tgui/styles/components/NoticeBox.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use 'sass:color';
-@use '../base.scss';
-@use '../colors.scss';
-@use '../functions.scss' as *;
-
-// NoticeBox
-$background-color: #bb9b68 !default;
-$color-stripes: rgba(0, 0, 0, 0.1) !default;
-$color-border: #272727 !default;
-$bg-map: colors.$bg-map !default;
-
-.NoticeBox {
- // Adapt text color to background luminance to ensure high contast
- $luminance: luminance($background-color);
- $text-color: if($luminance > 0.35, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1));
-
- padding: 0.33em 0.5em;
- margin-bottom: 0.5em;
- box-shadow: none;
- font-weight: bold;
- font-style: italic;
- color: $text-color;
- background-color: $background-color;
- background-image: repeating-linear-gradient(
- -45deg,
- transparent,
- transparent base.em(10px),
- $color-stripes base.em(10px),
- $color-stripes base.em(20px)
- );
-}
-
-@mixin box-color($color) {
- $luminance: luminance($color);
- $text-color: if($luminance > 0.35, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1));
- color: $text-color;
- background-color: color.adjust($color, $saturation: -15%, $lightness: -15%);
-}
-
-@each $color-name, $color-value in $bg-map {
- .NoticeBox--color--#{$color-name} {
- @include box-color($color-value);
- }
-}
-
-.NoticeBox--type--info {
- @include box-color(colors.$blue);
-}
-
-.NoticeBox--type--success {
- @include box-color(colors.$green);
-}
-
-.NoticeBox--type--warning {
- @include box-color(colors.$orange);
-}
-
-.NoticeBox--type--danger {
- @include box-color(colors.$red);
-}
diff --git a/tgui/packages/tgui/styles/components/NumberInput.scss b/tgui/packages/tgui/styles/components/NumberInput.scss
deleted file mode 100644
index ef2aba4d47464..0000000000000
--- a/tgui/packages/tgui/styles/components/NumberInput.scss
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use 'sass:color';
-@use '../base.scss';
-@use '../functions.scss' as *;
-@use './Input.scss';
-
-$text-color: Input.$text-color !default;
-$background-color: Input.$background-color !default;
-$border-color: Input.$border-color !default;
-$border-radius: Input.$border-radius !default;
-
-.NumberInput {
- position: relative;
- display: inline-block;
- border: base.em(1px) solid $border-color;
- border: base.em(1px) solid rgba($border-color, 0.75);
- border-radius: $border-radius;
- color: $border-color;
- background-color: $background-color;
- padding: 0 base.em(4px);
- margin-right: base.em(2px);
- line-height: base.em(17px);
- text-align: right;
- overflow: visible;
- cursor: n-resize;
-}
-
-.NumberInput--fluid {
- display: block;
-}
-
-.NumberInput__content {
- margin-left: 0.5em;
-}
-
-.NumberInput__barContainer {
- position: absolute;
- top: base.em(2px);
- bottom: base.em(2px);
- left: base.em(2px);
-}
-
-.NumberInput__bar {
- position: absolute;
- bottom: 0;
- left: 0;
- width: base.em(3px);
- box-sizing: border-box;
- border-bottom: base.em(1px) solid $border-color;
- background-color: $border-color;
-}
-
-.NumberInput__input {
- display: block;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- border: 0;
- outline: 0;
- width: 100%;
- font-size: base.em(12px);
- line-height: base.em(17px);
- height: base.em(17px);
- margin: 0;
- padding: 0 0.5em;
- font-family: Verdana, sans-serif;
- background-color: $background-color;
- color: $text-color;
- text-align: right;
-}
diff --git a/tgui/packages/tgui/styles/components/ProgressBar.scss b/tgui/packages/tgui/styles/components/ProgressBar.scss
deleted file mode 100644
index e13d25e837599..0000000000000
--- a/tgui/packages/tgui/styles/components/ProgressBar.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../colors.scss';
-@use '../functions.scss' as *;
-
-$color-default-fill: colors.bg(colors.$primary) !default;
-$background-color: rgba(0, 0, 0, 0) !default;
-$border-radius: base.$border-radius !default;
-$bg-map: colors.$bg-map !default;
-
-.ProgressBar {
- display: inline-block;
- position: relative;
- width: 100%;
- padding: 0 0.5em;
- border-width: base.em(1px) !important;
- border-style: solid !important;
- border-radius: $border-radius;
- background-color: $background-color;
- transition: border-color 900ms ease-out;
-}
-
-.ProgressBar__fill {
- position: absolute;
- top: -0.5px;
- left: 0px;
- bottom: -0.5px;
-}
-
-.ProgressBar__fill--animated {
- transition:
- background-color 900ms ease-out,
- width 900ms ease-out;
-}
-
-.ProgressBar__content {
- position: relative;
- line-height: base.em(17px);
- width: 100%;
- text-align: right;
-}
-
-.ProgressBar--color--default {
- border: base.em(1px) solid $color-default-fill;
-
- .ProgressBar__fill {
- background-color: $color-default-fill;
- }
-}
-
-@each $color-name, $color-value in $bg-map {
- .ProgressBar--color--#{$color-name} {
- border-color: $color-value !important;
-
- .ProgressBar__fill {
- background-color: $color-value;
- }
- }
-}
diff --git a/tgui/packages/tgui/styles/components/RoundGauge.scss b/tgui/packages/tgui/styles/components/RoundGauge.scss
deleted file mode 100644
index be95519d64613..0000000000000
--- a/tgui/packages/tgui/styles/components/RoundGauge.scss
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Copyright (c) 2020 bobbahbrown (https://github.com/bobbahbrown)
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../colors.scss';
-@use '../functions.scss' as *;
-
-$fg-map: colors.$fg-map !default;
-$ring-color: #6a96c9 !default;
-
-.RoundGauge {
- font-size: 1rem;
- width: 2.6em;
- height: 1.3em;
- margin: 0 auto;
- margin-bottom: 0.2em;
-}
-
-$pi: 3.1416;
-
-.RoundGauge__ringTrack {
- fill: transparent;
- stroke: rgba(255, 255, 255, 0.1);
- stroke-width: 10;
- stroke-dasharray: 50 * $pi;
- stroke-dashoffset: 50 * $pi;
-}
-
-.RoundGauge__ringFill {
- fill: transparent;
- stroke: $ring-color;
- stroke-width: 10;
- stroke-dasharray: 100 * $pi;
- transition: stroke 50ms ease-out;
-}
-
-.RoundGauge__needle,
-.RoundGauge__ringFill {
- transition: transform 50ms ease-in-out;
-}
-
-.RoundGauge__needleLine,
-.RoundGauge__needleMiddle {
- fill: colors.$bad;
-}
-
-.RoundGauge__alert {
- fill-rule: evenodd;
- clip-rule: evenodd;
- stroke-linejoin: round;
- stroke-miterlimit: 2;
- fill: rgba(255, 255, 255, 0.1);
-}
-
-.RoundGauge__alert.max {
- fill: colors.$bad;
-}
-
-@each $color-name, $color-value in $fg-map {
- .RoundGauge--color--#{$color-name}.RoundGauge__ringFill {
- stroke: $color-value;
- }
-}
-
-@each $color-name, $color-value in $fg-map {
- .RoundGauge__alert--#{$color-name} {
- fill: $color-value;
- transition: opacity 0.6s cubic-bezier(0.25, 1, 0.5, 1);
- animation: RoundGauge__alertAnim
- 1s
- cubic-bezier(0.34, 1.56, 0.64, 1)
- infinite;
- }
-}
-
-@keyframes RoundGauge__alertAnim {
- 0% {
- opacity: 0.1;
- }
- 50% {
- opacity: 1;
- }
- 100% {
- opacity: 0.1;
- }
-}
diff --git a/tgui/packages/tgui/styles/components/Section.scss b/tgui/packages/tgui/styles/components/Section.scss
deleted file mode 100644
index d1f81b1f76692..0000000000000
--- a/tgui/packages/tgui/styles/components/Section.scss
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use 'sass:color';
-@use '../base.scss';
-@use '../colors.scss';
-@use '../functions.scss';
-
-$title-text-color: base.$color-fg !default;
-$background-color: base.$color-bg-section !default;
-$separator-color: colors.$primary !default;
-
-.Section {
- position: relative;
- margin-bottom: 0.5em;
- background-color: functions.fake-alpha($background-color, base.$color-bg);
- background-color: $background-color;
- box-sizing: border-box;
-
- &:last-child {
- margin-bottom: 0;
- }
-}
-
-.Section__title {
- position: relative;
- padding: 0.5em;
- border-bottom: base.em(2px) solid $separator-color;
-}
-
-.Section__titleText {
- font-size: base.em(14px);
- font-weight: bold;
- color: $title-text-color;
-}
-
-.Section__buttons {
- position: absolute;
- display: inline-block;
- right: 0.5em;
- margin-top: base.em(-1px);
-}
-
-.Section__rest {
- position: relative;
-}
-
-.Section__content {
- padding: 0.66em 0.5em;
-}
-
-.Section--fitted > .Section__rest > .Section__content {
- padding: 0;
-}
-
-.Section--fill {
- display: flex;
- flex-direction: column;
- height: 100%;
-}
-
-.Section--fill > .Section__rest {
- flex-grow: 1;
-}
-
-.Section--fill > .Section__rest > .Section__content {
- height: 100%;
-}
-
-.Section--fill.Section--scrollable > .Section__rest > .Section__content {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
-}
-
-.Section--fill.Section--iefix {
- display: table !important;
- width: 100% !important;
- height: 100% !important;
- border-collapse: collapse;
- border-spacing: 0;
-
- & > .Section__rest {
- display: table-row !important;
- height: 100% !important;
- }
-}
-
-.Section--scrollable {
- overflow-x: hidden;
- overflow-y: hidden;
-
- & > .Section__rest > .Section__content {
- overflow-y: scroll;
- overflow-x: hidden;
- }
-}
-
-.Section--scrollableHorizontal {
- overflow-x: hidden;
- overflow-y: hidden;
-
- & > .Section__rest > .Section__content {
- overflow-y: hidden;
- overflow-x: scroll;
- }
-}
-
-.Section--scrollable.Section--scrollableHorizontal {
- overflow-x: hidden;
- overflow-y: hidden;
-
- & > .Section__rest > .Section__content {
- overflow-y: scroll;
- overflow-x: scroll;
- }
-}
-
-// Nested sections
-.Section .Section {
- background-color: transparent;
- margin-left: -0.5em;
- margin-right: -0.5em;
-
- // Remove extra space above the first nested section
- &:first-child {
- margin-top: -0.5em;
- }
-}
-
-// Level 2 section title
-.Section .Section .Section__titleText {
- font-size: base.em(13px);
-}
-
-// Level 3 section title
-.Section .Section .Section .Section__titleText {
- font-size: base.em(12px);
-}
diff --git a/tgui/packages/tgui/styles/components/Slider.scss b/tgui/packages/tgui/styles/components/Slider.scss
deleted file mode 100644
index 83baf71dc0991..0000000000000
--- a/tgui/packages/tgui/styles/components/Slider.scss
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-
-$cursor-color: base.$color-fg !default;
-$popup-background-color: #000000 !default;
-$popup-text-color: #ffffff !default;
-
-.Slider {
- cursor: e-resize;
-}
-
-.Slider__cursorOffset {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- transition: none !important;
-}
-
-.Slider__cursor {
- position: absolute;
- top: 0;
- right: base.em(-1px);
- bottom: 0;
- width: 0;
- border-left: base.em(2px) solid $cursor-color;
-}
-
-.Slider__pointer {
- position: absolute;
- right: base.em(-5px);
- bottom: base.em(-4px);
- width: 0;
- height: 0;
- border-left: base.em(5px) solid transparent;
- border-right: base.em(5px) solid transparent;
- border-bottom: base.em(5px) solid $cursor-color;
-}
-
-.Slider__popupValue {
- position: absolute;
- right: 0;
- top: -2rem;
- font-size: 1rem;
- padding: 0.25rem 0.5rem;
- color: $popup-text-color;
- background-color: $popup-background-color;
- transform: translateX(50%);
- white-space: nowrap;
-}
diff --git a/tgui/packages/tgui/styles/components/Stack.scss b/tgui/packages/tgui/styles/components/Stack.scss
deleted file mode 100644
index 3529c70018390..0000000000000
--- a/tgui/packages/tgui/styles/components/Stack.scss
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright (c) 2021 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use './Divider.scss';
-
-$zebra-background-color: base.$color-bg-section !default;
-
-.Stack--fill {
- height: 100%;
-}
-
-.Stack--horizontal > .Stack__item {
- margin-left: 0.5em;
-
- &:first-child {
- margin-left: 0;
- }
-}
-
-.Stack--vertical > .Stack__item {
- margin-top: 0.5em;
-
- &:first-child {
- margin-top: 0;
- }
-}
-
-.Stack--reverse > .Stack__item {
- margin-left: 0;
- margin-right: 0.5em;
-
- &:first-child {
- margin-right: 0;
- }
-}
-
-.Stack--reverse--vertical > .Stack__item {
- margin-top: 0;
- margin-bottom: 0.5em;
-
- &:first-child {
- margin-bottom: 0;
- }
-}
-
-.Stack--zebra > .Stack__item:nth-child(even) {
- background-color: $zebra-background-color;
-}
-
-.Stack--horizontal > .Stack__divider:not(.Stack__divider--hidden) {
- border-left: Divider.$thickness solid Divider.$color;
-}
-
-.Stack--vertical > .Stack__divider:not(.Stack__divider--hidden) {
- border-top: Divider.$thickness solid Divider.$color;
-}
diff --git a/tgui/packages/tgui/styles/components/Table.scss b/tgui/packages/tgui/styles/components/Table.scss
deleted file mode 100644
index ecc47e5ba9a7a..0000000000000
--- a/tgui/packages/tgui/styles/components/Table.scss
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-.Table {
- display: table;
- width: 100%;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 0;
-}
-
-.Table--collapsing {
- width: auto;
-}
-
-.Table__row {
- display: table-row;
-}
-
-.Table__cell {
- display: table-cell;
- padding: 0 0.25em;
-
- &:first-child {
- padding-left: 0;
- }
-
- &:last-child {
- padding-right: 0;
- }
-}
-
-.Table__row--header .Table__cell,
-.Table__cell--header {
- font-weight: bold;
- padding-bottom: 0.5em;
-}
-
-.Table__cell--collapsing {
- width: 1%;
- white-space: nowrap;
-}
diff --git a/tgui/packages/tgui/styles/components/Tabs.scss b/tgui/packages/tgui/styles/components/Tabs.scss
deleted file mode 100644
index 2ab0912502711..0000000000000
--- a/tgui/packages/tgui/styles/components/Tabs.scss
+++ /dev/null
@@ -1,144 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use 'sass:color';
-@use 'sass:math';
-@use '../base.scss';
-@use '../colors.scss';
-
-$color-default: color.scale(
- colors.fg(colors.$primary),
- $lightness: 75%
-) !default;
-$text-color: rgba(255, 255, 255, 0.5) !default;
-$text-color-selected: color.scale($color-default, $lightness: 25%) !default;
-$tab-color: transparent !default;
-$tab-color-hovered: rgba(255, 255, 255, 0.075) !default;
-$tab-color-selected: rgba(255, 255, 255, 0.125) !default;
-$border-radius: base.$border-radius !default;
-$fg-map: colors.$fg-map !default;
-
-.Tabs {
- display: flex;
- align-items: stretch;
- overflow: hidden;
- background-color: base.$color-bg-section;
-}
-
-.Tabs--fill {
- height: 100%;
-}
-
-// Interoperability with sections
-.Section .Tabs {
- background-color: transparent;
-}
-
-.Section:not(.Section--fitted) .Tabs {
- margin: 0 -0.5em 0.5em;
-
- &:first-child {
- margin-top: -0.5em;
- }
-}
-
-.Tabs--vertical {
- flex-direction: column;
- padding: 0.25em 0 0.25em 0.25em;
-}
-
-.Tabs--horizontal {
- margin-bottom: 0.5em;
- padding: 0.25em 0.25em 0 0.25em;
-
- &:last-child {
- margin-bottom: 0;
- }
-}
-
-.Tabs__Tab {
- flex-grow: 0;
-}
-
-.Tabs--fluid .Tabs__Tab {
- flex-grow: 1;
-}
-
-.Tab {
- display: flex;
- align-items: center;
- justify-content: space-between;
- background-color: $tab-color;
- color: $text-color;
- min-height: 2.25em;
- min-width: 4em;
-}
-
-.Tab:not(.Tab--selected):hover {
- background-color: $tab-color-hovered;
-}
-
-.Tab--selected {
- background-color: $tab-color-selected;
- color: $text-color-selected;
-}
-
-.Tab__text {
- flex-grow: 1;
- margin: 0 0.5em;
-}
-
-.Tab__left {
- min-width: 1.5em;
- text-align: center;
- margin-left: 0.25em;
-}
-
-.Tab__right {
- min-width: 1.5em;
- text-align: center;
- margin-right: 0.25em;
-}
-
-.Tabs--horizontal {
- .Tab {
- border-top: math.div(1em, 6) solid transparent;
- border-bottom: math.div(1em, 6) solid transparent;
- border-top-left-radius: 0.25em;
- border-top-right-radius: 0.25em;
- }
-
- .Tab--selected {
- border-bottom: math.div(1em, 6) solid $color-default;
- }
-}
-
-.Tabs--vertical {
- .Tab {
- min-height: 2em;
- border-left: math.div(1em, 6) solid transparent;
- border-right: math.div(1em, 6) solid transparent;
- border-top-left-radius: 0.25em;
- border-bottom-left-radius: 0.25em;
- }
-
- .Tab--selected {
- border-right: math.div(1em, 6) solid $color-default;
- }
-}
-
-@each $color-name, $color-value in $fg-map {
- .Tab--selected.Tab--color--#{$color-name} {
- color: color.scale($color-value, $lightness: 25%);
- }
-
- .Tabs--horizontal .Tab--selected.Tab--color--#{$color-name} {
- border-bottom-color: $color-value;
- }
-
- .Tabs--vertical .Tab--selected.Tab--color--#{$color-name} {
- border-right-color: $color-value;
- }
-}
diff --git a/tgui/packages/tgui/styles/components/TextArea.scss b/tgui/packages/tgui/styles/components/TextArea.scss
deleted file mode 100644
index fa45857ed9b2f..0000000000000
--- a/tgui/packages/tgui/styles/components/TextArea.scss
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../functions.scss' as *;
-@use './Input.scss';
-
-$text-color: Input.$text-color !default;
-$background-color: Input.$background-color !default;
-$border-color: Input.$border-color !default;
-$border-radius: Input.$border-radius !default;
-
-.TextArea {
- position: relative;
- display: inline-block;
- border: base.em(1px) solid $border-color;
- border: base.em(1px) solid rgba($border-color, 0.75);
- border-radius: $border-radius;
- background-color: $background-color;
- margin-right: base.em(2px);
- line-height: base.em(17px);
- box-sizing: border-box;
- width: 100%;
-}
-
-.TextArea--fluid {
- display: block;
- width: auto;
- height: auto;
-}
-
-.TextArea--noborder {
- border: 0px;
-}
-
-.TextArea__textarea.TextArea__textarea--scrollable {
- overflow: auto;
- overflow-x: hidden;
- overflow-y: scroll;
-}
-
-.TextArea__textarea {
- display: block;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- border: 0;
- outline: 0;
- width: 100%;
- height: 100%;
- font-size: 1em;
- line-height: base.em(17px);
- min-height: base.em(17px);
- margin: 0;
- padding: 0 0.5em;
- font-family: inherit;
- background-color: transparent;
- color: inherit;
- box-sizing: border-box;
- // Make sure the div and the textarea wrap words in the same way
- word-wrap: break-word;
- overflow: hidden;
-
- &:-ms-input-placeholder {
- font-style: italic;
- color: #777;
- color: rgba(255, 255, 255, 0.45);
- }
-}
-
-.TextArea__textarea_custom {
- overflow: visible;
- white-space: pre-wrap;
-}
-
-.TextArea__nowrap {
- white-space: nowrap;
- overflow-wrap: normal;
- overflow-x: scroll;
-}
diff --git a/tgui/packages/tgui/styles/components/Tooltip.scss b/tgui/packages/tgui/styles/components/Tooltip.scss
deleted file mode 100644
index 497813a206d0c..0000000000000
--- a/tgui/packages/tgui/styles/components/Tooltip.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Copyright (c) 2020 Aleksej Komarov
- * SPDX-License-Identifier: MIT
- */
-
-@use '../base.scss';
-@use '../functions.scss' as *;
-
-$color: #ffffff !default;
-$background-color: #000000 !default;
-$border-radius: base.$border-radius !default;
-
-.Tooltip {
- z-index: 2;
- padding: 0.5em 0.75em;
- pointer-events: none;
- text-align: left;
- transition: opacity 150ms ease-out;
- background-color: $background-color;
- color: $color;
- box-shadow: 0.1em 0.1em 1.25em -0.1em rgba(0, 0, 0, 0.5);
- border-radius: $border-radius;
- max-width: base.em(250px);
-}
diff --git a/tgui/packages/tgui/styles/functions.scss b/tgui/packages/tgui/styles/functions.scss
index 1c8d65e3a1756..403d43c7b4bcb 100644
--- a/tgui/packages/tgui/styles/functions.scss
+++ b/tgui/packages/tgui/styles/functions.scss
@@ -29,11 +29,11 @@
// Increases perceptual color lightness.
@function lighten($color, $percent) {
$scaled: hsl(
- color.hue($color),
- color.saturation($color),
- color.lightness($color) * (1 + num($percent))
+ color.channel($color, 'hue', $space: hsl),
+ color.channel($color, 'saturation', $space: hsl),
+ color.channel($color, 'lightness', $space: hsl) * (1 + num($percent))
);
- $mixed: color.mix(#ffffff, $color, 100% * num($percent));
+ $mixed: color.mix(hsl(0, 0%, 100%), $color, 100% * num($percent));
@return color.mix($scaled, $mixed, 75%);
}
@@ -41,9 +41,9 @@
// 1 is pure white, 0 is pure black.
@function luminance($color) {
$colors: (
- 'red': color.red($color),
- 'green': color.green($color),
- 'blue': color.blue($color),
+ 'red': color.channel($color, 'red', $space: rgb),
+ 'green': color.channel($color, 'green', $space: rgb),
+ 'blue': color.channel($color, 'blue', $space: rgb),
);
@each $name, $value in $colors {
diff --git a/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss b/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss
index 8aa8aae48bb1d..7f9c1f7a46155 100644
--- a/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss
+++ b/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss
@@ -26,8 +26,8 @@
}
.BoardTab__Selected {
- background-color: #edcf64;
- border-bottom: 1px solid #edcf64;
+ background-color: hsl(45, 82%, 66%);
+ border-bottom: 1px solid hsl(45, 82%, 66%);
transition: all 0.2s;
}
@@ -37,21 +37,21 @@
overflow: hidden;
}
.Evidence__Pin {
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
- background-color: #db2828;
+ box-shadow: 0 0 10px hsla(0, 0%, 0%, 0.2);
+ background-color: hsl(0, 72%, 50%);
border-radius: 20px;
width: 15px;
height: 15px;
}
.Evidence__Box {
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0 10px hsla(0, 0%, 0%, 0.4);
padding: 5px;
color: black;
min-width: 200px;
max-width: 300px;
- background-color: white;
- border: 2px solid grey;
+ background-color: hsl(0, 0%, 100%);
+ border: 2px solid hsl(0, 0%, 50%);
-ms-user-select: none;
user-select: none;
text-wrap: wrap;
@@ -59,7 +59,7 @@
}
.Evidence__Box__TextBox {
- border-top: 1px solid #eaeaea;
+ border-top: 1px solid hsl(0, 0%, 92%);
text-wrap: wrap;
padding: 5px 0;
margin-top: 5px;
@@ -74,7 +74,7 @@
.Board__Content {
position: relative;
- background-color: #edcf64;
+ background-color: hsl(45, 82%, 66%);
padding: 5px;
overflow: hidden;
height: 95%;
@@ -82,7 +82,7 @@
.Evidence__Icon {
margin-top: 5px;
- border: 5px solid #e0e0e0;
+ border: 5px solid hsl(0, 0%, 88%);
width: 100%;
}
diff --git a/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss b/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss
index b4265b1fba5d0..4b218b397ef5d 100644
--- a/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss
+++ b/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss
@@ -1,12 +1,12 @@
.ExperimentTechwebServer__Web,
.ExperimentConfigure__ExperimentPanel {
- background: #000000;
- border: 1px solid #40628a;
+ background: hsl(0, 0%, 0%);
+ border: 1px solid hsl(210, 33%, 41%);
margin: 3px 0;
}
.ExperimentTechwebServer__WebHeader {
- background: #40628a;
+ background: hsl(210, 33%, 41%);
padding: 2px;
}
@@ -81,5 +81,5 @@
height: 100%;
right: 0;
top: 0;
- color: rgba(255, 255, 255, 0.5);
+ color: hsla(0, 0%, 100%, 0.5);
}
diff --git a/tgui/packages/tgui/styles/interfaces/Fabricator.scss b/tgui/packages/tgui/styles/interfaces/Fabricator.scss
index a7488f50a2c98..5016094c64667 100644
--- a/tgui/packages/tgui/styles/interfaces/Fabricator.scss
+++ b/tgui/packages/tgui/styles/interfaces/Fabricator.scss
@@ -3,8 +3,8 @@
@use '../base.scss';
@use '../colors.scss';
@use '../functions.scss' as *;
-@use '../components/Button.scss' as button;
-@use '../components/Tabs.scss' as tabs;
+@use 'pkg:tgui-styles/components/Button' as button;
+@use 'pkg:tgui-styles/components/Tabs' as tabs;
.Fabricator__Recipe {
padding: 0.25em 0;
@@ -66,6 +66,7 @@
}
.MaterialDock--active .MaterialDock__Dock {
+ animation: materialdock-open 0.125s ease-out;
@keyframes materialdock-open {
0% {
opacity: 0;
@@ -75,8 +76,6 @@
opacity: 1;
}
}
-
- animation: materialdock-open 0.125s ease-out;
}
.MaterialDock__Button {
diff --git a/tgui/packages/tgui/styles/interfaces/Fishing.scss b/tgui/packages/tgui/styles/interfaces/Fishing.scss
index f9967b2cb82e6..d65ddf27393ec 100644
--- a/tgui/packages/tgui/styles/interfaces/Fishing.scss
+++ b/tgui/packages/tgui/styles/interfaces/Fishing.scss
@@ -45,8 +45,8 @@
width: 100%;
top: 0%;
left: 0;
- background: #4d5f2b;
- border: 0px #4d5f2b;
+ background: hsl(80.8, 37.7%, 27.1%);
+ border: 0px hsl(80.8, 37.7%, 27.1%);
border-radius: 10px;
}
@@ -71,7 +71,7 @@
.fishing .completion .bar {
position: absolute;
width: 100%;
- background: #7cb413;
+ background: hsl(80.9, 80.9%, 39%);
bottom: 0;
border-radius: 5px;
}
diff --git a/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss b/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss
index 7cfecb250acc4..c3fabf9f0212b 100644
--- a/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss
+++ b/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss
@@ -62,7 +62,7 @@ $fg-map: colors.$fg-map !default;
}
}
-$border-color: #88bfff !default;
+$border-color: hsl(210, 100%, 73%) !default;
$border-radius: base.$border-radius !default;
.IntegratedCircuit__BlueBorder {
diff --git a/tgui/packages/tgui/styles/components/SearchItem.scss b/tgui/packages/tgui/styles/interfaces/LootPanel.scss
similarity index 93%
rename from tgui/packages/tgui/styles/components/SearchItem.scss
rename to tgui/packages/tgui/styles/interfaces/LootPanel.scss
index 5dadcdf8d6aea..bd6af021e2d27 100644
--- a/tgui/packages/tgui/styles/components/SearchItem.scss
+++ b/tgui/packages/tgui/styles/interfaces/LootPanel.scss
@@ -9,7 +9,7 @@
.SearchItem--box {
background: black;
- border: thin solid #212121;
+ border: thin solid hsl(0, 0%, 12.9%);
display: flex;
align-items: center;
justify-content: center;
diff --git a/tgui/packages/tgui/styles/interfaces/Mecha.scss b/tgui/packages/tgui/styles/interfaces/Mecha.scss
index 8795c8cb69da7..30e33d43b4a64 100644
--- a/tgui/packages/tgui/styles/interfaces/Mecha.scss
+++ b/tgui/packages/tgui/styles/interfaces/Mecha.scss
@@ -2,21 +2,21 @@
@use '../colors.scss';
@use '../functions.scss' as *;
-$color-danger: #c92020 !default;
+$color-danger: hsl(0, 74%, 45%) !default;
.Mecha__displayBox {
- background-color: #002003;
- border: 0.167em inset #e8e4c9;
- color: #03e017;
+ background-color: hsl(150, 100%, 1%);
+ border: 0.167em inset hsl(50, 33%, 91%);
+ color: hsl(132, 100%, 45%);
font-size: 2em;
font-family: monospace;
padding: 0.25em;
}
.Mecha__displayBoxRed {
- background-color: #002003;
- border: 0.167em inset #e8e4c9;
- color: #f54b4b;
+ background-color: hsl(150, 100%, 1%);
+ border: 0.167em inset hsl(50, 33%, 91%);
+ color: hsl(0, 89%, 64%);
font-size: 2em;
font-family: monospace;
padding: 0.25em;
diff --git a/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss b/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss
index cc55e53678c6f..5a29d77f4647e 100644
--- a/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss
+++ b/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss
@@ -19,10 +19,10 @@ $msgpadding: 0.7rem;
border-radius: 0;
- background-color: lighten($msgcolor-incoming, 10%);
+ background-color: color.adjust($msgcolor-incoming, $lightness: 10%);
&_outgoing {
- border-color: lighten($msgcolor-outgoing, 20%);
- background-color: lighten($msgcolor-outgoing, 30%);
+ border-color: color.adjust($msgcolor-outgoing, $lightness: 20%);
+ background-color: color.adjust($msgcolor-outgoing, $lightness: 30%);
}
}
diff --git a/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss b/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss
index 615a3f696afa2..d27311e3f5e60 100644
--- a/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss
+++ b/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss
@@ -5,12 +5,12 @@
$color-danger: colors.bg(colors.$red) !default;
$color-caution: colors.bg(colors.$yellow) !default;
-$background-beige: #e8e4c9;
+$background-beige: hsl(50, 33%, 84%);
.NuclearBomb__displayBox {
- background-color: #002003;
+ background-color: hsl(150, 100%, 1%);
border: 0.167em inset $background-beige;
- color: #03e017;
+ color: hsl(132, 100%, 45%);
font-size: 2em;
font-family: monospace;
padding: 0.25em;
@@ -33,9 +33,9 @@ $background-beige: #e8e4c9;
}
.NuclearBomb__Button--1 {
- background-color: #d3cfb7 !important;
- border-color: #d3cfb7 !important;
- color: #a9a692 !important;
+ background-color: hsl(50, 33%, 78%) !important;
+ border-color: hsl(50, 33%, 78%) !important;
+ color: hsl(50, 10%, 70%) !important;
}
.NuclearBomb__Button--E {
diff --git a/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss b/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss
index ec06d9fd1ba59..0acbafa742e19 100644
--- a/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss
+++ b/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss
@@ -36,7 +36,7 @@
.PersonalCraftingGridItem__content {
position: relative;
- color: #888;
+ color: hsl(0, 0%, 53.3%);
padding: 0.5em 0.5em 2.5em 0.5em;
min-height: 100%;
pointer-events: none;
@@ -57,7 +57,7 @@
right: 0;
left: 0;
padding: 0.5em;
- color: #fff;
+ color: hsl(0, 0%, 100%);
background-color: rgba(255, 0, 0, 0.1);
text-align: center;
visibility: hidden;
@@ -76,21 +76,21 @@
overflow: hidden;
font-weight: bold;
margin-bottom: 0.5em;
- color: #aaa;
+ color: hsl(0, 0%, 66.7%);
}
.PersonalCraftingGridItem--craftable .PersonalCraftingGridItem__name {
- color: #fff;
+ color: hsl(0, 0%, 100%);
}
.PersonalCraftingGridItem__prereq {
- color: #777;
+ color: hsl(0, 0%, 46.7%);
overflow: hidden;
white-space: nowrap;
}
.PersonalCraftingGridItem--craftable .PersonalCraftingGridItem__prereq {
- color: #bbb;
+ color: hsl(0, 0%, 73.3%);
}
.PersonalCraftingGridItem__extra {
diff --git a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss
index 6a1d241b83fec..cbaf1c9e6765d 100644
--- a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss
+++ b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss
@@ -1,6 +1,5 @@
@use 'sass:color';
@use 'sass:map';
-@use '../components/Button.scss';
@use '../colors.scss';
@use '../base.scss';
@@ -10,7 +9,7 @@ $department_map: (
'Cargo': colors.$brown,
'Command': colors.$yellow,
'Security': colors.$red,
- 'Engineering': #f1a839,
+ 'Engineering': hsl(36, 89%, 60%),
'Medical': colors.$teal,
'Science': colors.fg(colors.$purple),
'Service': colors.$green,
@@ -110,7 +109,7 @@ $department_map: (
.antagonist-days-left {
text-align: center;
- text-shadow: 1px 1px 1px #222;
+ text-shadow: 1px 1px 1px hsl(0, 0%, 13.3%);
width: 100%;
@@ -140,9 +139,9 @@ $department_map: (
}
background: colors.fg($color-value);
- border-bottom: 2px solid rgba(0, 0, 0, 0.3);
- border-left: 2px solid rgba(0, 0, 0, 0.3);
- border-right: 2px solid rgba(0, 0, 0, 0.3);
+ border-bottom: 2px solid hsla(0, 0%, 0%, 0.3);
+ border-left: 2px solid hsla(0, 0%, 0%, 0.3);
+ border-right: 2px solid hsla(0, 0%, 0%, 0.3);
color: black;
> * {
@@ -151,20 +150,20 @@ $department_map: (
}
&:first-child {
- border-top: 2px solid rgba(0, 0, 0, 0.3);
+ border-top: 2px solid hsla(0, 0%, 0%, 0.3);
}
.options {
- background: rgba(0, 0, 0, 0.2);
+ background: hsla(0, 0%, 0%, 0.2);
height: 100%;
}
}
&--Captain {
- border: 3px solid rgba(200, 200, 0, 1);
+ border: 3px solid hsla(60, 100%, 39.2%, 1);
&:first-child {
- border-top: 3px solid rgba(200, 200, 0, 1);
+ border-top: 3px solid hsla(60, 100%, 39.2%, 1);
}
.job-name {
@@ -174,12 +173,12 @@ $department_map: (
}
&__priority {
- border: 1px solid rgba(0, 0, 0, 0.3);
+ border: 1px solid hsla(0, 0%, 0%, 0.3);
&--off::after {
content: '';
- background: rgba(0, 0, 0, 0.2);
+ background: hsla(0, 0%, 0%, 0.2);
display: block;
height: 80%;
left: 50%;
@@ -209,7 +208,7 @@ $department_map: (
&__quirk {
background-color: colors.$white;
border-bottom: 1px solid black;
- color: #111;
+ color: hsl(0, 0%, 6.7%);
transition: background-color 0.1s ease-in;
$quality_map: (
diff --git a/tgui/packages/tgui/styles/interfaces/Safe.scss b/tgui/packages/tgui/styles/interfaces/Safe.scss
index 2f9f3d9d3613b..706d1b3f965ec 100644
--- a/tgui/packages/tgui/styles/interfaces/Safe.scss
+++ b/tgui/packages/tgui/styles/interfaces/Safe.scss
@@ -4,18 +4,18 @@
height: 96%;
left: 2.5%;
top: 2%;
- border: 5px outset #3e4f6a;
+ border: 5px outset hsl(217, 27%, 34%);
padding: 5px;
text-align: center;
}
.Safe__engraving-arrow {
- color: #35435a;
+ color: hsl(217, 27%, 27%);
}
.Safe__engraving-hinge {
content: ' ';
- background-color: #191f2a;
+ background-color: hsl(217, 27%, 15%);
width: 25px;
height: 40px;
position: absolute;
@@ -39,17 +39,17 @@
}
.Safe__dialer-number {
- color: #bbbbbb;
+ color: hsl(0, 0%, 73.3%);
display: inline;
- background-color: #191f2a;
+ background-color: hsl(217, 27%, 15%);
font-size: 1.5rem;
font-weight: bold;
padding: 0 0.5rem;
}
.Safe__contents {
- border: 10px solid #191f2a;
- background-color: #0f131a;
+ border: 10px solid hsl(217, 27%, 15%);
+ background-color: hsl(217, 27%, 10%);
height: calc(85% + 7.5px);
text-align: left;
padding: 5px;
@@ -64,8 +64,12 @@
font-family: 'Comic Sans MS', cursive, sans-serif;
font-style: italic;
color: black;
- box-shadow: 5px 5px #111111;
- background-image: linear-gradient(to bottom, #b2ae74 0%, #8e8b5d 100%);
+ box-shadow: 5px 5px hsl(0, 0%, 6.7%);
+ background-image: linear-gradient(
+ to bottom,
+ hsl(50, 20%, 58.8%) 0%,
+ hsl(50, 6%, 45.5%) 100%
+ );
transform: rotate(-1deg);
&:before {
@@ -73,8 +77,12 @@
display: block;
width: 24px;
height: 40px;
- background-image: linear-gradient(to bottom, transparent 0%, #ffffff 100%);
- box-shadow: 1px 1px #111111;
+ background-image: linear-gradient(
+ to bottom,
+ transparent 0%,
+ hsl(0, 0%, 100%) 100%
+ );
+ box-shadow: 1px 1px hsl(0, 0%, 6.7%);
opacity: 0.2;
position: absolute;
top: -30px;
diff --git a/tgui/packages/tgui/styles/interfaces/Techweb.scss b/tgui/packages/tgui/styles/interfaces/Techweb.scss
index 684267185d104..f73aaa6ca7a5d 100644
--- a/tgui/packages/tgui/styles/interfaces/Techweb.scss
+++ b/tgui/packages/tgui/styles/interfaces/Techweb.scss
@@ -23,7 +23,7 @@
.Techweb__HeaderContent {
background-color: black;
padding: 6px;
- border: 1px solid #40628a;
+ border: 1px solid hsl(210, 33%, 41%);
}
.Techweb__HeaderContent > * > :not(:last-child) {
@@ -33,13 +33,13 @@
.Techweb__HeaderSectionTabs {
margin-top: 8px;
background-color: black;
- border: 1px solid #40628a;
+ border: 1px solid hsl(210, 33%, 41%);
padding-left: 5px;
padding-right: 5px;
}
.Techweb__HeaderTabTitle {
- border-right: 1px solid #40628a;
+ border-right: 1px solid hsl(210, 33%, 41%);
padding-right: 0.5em;
margin-right: 0.5em;
font-weight: bold;
diff --git a/tgui/packages/tgui/styles/interfaces/Uplink.scss b/tgui/packages/tgui/styles/interfaces/Uplink.scss
index 58cf956a9027a..bb3d2834bb994 100644
--- a/tgui/packages/tgui/styles/interfaces/Uplink.scss
+++ b/tgui/packages/tgui/styles/interfaces/Uplink.scss
@@ -1,9 +1,39 @@
-$badGradient: linear-gradient(to right, #9c1e1e, #6c2828, #9c1e1e);
-$normalGradient: linear-gradient(to right, #5d5041, #40372d, #5d5041);
-$goodGradient: linear-gradient(to right, #515d6c, #252a30, #515d6c);
-$veryGoodGradient: linear-gradient(to right, #977949, #534328, #977949);
-$superGoodGradient: linear-gradient(to right, #9d9948, #777437, #9d9948);
-$bestGradient: linear-gradient(to right, #9d486b, #57283c, #9d486b);
+$badGradient: linear-gradient(
+ to right,
+ hsl(0, 67%, 37%),
+ hsl(0, 43%, 28%),
+ hsl(0, 67%, 37%)
+);
+$normalGradient: linear-gradient(
+ to right,
+ hsl(30, 14%, 34%),
+ hsl(30, 20%, 19%),
+ hsl(30, 14%, 34%)
+);
+$goodGradient: linear-gradient(
+ to right,
+ hsl(210, 11%, 37%),
+ hsl(210, 14%, 17%),
+ hsl(210, 11%, 37%)
+);
+$veryGoodGradient: linear-gradient(
+ to right,
+ hsl(36, 38%, 44%),
+ hsl(36, 33%, 19%),
+ hsl(36, 38%, 44%)
+);
+$superGoodGradient: linear-gradient(
+ to right,
+ hsl(60, 39%, 45%),
+ hsl(60, 35%, 34%),
+ hsl(60, 39%, 45%)
+);
+$bestGradient: linear-gradient(
+ to right,
+ hsl(330, 34%, 45%),
+ hsl(330, 43%, 26%),
+ hsl(330, 34%, 45%)
+);
$_rep_map: (
'bad': $badGradient,
diff --git a/tgui/packages/tgui/styles/layouts/Layout.scss b/tgui/packages/tgui/styles/layouts/Layout.scss
index eaadcd9a6978b..ecf750ecc0740 100644
--- a/tgui/packages/tgui/styles/layouts/Layout.scss
+++ b/tgui/packages/tgui/styles/layouts/Layout.scss
@@ -4,7 +4,7 @@
*/
@use 'sass:color';
-@use '../base.scss';
+@use '../base';
$scrollbar-color-multiplier: 1 !default;
diff --git a/tgui/packages/tgui/styles/layouts/NtosWindow.scss b/tgui/packages/tgui/styles/layouts/NtosWindow.scss
index bed4abab53cec..7c75cdfafe9c3 100644
--- a/tgui/packages/tgui/styles/layouts/NtosWindow.scss
+++ b/tgui/packages/tgui/styles/layouts/NtosWindow.scss
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: MIT
*/
-@use '../base.scss';
+@use '../base';
.NtosWindow__header {
position: absolute;
@@ -12,7 +12,7 @@
right: 0;
height: 2em;
line-height: 1.928em;
- background-color: rgba(0, 0, 0, 0.5);
+ background-color: hsla(0, 0, 0, 0.5);
font-family: Consolas, monospace;
font-size: base.em(14px);
user-select: none;
diff --git a/tgui/packages/tgui/styles/layouts/TitleBar.scss b/tgui/packages/tgui/styles/layouts/TitleBar.scss
index 1a26dd9e29ebf..517f2b8ad811e 100644
--- a/tgui/packages/tgui/styles/layouts/TitleBar.scss
+++ b/tgui/packages/tgui/styles/layouts/TitleBar.scss
@@ -4,13 +4,13 @@
*/
@use 'sass:color';
-@use '../base.scss';
-@use '../colors.scss';
+@use '../base';
+@use '../colors';
-$text-color: rgba(255, 255, 255, 0.75) !default;
-$background-color: #363636 !default;
-$shadow-color-core: #161616 !default;
-$shadow-color: rgba(0, 0, 0, 0.1) !default;
+$text-color: hsla(0, 0%, 100%, 0.75) !default;
+$background-color: hsl(0, 0%, 21%) !default;
+$shadow-color-core: hsl(0, 0%, 8.6%) !default;
+$shadow-color: hsla(0, 0%, 0%, 0.1) !default;
.TitleBar {
background-color: $background-color;
@@ -30,7 +30,7 @@ $shadow-color: rgba(0, 0, 0, 0.1) !default;
&:hover {
color: rgba(255, 255, 255, 1);
- background-color: #cc0000;
+ background-color: hsl(0, 100%, 40%);
transition:
color 0ms,
background-color 0ms;
@@ -105,7 +105,7 @@ $shadow-color: rgba(0, 0, 0, 0.1) !default;
min-width: base.rem(20px);
padding: 2px 4px;
padding: base.rem(2px) base.rem(4px);
- background-color: rgba(colors.$good, 0.75);
- color: #fff;
+ background-color: darken(colors.$good, 10%);
+ color: hsl(120, 100%, 100%);
text-align: center;
}
diff --git a/tgui/packages/tgui/styles/layouts/Window.scss b/tgui/packages/tgui/styles/layouts/Window.scss
index 232dd8396bbf2..1bb1e2acd6975 100644
--- a/tgui/packages/tgui/styles/layouts/Window.scss
+++ b/tgui/packages/tgui/styles/layouts/Window.scss
@@ -4,8 +4,8 @@
*/
@use 'sass:color';
-@use '../base.scss';
-@use '../functions.scss' as *;
+@use '../base';
+@use '../functions' as *;
.Window {
position: fixed;
diff --git a/tgui/packages/tgui/styles/main.scss b/tgui/packages/tgui/styles/main.scss
index 53cd615871141..8372dd3171b7f 100644
--- a/tgui/packages/tgui/styles/main.scss
+++ b/tgui/packages/tgui/styles/main.scss
@@ -4,7 +4,8 @@
*/
@use 'sass:meta';
-@use './base.scss';
+@use 'base';
+@use 'pkg:tgui-styles';
// Core styles
@include meta.load-css('./reset.scss');
@@ -19,34 +20,6 @@
@include meta.load-css('./atomic/outline.scss');
@include meta.load-css('./atomic/text.scss');
-// Components
-@include meta.load-css('./components/BlockQuote.scss');
-@include meta.load-css('./components/Button.scss');
-@include meta.load-css('./components/ColorBox.scss');
-@include meta.load-css('./components/Dialog.scss');
-@include meta.load-css('./components/Dimmer.scss');
-@include meta.load-css('./components/Divider.scss');
-@include meta.load-css('./components/Dropdown.scss');
-@include meta.load-css('./components/Flex.scss');
-@include meta.load-css('./components/Icon.scss');
-@include meta.load-css('./components/Input.scss');
-@include meta.load-css('./components/Knob.scss');
-@include meta.load-css('./components/LabeledList.scss');
-@include meta.load-css('./components/MenuBar.scss');
-@include meta.load-css('./components/Modal.scss');
-@include meta.load-css('./components/NoticeBox.scss');
-@include meta.load-css('./components/NumberInput.scss');
-@include meta.load-css('./components/ProgressBar.scss');
-@include meta.load-css('./components/RoundGauge.scss');
-@include meta.load-css('./components/SearchItem.scss');
-@include meta.load-css('./components/Section.scss');
-@include meta.load-css('./components/Slider.scss');
-@include meta.load-css('./components/Stack.scss');
-@include meta.load-css('./components/Table.scss');
-@include meta.load-css('./components/Tabs.scss');
-@include meta.load-css('./components/TextArea.scss');
-@include meta.load-css('./components/Tooltip.scss');
-
// Interfaces
@include meta.load-css('./interfaces/AlertModal.scss');
@include meta.load-css('./interfaces/Changelog.scss');
@@ -62,6 +35,7 @@
@include meta.load-css('./interfaces/LibraryAdmin.scss');
@include meta.load-css('./interfaces/LibraryComputer.scss');
@include meta.load-css('./interfaces/ListInput.scss');
+@include meta.load-css('./interfaces/LootPanel.scss');
@include meta.load-css('./interfaces/Mecha.scss');
@include meta.load-css('./interfaces/NtosMessenger.scss');
@include meta.load-css('./interfaces/NtosNotepad.scss');
diff --git a/tgui/packages/tgui/styles/reset.scss b/tgui/packages/tgui/styles/reset.scss
index e7fff7f936dae..69d03ce4801af 100644
--- a/tgui/packages/tgui/styles/reset.scss
+++ b/tgui/packages/tgui/styles/reset.scss
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: MIT
*/
-@use './base.scss';
+@use 'base';
html,
body {
diff --git a/tgui/packages/tgui/styles/themes/abductor.scss b/tgui/packages/tgui/styles/themes/abductor.scss
index 39dac5773c063..c80bacf0fa0ac 100644
--- a/tgui/packages/tgui/styles/themes/abductor.scss
+++ b/tgui/packages/tgui/styles/themes/abductor.scss
@@ -6,13 +6,13 @@
@use 'sass:color';
@use 'sass:meta';
-@use '../colors.scss' with (
- $primary: #ad2350,
+@use '../colors' with (
+ $primary: hsl(340, 67%, 41%),
$fg-map-keys: (),
$bg-map-keys: ()
);
-@use '../base.scss' with (
- $color-bg: #2a314a,
+@use '../base' with (
+ $color-bg: hsl(227, 29%, 23%),
$color-bg-grad-spread: 6%,
$border-radius: 2px
);
@@ -23,35 +23,35 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': colors.$primary,
- 'color-disabled': #363636,
- 'color-selected': #465899,
- 'color-caution': #be6209,
- 'color-danger': #9a9d00
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(227, 37%, 45%),
+ 'color-caution': hsl(30, 88%, 39%),
+ 'color-danger': hsl(62, 100%, 30%)
)
);
@include meta.load-css(
- '../components/Input.scss',
- $with: ('border-color': #404b6e)
+ 'pkg:tgui-styles/components/Input',
+ $with: ('border-color': hsl(227, 29%, 27%))
);
@include meta.load-css(
- '../components/NoticeBox.scss',
- $with: ('background-color': #a82d55)
+ 'pkg:tgui-styles/components/NoticeBox',
+ $with: ('background-color': hsl(340, 67%, 41%))
);
@include meta.load-css(
- '../components/NumberInput.scss',
- $with: ('border-color': #404b6e)
+ 'pkg:tgui-styles/components/NumberInput',
+ $with: ('border-color': hsl(227, 29%, 27%))
);
@include meta.load-css(
- '../components/ProgressBar.scss',
- $with: ('background-color': rgba(0, 0, 0, 0.5))
+ 'pkg:tgui-styles/components/ProgressBar',
+ $with: ('background-color': hsla(0, 0%, 0%, 0.5))
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': #a82d55)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(340, 67%, 41%))
);
// Layouts
@@ -59,7 +59,7 @@
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #9e1b46)
+ $with: ('background-color': hsl(340, 71%, 36%))
);
.Layout__content {
diff --git a/tgui/packages/tgui/styles/themes/admin.scss b/tgui/packages/tgui/styles/themes/admin.scss
index c36d5305beffb..73940e47f9cd6 100644
--- a/tgui/packages/tgui/styles/themes/admin.scss
+++ b/tgui/packages/tgui/styles/themes/admin.scss
@@ -7,12 +7,13 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #1596b6,
+ // convert to hsl
+ $primary: hsl(191.93, 79.31%, 39.8%),
$fg-map-keys: (),
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-bg: #29333a,
+ $color-bg: hsl(204.7, 17.2%, 19.4%),
$color-bg-grad-spread: 6%,
$border-radius: 2px
);
diff --git a/tgui/packages/tgui/styles/themes/cardtable.scss b/tgui/packages/tgui/styles/themes/cardtable.scss
index e5047e2e2f0c7..ba1f2bcf1a991 100644
--- a/tgui/packages/tgui/styles/themes/cardtable.scss
+++ b/tgui/packages/tgui/styles/themes/cardtable.scss
@@ -6,13 +6,13 @@
@use 'sass:color';
@use 'sass:meta';
-@use '../colors.scss' with (
- $primary: #000000,
+@use '../colors' with (
+ $primary: hsl(0, 0%, 0%),
$fg-map-keys: (),
$bg-map-keys: ()
);
-@use '../base.scss' with (
- $color-bg: #117039,
+@use '../base' with (
+ $color-bg: hsl(145.26, 73.64%, 25.29%),
$color-bg-grad-spread: 0%,
$border-radius: 0
);
@@ -24,31 +24,31 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': #117039,
- 'color-disabled': #363636,
- 'color-selected': #9d0808,
- 'color-caution': #be6209,
- 'color-danger': #9a9d00
+ 'color-default': hsl(145.26, 73.64%, 25.29%),
+ 'color-disabled': hsl(0, 0%, 21.18%),
+ 'color-selected': hsl(0, 90.3%, 32.35%),
+ 'color-caution': hsl(29.5, 90.95%, 39.02%),
+ 'color-danger': hsl(61.15, 100%, 30.78%)
)
);
@include meta.load-css(
- '../components/NumberInput.scss',
+ 'pkg:tgui-styles/components/NumberInput',
$with: ('border-color': #fff)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: ('background-color': rgba(0, 0, 0, 0.5))
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
// Layouts
@include meta.load-css('../layouts/Layout.scss');
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #381608)
+ $with: ('background-color': hsl(17.5, 75%, 12.5%))
);
.Button {
diff --git a/tgui/packages/tgui/styles/themes/hackerman.scss b/tgui/packages/tgui/styles/themes/hackerman.scss
index 51befcf1b3668..25c6956fc3d87 100644
--- a/tgui/packages/tgui/styles/themes/hackerman.scss
+++ b/tgui/packages/tgui/styles/themes/hackerman.scss
@@ -7,12 +7,12 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #00ff00,
+ $primary: hsl(120, 100%, 50%),
$fg-map-keys: (),
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-bg: #121b12,
+ $color-bg: hsl(120, 20%, 8.8%),
$color-bg-grad-spread: 0%
);
@@ -22,34 +22,34 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': colors.$primary,
- 'color-disabled': #4a6a4a,
- 'color-selected': #00ff00
+ 'color-disabled': hsl(120, 17.78%, 35.29%),
+ 'color-selected': hsl(120, 100%, 50%)
)
);
@include meta.load-css(
- '../components/Tabs.scss',
+ 'pkg:tgui-styles/components/Tabs',
$with: (
'color-default': colors.$primary,
- 'tab-color-selected': #00ff003f,
- 'text-color': #e7e7e7
+ 'tab-color-selected': hsla(120, 100%, 50%, 0.25),
+ 'text-color': hsl(0, 0%, 90.59%)
)
);
@include meta.load-css(
- '../components/Input.scss',
+ 'pkg:tgui-styles/components/Input',
$with: ('border-color': colors.$primary)
);
- @include meta.load-css('../components/Modal.scss');
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Modal');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
// Layouts
@include meta.load-css('../layouts/Layout.scss');
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #223d22)
+ $with: ('background-color': hsl(120, 28.4%, 18.6%))
);
.Layout__content {
@@ -60,7 +60,7 @@
font-family: monospace;
border-width: base.em(2px);
border-style: outset;
- border-color: #00aa00;
+ border-color: hsl(120, 100%, 33.33%);
outline: base.em(1px) solid rgb(0, 122, 0);
}
diff --git a/tgui/packages/tgui/styles/themes/malfunction.scss b/tgui/packages/tgui/styles/themes/malfunction.scss
index d32113ba5e661..9e2abe451a65d 100644
--- a/tgui/packages/tgui/styles/themes/malfunction.scss
+++ b/tgui/packages/tgui/styles/themes/malfunction.scss
@@ -7,12 +7,12 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #910101,
+ $primary: hsl(0, 99%, 29%),
$fg-map-keys: (),
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-bg: #1b3443,
+ $color-bg: hsl(204, 43%, 19%),
$color-bg-grad-spread: 6%
);
@@ -22,35 +22,35 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': colors.$primary,
- 'color-disabled': #363636,
- 'color-selected': #1e5881,
- 'color-caution': #be6209,
- 'color-danger': #9a9d00
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(204, 61%, 31%),
+ 'color-caution': hsl(30, 88%, 39%),
+ 'color-danger': hsl(62, 100%, 30%)
)
);
@include meta.load-css(
- '../components/Input.scss',
- $with: ('border-color': #910101)
+ 'pkg:tgui-styles/components/Input',
+ $with: ('border-color': hsl(0, 99%, 29%))
);
@include meta.load-css(
- '../components/NoticeBox.scss',
- $with: ('background-color': #1a3f57)
+ 'pkg:tgui-styles/components/NoticeBox',
+ $with: ('background-color': hsl(204, 54%, 23%))
);
@include meta.load-css(
- '../components/NumberInput.scss',
- $with: ('border-color': #910101)
+ 'pkg:tgui-styles/components/NumberInput',
+ $with: ('border-color': hsl(0, 99%, 29%))
);
@include meta.load-css(
- '../components/ProgressBar.scss',
- $with: ('background-color': rgba(0, 0, 0, 0.5))
+ 'pkg:tgui-styles/components/ProgressBar',
+ $with: ('background-color': hsla(0, 0%, 0%, 0.5))
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': #235577)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(204, 54%, 29%))
);
// Layouts
@@ -58,7 +58,7 @@
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #1a3f57)
+ $with: ('background-color': hsl(204, 54%, 23%))
);
.Layout__content {
diff --git a/tgui/packages/tgui/styles/themes/neutral.scss b/tgui/packages/tgui/styles/themes/neutral.scss
index e8ed3ca7da98b..6665a6673c44d 100644
--- a/tgui/packages/tgui/styles/themes/neutral.scss
+++ b/tgui/packages/tgui/styles/themes/neutral.scss
@@ -6,7 +6,7 @@
@use 'sass:color';
@use 'sass:meta';
-$neutral: #ffb300;
+$neutral: hsl(42.12, 100%, 50%);
@use '../colors.scss' with (
$primary: $neutral,
@@ -21,20 +21,20 @@ $neutral: #ffb300;
.theme-neutral {
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': color.scale($neutral, $lightness: -30%),
'color-transparent-text': color.scale($neutral, $lightness: 30%)
)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: (
'color-default-fill': $neutral,
'background-color': rgba(0, 0, 0, 0.5)
)
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
// Layouts
@include meta.load-css('../layouts/Layout.scss');
diff --git a/tgui/packages/tgui/styles/themes/ntOS95.scss b/tgui/packages/tgui/styles/themes/ntOS95.scss
index df541bf18a44e..90c0d3ed76504 100644
--- a/tgui/packages/tgui/styles/themes/ntOS95.scss
+++ b/tgui/packages/tgui/styles/themes/ntOS95.scss
@@ -6,19 +6,19 @@
@use 'sass:color';
@use 'sass:meta';
-$light-gray: #c3c3c3;
-$dark-gray: #858585;
+$light-gray: hsl(0, 0%, 76%);
+$dark-gray: hsl(0, 0%, 52%);
$scrollbar-color-multiplier: 1;
@use '../colors.scss' with (
- $primary: #000000,
- $good: #007c11,
- $average: #f0ec11,
- $bad: #db2828,
- $label: #000000
+ $primary: hsl(0, 0%, 0%),
+ $good: hsl(134, 100%, 24.3%),
+ $average: hsl(56, 88%, 50%),
+ $bad: hsl(0, 72%, 50%),
+ $label: hsl(0, 0%, 0%)
);
@use '../base.scss' with (
- $color-bg: #008081,
+ $color-bg: hsl(180, 100%, 25.3%),
$color-bg-grad-spread: 0%,
$border-radius: 0
);
@@ -29,59 +29,59 @@ $scrollbar-color-multiplier: 1;
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': #e8e4c9,
- 'color-disabled': #707070,
- 'color-selected': #007c11,
- 'color-caution': #be6209,
- 'color-danger': #9d0808
+ 'color-default': hsl(52.3, 40.3%, 84.9%),
+ 'color-disabled': hsl(0, 0%, 43.9%),
+ 'color-selected': hsl(128.2, 100%, 24.3%),
+ 'color-caution': hsl(29.5, 91%, 39%),
+ 'color-danger': hsl(0, 90.3%, 32.4%)
)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: ('background-color': rgba(0, 0, 0, 0.5))
);
@include meta.load-css(
- '../components/Section.scss',
+ 'pkg:tgui-styles/components/Section',
$with: ('background-color': rgba(0, 0, 0, 0.4))
);
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': #ecee9e)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(61.5, 70.2%, 77.6%))
);
// Layouts
@include meta.load-css('../layouts/Layout.scss');
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #000080)
+ $with: ('background-color': hsl(240, 100%, 25.1%))
);
.Button {
- color: #161613;
- background-color: #c2c2c2;
- //border: base.em(2px) outset #E8E4C9;
- outline: base.em(2px) outset #c3c3c3;
+ color: hsl(60, 7.3%, 8%);
+ background-color: hsl(0, 0%, 76.1%);
+ //border: base.em(2px) outset hsl(52.3, 40.3%, 84.9%);
+ outline: base.em(2px) outset hsl(0, 0%, 76.5%);
}
.Button:hover {
- background-color: #002ead;
+ background-color: hsl(224, 100%, 33.9%);
transition: 0.1s;
}
.Section {
+ color: black;
+ background-color: hsl(0, 0%, 75.3%);
+ outline: base.em(2px) outset hsl(0, 0%, 76.5%);
&__titleText {
color: black;
}
- color: black;
- background-color: #c0c0c0;
- outline: base.em(2px) outset #c3c3c3;
}
.Input {
background-color: white;
- outline: base.em(2px) inset #c3c3c3;
+ outline: base.em(2px) inset hsl(0, 0%, 76.5%);
color: black;
&__input:-ms-input-placeholder {
color: black;
@@ -90,7 +90,7 @@ $scrollbar-color-multiplier: 1;
.TextArea {
background-color: white;
- outline: base.em(2px) inset #c3c3c3;
+ outline: base.em(2px) inset hsl(0, 0%, 76.5%);
}
.Layout__content {
@@ -131,13 +131,13 @@ $scrollbar-color-multiplier: 1;
}
.Tab {
- color: #000000;
- background-color: #ecee9e;
+ color: hsl(0, 0%, 0%);
+ background-color: hsl(61.5, 70.2%, 77.6%);
}
.Tab--selected {
- color: #9d0808;
- background-color: #c3c3c3;
+ color: hsl(0, 90.3%, 32.4%);
+ background-color: hsl(0, 0%, 76.5%);
}
body {
@@ -151,11 +151,11 @@ $scrollbar-color-multiplier: 1;
.Table__cell {
display: table-cell;
padding: 0 0.25em;
- background-color: #c3c3c3;
- //outline: base.em(3px) outset #c0c0c0
+ background-color: hsl(0, 0%, 76.5%);
+ //outline: base.em(3px) outset hsl(0.0, 0.0%, 75.3%)
}
.Box {
- outline: base.em(3px) outset #c0c0c0;
+ outline: base.em(3px) outset hsl(0, 0%, 75.3%);
}
.Tooltip {
color: black;
diff --git a/tgui/packages/tgui/styles/themes/ntos.scss b/tgui/packages/tgui/styles/themes/ntos.scss
index 8b102b4777813..a43210b616aea 100644
--- a/tgui/packages/tgui/styles/themes/ntos.scss
+++ b/tgui/packages/tgui/styles/themes/ntos.scss
@@ -6,7 +6,7 @@
@use 'sass:color';
@use 'sass:meta';
-$nanotrasen: #384e68;
+$nanotrasen: hsl(213, 30%, 32%);
@use '../colors.scss' with (
$fg-map-keys: (),
@@ -19,20 +19,20 @@ $nanotrasen: #384e68;
.theme-ntos {
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': $nanotrasen,
'color-transparent-text': rgba(227, 240, 255, 0.75)
)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: (
'color-default-fill': $nanotrasen,
'background-color': rgba(0, 0, 0, 0.5)
)
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
// Layouts
@include meta.load-css('../layouts/Layout.scss');
diff --git a/tgui/packages/tgui/styles/themes/ntos_cat.scss b/tgui/packages/tgui/styles/themes/ntos_cat.scss
index ae6236b5aa39c..f09bbbf5c0d15 100644
--- a/tgui/packages/tgui/styles/themes/ntos_cat.scss
+++ b/tgui/packages/tgui/styles/themes/ntos_cat.scss
@@ -8,27 +8,26 @@
//@use 'sass:map';
//palette
-$cyan: #5edba5;
-$pink: #ed12f5;
-$orange: #ff9900;
-$purple: #463191;
+$cyan: hsl(156, 65%, 60%);
+$pink: hsl(300, 91%, 52%);
+$orange: hsl(36, 100%, 50%);
+$purple: hsl(248, 47%, 37%);
-$light-gray: #c3c3c3;
-$dark-gray: #858585;
+$light-gray: hsl(0, 0%, 76%);
+$dark-gray: hsl(0, 0%, 52%);
$scrollbar-color-multiplier: 0.5;
@use '../colors.scss' with (
$primary: black,
- $label: rgb(255, 132, 153),
- $good: pink,
-
+ $label: hsl(350, 100%, 76.5%),
+ $good: hsl(300, 91%, 52%),
$bad: red,
// $fg-map-keys: (),
// $bg-map-keys: (),
);
@use '../base.scss' with (
- $color-bg: orange,
+ $color-bg: hsl(36, 100%, 50%),
$color-bg-grad-spread: 12%,
//$border-radius: 0,
);
@@ -39,26 +38,26 @@ $scrollbar-color-multiplier: 0.5;
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': pink,
- 'color-transparent-text': rgba(227, 240, 255, 0.75),
- 'color-disabled': #363636,
- 'color-selected': #465899,
- 'color-caution': #be6209
+ 'color-default': hsl(300, 91%, 52%),
+ 'color-transparent-text': hsla(210, 100%, 94%, 0.75),
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(227, 37%, 45%),
+ 'color-caution': hsl(30, 88%, 39%)
)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
- $with: ('color-default-fill': rgb(255, 132, 153, 0.75))
+ 'pkg:tgui-styles/components/ProgressBar',
+ $with: ('color-default-fill': hsla(350, 100%, 76.5%, 0.75))
);
@include meta.load-css(
- '../components/Section.scss',
- $with: ('background-color': rgba(124, 62, 34, 0.75))
+ 'pkg:tgui-styles/components/Section',
+ $with: ('background-color': hsla(24, 56%, 31%, 0.75))
);
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': rgba(255, 153, 0, 0.75))
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsla(36, 100%, 50%, 0.75))
);
// Layouts
@@ -66,16 +65,16 @@ $scrollbar-color-multiplier: 0.5;
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': rgb(255, 132, 153, 0.75))
+ $with: ('background-color': hsla(350, 100%, 76.5%, 0.75))
);
.Section {
color: black;
- outline: base.em(2px) inset rgb(255, 132, 153);
+ outline: base.em(2px) inset hsl(350, 100%, 76.5%);
}
.Button {
- color: rgb(255, 132, 153);
- background-color: rgb(255, 255, 255);
+ color: hsl(350, 100%, 76.5%);
+ background-color: hsl(0, 0%, 100%);
}
.ProgressBar {
@@ -91,58 +90,58 @@ $scrollbar-color-multiplier: 0.5;
.Layout * {
// Fancy scrollbar
scrollbar-base-color: color.scale(
- #454255,
+ hsl(248, 17%, 27%),
$lightness: -25% * $scrollbar-color-multiplier
);
scrollbar-face-color: color.scale(
- #454255,
+ hsl(248, 17%, 27%),
$lightness: 10% * $scrollbar-color-multiplier
);
scrollbar-3dlight-color: color.scale(
- orange,
+ hsl(36, 100%, 50%),
$lightness: 0% * $scrollbar-color-multiplier
);
scrollbar-highlight-color: color.scale(
- orange,
+ hsl(36, 100%, 50%),
$lightness: 0% * $scrollbar-color-multiplier
);
scrollbar-track-color: color.scale(
- #ba753a,
+ hsl(30, 47%, 47%),
$lightness: -25% * $scrollbar-color-multiplier
);
scrollbar-arrow-color: color.scale(
- orange,
+ hsl(36, 100%, 50%),
$lightness: 50% * $scrollbar-color-multiplier
);
scrollbar-shadow-color: color.scale(
- #454255,
+ hsl(248, 17%, 27%),
$lightness: 10% * $scrollbar-color-multiplier
);
}
.Tab {
- color: rgb(255, 132, 153);
- background-color: rgba(255, 255, 255, 0.5);
+ color: hsl(350, 100%, 76.5%);
+ background-color: hsla(0, 0%, 100%, 0.5);
}
.Tab--selected {
color: black;
- background-color: rgb(255, 132, 153);
+ background-color: hsl(350, 100%, 76.5%);
}
.Box {
- outline: base.em(3px) outset #c0c0c0;
+ outline: base.em(3px) outset hsl(0, 0%, 76%);
}
.Tooltip {
color: black;
}
.Input {
- background-color: white;
- outline: base.em(2px) inset rgb(255, 132, 153);
+ background-color: hsl(0, 0%, 100%);
+ outline: base.em(2px) inset hsl(350, 100%, 76.5%);
}
.NtosWindow__header {
- background-color: #454255;
+ background-color: hsl(248, 17%, 27%);
}
.Flex {
- color: white;
- background-color: rgba(0, 0, 0, 0);
+ color: hsl(0, 0%, 100%);
+ background-color: hsla(0, 0%, 0%, 0);
}
}
diff --git a/tgui/packages/tgui/styles/themes/ntos_darkmode.scss b/tgui/packages/tgui/styles/themes/ntos_darkmode.scss
index b22ad60fc3f2f..0e3ec116f071f 100644
--- a/tgui/packages/tgui/styles/themes/ntos_darkmode.scss
+++ b/tgui/packages/tgui/styles/themes/ntos_darkmode.scss
@@ -6,7 +6,7 @@
@use 'sass:color';
@use 'sass:meta';
-$nanotrasen: #2c2c2c;
+$nanotrasen: hsl(0, 0%, 17.25%);
@use '../colors.scss' with (
$fg-map-keys: (),
@@ -19,20 +19,20 @@ $nanotrasen: #2c2c2c;
.theme-ntos_darkmode {
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': $nanotrasen,
'color-transparent-text': rgba(227, 240, 255, 0.75)
)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: (
'color-default-fill': $nanotrasen,
'background-color': rgba(0, 0, 0, 0.5)
)
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
// Layouts
@include meta.load-css('../layouts/Layout.scss');
diff --git a/tgui/packages/tgui/styles/themes/ntos_lightmode.scss b/tgui/packages/tgui/styles/themes/ntos_lightmode.scss
index 9cf1a647b778d..797fa101a9986 100644
--- a/tgui/packages/tgui/styles/themes/ntos_lightmode.scss
+++ b/tgui/packages/tgui/styles/themes/ntos_lightmode.scss
@@ -6,37 +6,37 @@
@use 'sass:color';
@use 'sass:meta';
-$nanotrasen: #ffffff;
+$nanotrasen: hsl(0, 0%, 100%);
@use '../colors.scss' with (
- $primary: #000000,
- $label: #000000
+ $primary: hsl(0, 0%, 0%),
+ $label: hsl(0, 0%, 0%)
);
@use '../base.scss' with (
- $color-bg: white
+ $color-bg: hsl(0, 0%, 100%)
);
.theme-ntos_lightmode {
@include meta.load-css('../atomic/color.scss', $with: ());
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: ('color-default': $nanotrasen)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: (
'color-default-fill': $nanotrasen,
- 'background-color': rgba(0, 0, 0, 0.5)
+ 'background-color': hsla(0, 0%, 0%, 0.5)
)
);
@include meta.load-css(
- '../components/Section.scss',
- $with: ('background-color': rgba(119, 119, 119, 0.4))
+ 'pkg:tgui-styles/components/Section',
+ $with: ('background-color': hsla(0, 0%, 47%, 0.4))
);
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': white)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(0, 0%, 100%))
);
// Layouts
@@ -44,24 +44,24 @@ $nanotrasen: #ffffff;
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': gray)
+ $with: ('background-color': hsl(0, 0%, 50%))
);
.Button {
- color: #161613;
+ color: hsl(45, 6%, 8%);
}
.Button:hover {
- background-color: #777777;
+ background-color: hsl(0, 0%, 47%);
transition: 0.1s;
}
.Section {
- color: black;
+ color: hsl(0, 0%, 0%);
}
.Tab {
- color: black;
+ color: hsl(0, 0%, 0%);
}
.Tab--selected {
- color: white;
- background-color: darkgray;
+ color: hsl(0, 0%, 100%);
+ background-color: hsl(0, 0%, 66%);
}
}
diff --git a/tgui/packages/tgui/styles/themes/ntos_spooky.scss b/tgui/packages/tgui/styles/themes/ntos_spooky.scss
index 147464218568c..5d1243c0b4133 100644
--- a/tgui/packages/tgui/styles/themes/ntos_spooky.scss
+++ b/tgui/packages/tgui/styles/themes/ntos_spooky.scss
@@ -3,12 +3,12 @@
@use 'sass:map';
@use '../colors.scss' with (
- $primary: #3f021a,
- $good: #e62626,
- $bad: #970934
+ $primary: hsl(345, 96%, 12%),
+ $good: hsl(0, 82%, 52%),
+ $bad: hsl(340, 91%, 32%)
);
@use '../base.scss' with (
- $color-bg: #240101,
+ $color-bg: hsl(0, 98%, 7%),
$color-bg-grad-spread: 12%
);
@@ -18,40 +18,40 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': #7e0322,
- 'color-disabled': #363636,
- 'color-selected': #610a0a,
- 'color-caution': #1416a3,
- 'color-danger': #5c1e80
+ 'color-default': hsl(345, 96%, 25%),
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(0, 85%, 21%),
+ 'color-caution': hsl(240, 80%, 35%),
+ 'color-danger': hsl(282, 61%, 30%)
)
);
@include meta.load-css(
- '../components/Dimmer.scss',
+ 'pkg:tgui-styles/components/Dimmer',
$with: ('background-dimness': 0.45)
);
@include meta.load-css(
- '../components/Input.scss',
- $with: ('border-color': #473a37)
+ 'pkg:tgui-styles/components/Input',
+ $with: ('border-color': hsl(15, 14%, 26%))
);
- @include meta.load-css('../components/Modal.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Modal');
@include meta.load-css(
- '../components/NoticeBox.scss',
- $with: ('background-color': #740707)
+ 'pkg:tgui-styles/components/NoticeBox',
+ $with: ('background-color': hsl(0, 90%, 23%))
);
- @include meta.load-css('../components/NumberInput.scss');
- @include meta.load-css('../components/Section.scss');
- @include meta.load-css('../components/Table.scss');
+ @include meta.load-css('pkg:tgui-styles/components/NumberInput');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
+ @include meta.load-css('pkg:tgui-styles/components/Table');
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': #000000)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(0, 0%, 0%))
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: (
- 'color-default-fill': rgba(190, 0, 0, 0.75),
- 'background-color': rgba(34, 1, 1, 0.5)
+ 'color-default-fill': hsla(0, 100%, 37%, 0.75),
+ 'background-color': hsla(0, 97%, 7%, 0.5)
)
);
@@ -60,7 +60,7 @@
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #6b0808)
+ $with: ('background-color': hsl(0, 88%, 23%))
);
.Layout__content {
diff --git a/tgui/packages/tgui/styles/themes/ntos_synth.scss b/tgui/packages/tgui/styles/themes/ntos_synth.scss
index 5085308dd3bcd..5cc6209489545 100644
--- a/tgui/packages/tgui/styles/themes/ntos_synth.scss
+++ b/tgui/packages/tgui/styles/themes/ntos_synth.scss
@@ -8,10 +8,10 @@
//@use 'sass:map';
//palette
-$cyan: #5edba5;
-$pink: #ed12f5;
-$orange: #ff9900;
-$purple: #463191;
+$cyan: hsl(156, 65%, 60%);
+$pink: hsl(300, 91%, 52%);
+$orange: hsl(36, 100%, 50%);
+$purple: hsl(248, 47%, 37%);
@use '../colors.scss' with (
$primary: $pink,
@@ -32,26 +32,26 @@ $purple: #463191;
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': $cyan,
- 'color-transparent-text': rgba(227, 240, 255, 0.75),
- 'color-disabled': #363636,
- 'color-selected': #465899,
- 'color-caution': #be6209
+ 'color-transparent-text': hsla(210, 100%, 94%, 0.75),
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(227, 37%, 45%),
+ 'color-caution': hsl(30, 88%, 39%)
)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
- $with: ('color-default-fill': rgba(237, 18, 245, 0.75))
+ 'pkg:tgui-styles/components/ProgressBar',
+ $with: ('color-default-fill': hsla(300, 91%, 52%, 0.75))
);
@include meta.load-css(
- '../components/Section.scss',
- $with: ('background-color': rgba(0, 0, 0, 0.3))
+ 'pkg:tgui-styles/components/Section',
+ $with: ('background-color': hsla(0, 0%, 0%, 0.3))
);
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': rgba(255, 153, 0, 0.75))
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsla(36, 100%, 50%, 0.75))
);
// Layouts
@@ -59,15 +59,15 @@ $purple: #463191;
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': rgba(3, 100, 117, 0.75))
+ $with: ('background-color': hsla(185, 95%, 23%, 0.75))
);
.Section {
color: $cyan;
background-image: linear-gradient(
to right,
- rgba(194, 0, 219, 0.75),
- rgba(3, 100, 117, 0.75)
+ hsla(300, 100%, 42%, 0.75),
+ hsla(185, 95%, 23%, 0.75)
);
}
.Button {
@@ -89,8 +89,8 @@ $purple: #463191;
color: $cyan;
background-image: linear-gradient(
to right,
- rgba(255, 153, 0, 0.4),
- rgba(194, 0, 219, 0.75)
+ hsla(36, 100%, 50%, 0.4),
+ hsla(300, 100%, 42%, 0.75)
);
}
.Tab--selected {
diff --git a/tgui/packages/tgui/styles/themes/ntos_terminal.scss b/tgui/packages/tgui/styles/themes/ntos_terminal.scss
index 234e20fce7605..3d9230c20887e 100644
--- a/tgui/packages/tgui/styles/themes/ntos_terminal.scss
+++ b/tgui/packages/tgui/styles/themes/ntos_terminal.scss
@@ -7,14 +7,14 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #24e87e,
- $label: #24e87e,
- $good: rgba(36, 232, 127, 0.5),
+ $primary: hsl(146, 82%, 53%),
+ $label: hsl(146, 82%, 53%),
+ $good: hsla(146, 82%, 53%, 0.5),
// $fg-map-keys: (),
// $bg-map-keys: (),
);
@use '../base.scss' with (
- $color-bg: #121b12,
+ $color-bg: hsl(120, 10%, 9%),
$color-bg-grad-spread: 0%
);
@@ -24,89 +24,89 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': rgba(0, 0, 0, 0),
- 'color-disabled': #4a6a4a,
- 'color-selected': rgba(36, 232, 127, 0.25)
+ 'color-disabled': hsl(120, 18%, 35%),
+ 'color-selected': hsla(146, 82%, 53%, 0.25)
)
);
@include meta.load-css(
- '../components/Input.scss',
+ 'pkg:tgui-styles/components/Input',
$with: ('border-color': colors.$primary)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
+ 'pkg:tgui-styles/components/ProgressBar',
$with: (
- 'background-color': rgba(0, 0, 0, 0.5),
- 'color-default-fill': rgba(36, 232, 127, 0.5)
+ 'background-color': hsla(0, 0%, 0%, 0.5),
+ 'color-default-fill': hsla(146, 82%, 53%, 0.5)
)
);
- @include meta.load-css('../components/Modal.scss');
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Modal');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
// Layouts
@include meta.load-css('../layouts/Layout.scss');
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': rgba(0, 97, 0, 0.25))
+ $with: ('background-color': hsla(120, 100%, 19%, 0.25))
);
.Layout__content {
//background-image: none;
background-image: repeating-linear-gradient(
0deg,
- rgba(black, 0.15),
- rgba(black, 0.15) 1px,
+ hsla(0, 0%, 0%, 0.15),
+ hsla(0, 0%, 0%, 0.15) 1px,
transparent 2.5px,
transparent 5px
),
- radial-gradient(rgba(0, 97, 0, 0.75), black 120%);
+ radial-gradient(hsla(120, 100%, 19%, 0.75), black 120%);
background-size: 100%, 100%;
background-position: center, center;
}
.Button {
font: Inconsolata;
- color: #24e87e;
- text-shadow: 0 0 2px #24e87e;
+ color: hsl(146, 82%, 53%);
+ text-shadow: 0 0 2px hsl(146, 82%, 53%);
}
.Button:hover {
- background-color: rgba(36, 232, 127, 0.25);
+ background-color: hsla(146, 82%, 53%, 0.25);
transition: 0.1s;
}
.Button--selected {
- color: #24e87e;
+ color: hsl(146, 82%, 53%);
}
body {
//background-color: black;
- color: white;
+ color: hsl(0, 0%, 100%);
font: 1.3rem Inconsolata;
- text-shadow: 0 0 2px #24e87e;
+ text-shadow: 0 0 2px hsl(146, 82%, 53%);
//font: bold 12px Arial, 'Helvetica Neue', Helvetica, sans-serif;
}
.Section {
- color: rgb(36, 232, 126);
+ color: hsl(146, 82%, 53%);
}
.Tab {
- color: #24e87e;
+ color: hsl(146, 82%, 53%);
}
.Tab--selected {
- color: #24e87e;
- border: 2px solid #24e87e;
- background-color: rgba(36, 232, 127, 0.25);
+ color: hsl(146, 82%, 53%);
+ border: 2px solid hsl(146, 82%, 53%);
+ background-color: hsla(146, 82%, 53%, 0.25);
}
::selection {
- background: #0080ff;
+ background: hsl(210, 100%, 50%);
text-shadow: none;
}
.Table {
- text-shadow: 0 0 2px #24e87e;
+ text-shadow: 0 0 2px hsl(146, 82%, 53%);
}
.Flex {
- text-shadow: 0 0 2px #24e87e;
+ text-shadow: 0 0 2px hsl(146, 82%, 53%);
}
}
diff --git a/tgui/packages/tgui/styles/themes/paper.scss b/tgui/packages/tgui/styles/themes/paper.scss
index 2f9fa6e16f2bd..65b23a93136cf 100644
--- a/tgui/packages/tgui/styles/themes/paper.scss
+++ b/tgui/packages/tgui/styles/themes/paper.scss
@@ -7,7 +7,7 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #ffffff,
+ $primary: hsl(0, 0%, 100%),
$bg-lightness: 25%,
$fg-lightness: -10%,
// Commenting out color maps will adjust all colors based on the lightness
@@ -16,8 +16,8 @@
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-fg: #000000,
- $color-bg: #dfdfdf,
+ $color-fg: hsl(0, 0%, 0%),
+ $color-bg: hsl(0, 0%, 87%),
$color-bg-grad-spread: 0%
);
@@ -30,20 +30,20 @@ $font-size: 24px;
@include meta.load-css('../atomic/color.scss');
// Components
- @include meta.load-css('../components/Tabs.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Tabs');
@include meta.load-css(
- '../components/Section.scss',
- $with: ('background-color': rgba(0, 0, 0, 0.1))
+ 'pkg:tgui-styles/components/Section',
+ $with: ('background-color': hsla(0, 0%, 0%, 0.1))
);
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': #e8e4c9,
- 'color-disabled': #363636,
- 'color-selected': #9d0808,
- 'color-caution': #be6209,
- 'color-danger': #9a9d00,
- 'color-transparent-text': rgba(0, 0, 0, 0.5)
+ 'color-default': hsl(50, 50%, 90%),
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(0, 100%, 30%),
+ 'color-caution': hsl(30, 90%, 40%),
+ 'color-danger': hsl(60, 100%, 30%),
+ 'color-transparent-text': hsla(0, 0%, 0%, 0.5)
)
);
@@ -56,9 +56,9 @@ $font-size: 24px;
@include meta.load-css(
'../layouts/TitleBar.scss',
$with: (
- 'text-color': rgba(0, 0, 0, 0.75),
+ 'text-color': hsla(0, 0%, 0%, 0.75),
'background-color': base.$color-bg,
- 'shadow-color-core': rgba(0, 0, 0, 0.25)
+ 'shadow-color-core': hsla(0, 0%, 0%, 0.25)
)
);
@@ -68,9 +68,9 @@ $font-size: 24px;
width: 120px;
border: none;
background: transparent;
- border-bottom: 1px solid #000;
+ border-bottom: 1px solid hsl(0, 0%, 0%);
outline: none;
- background-color: rgba(255, 255, 62, 0.8);
+ background-color: hsla(60, 100%, 60%, 0.8);
padding: 0 4px;
margin-right: 2px;
line-height: 17px;
@@ -99,13 +99,13 @@ $font-size: 24px;
padding: 0 6px;
font-family: Verdana, sans-serif;
background-color: transparent;
- color: #fff;
+ color: hsl(0, 0%, 100%);
color: inherit;
&:-ms-input-placeholder {
font-style: italic;
- color: #777;
- color: rgba(255, 255, 255, 0.45);
+ color: hsl(0, 0%, 47%);
+ color: hsla(0, 0%, 100%, 0.45);
}
}
@@ -124,9 +124,9 @@ $font-size: 24px;
display: inline-block;
border: none;
background: transparent;
- border-bottom: 1px solid #000;
+ border-bottom: 1px solid hsl(0, 0%, 0%);
outline: none;
- background-color: rgba(255, 255, 62, 0.8);
+ background-color: hsla(60, 100%, 60%, 0.8);
padding: 0 4px;
margin-right: 2px;
line-height: 17px;
@@ -138,9 +138,9 @@ $font-size: 24px;
display: inline-block;
border: none;
background: transparent;
- border-bottom: 1px solid #000;
+ border-bottom: 1px solid hsl(0, 0%, 0%);
outline: none;
- background-color: rgba(255, 255, 62, 0.8);
+ background-color: hsla(60, 100%, 60%, 0.8);
padding: 0 4px;
margin-right: 2px;
line-height: 17px;
@@ -158,9 +158,9 @@ $font-size: 24px;
border: none;
background: transparent;
- border-bottom: 1px solid #000;
+ border-bottom: 1px solid hsl(0, 0%, 0%);
outline: none;
- background-color: rgba(255, 255, 62, 0.8);
+ background-color: hsla(60, 100%, 60%, 0.8);
padding: 0 4px;
margin-right: 2px;
line-height: 17px;
@@ -172,9 +172,9 @@ $font-size: 24px;
border: none;
background: transparent;
- border-bottom: 1px solid #000;
+ border-bottom: 1px solid hsl(0, 0%, 0%);
outline: none;
- background-color: rgba(255, 255, 62, 0.8);
+ background-color: hsla(60, 100%, 60%, 0.8);
padding: 0 4px;
margin-right: 2px;
line-height: 17px;
diff --git a/tgui/packages/tgui/styles/themes/retro.scss b/tgui/packages/tgui/styles/themes/retro.scss
index 9e08c8b9caef6..f36aaa5c8ac13 100644
--- a/tgui/packages/tgui/styles/themes/retro.scss
+++ b/tgui/packages/tgui/styles/themes/retro.scss
@@ -7,12 +7,12 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #000000,
+ $primary: hsl(0, 0%, 0%),
$fg-map-keys: (),
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-bg: #e8e4c9,
+ $color-bg: hsl(48, 38%, 84%),
$color-bg-grad-spread: 0%,
$border-radius: 0
);
@@ -25,44 +25,44 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': #e8e4c9,
- 'color-disabled': #505046,
- 'color-selected': #9d0808,
- 'color-caution': #be6209,
- 'color-danger': #9a9d00
+ 'color-default': hsl(48, 38%, 84%),
+ 'color-disabled': hsl(60, 6%, 28%),
+ 'color-selected': hsl(0, 91%, 31%),
+ 'color-caution': hsl(28, 87%, 39%),
+ 'color-danger': hsl(61, 100%, 30%)
)
);
@include meta.load-css(
- '../components/ProgressBar.scss',
- $with: ('background-color': rgba(0, 0, 0, 0.5))
+ 'pkg:tgui-styles/components/ProgressBar',
+ $with: ('background-color': hsla(0, 0%, 0%, 0.5))
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
// Layouts
@include meta.load-css('../layouts/Layout.scss');
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #585337)
+ $with: ('background-color': hsl(48, 10%, 28%))
);
.Button {
font-family: monospace;
- color: #161613;
- border: base.em(2px) outset #e8e4c9;
- outline: base.em(1px) solid #161613;
+ color: hsl(60, 6%, 8%);
+ border: base.em(2px) outset hsl(48, 38%, 84%);
+ outline: base.em(1px) solid hsl(60, 6%, 8%);
}
.Button--disabled {
- color: #c5c5c2;
+ color: hsl(60, 6%, 77%);
font-family: monospace;
&:hover {
- color: #ffffff;
+ color: hsl(0, 0%, 100%);
}
&:focus {
- color: #ffffff;
+ color: hsl(0, 0%, 100%);
}
}
diff --git a/tgui/packages/tgui/styles/themes/spookyconsole.scss b/tgui/packages/tgui/styles/themes/spookyconsole.scss
index 07fd5b4dbe3d8..a15cf23aa1119 100644
--- a/tgui/packages/tgui/styles/themes/spookyconsole.scss
+++ b/tgui/packages/tgui/styles/themes/spookyconsole.scss
@@ -3,14 +3,14 @@
@use 'sass:map';
@use '../colors.scss' with (
- $primary: #3f021a,
- $good: #010005,
- $bad: #970934,
+ $primary: hsl(345, 96%, 12%),
+ $good: hsl(240, 100%, 1%),
+ $bad: hsl(340, 91%, 32%),
$fg-map-keys: (),
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-bg: #240101,
+ $color-bg: hsl(0, 100%, 7%),
$color-bg-grad-spread: 12%
);
@@ -28,35 +28,35 @@ $updated-bg-map: map.set($updated-bg-map, 'bad', colors.$bad);
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
- 'color-default': #7e0322,
- 'color-disabled': #363636,
- 'color-selected': #610a0a,
- 'color-caution': #1416a3,
- 'color-danger': #5c1e80,
+ 'color-default': hsl(345, 96%, 25%),
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(0, 85%, 21%),
+ 'color-caution': hsl(240, 80%, 35%),
+ 'color-danger': hsl(282, 61%, 30%),
'bg-map': $updated-bg-map
)
);
@include meta.load-css(
- '../components/Dimmer.scss',
+ 'pkg:tgui-styles/components/Dimmer',
$with: ('background-dimness': 0.45)
);
@include meta.load-css(
- '../components/Input.scss',
- $with: ('border-color': #473a37)
+ 'pkg:tgui-styles/components/Input',
+ $with: ('border-color': hsl(15, 14%, 26%))
);
- @include meta.load-css('../components/Modal.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Modal');
@include meta.load-css(
- '../components/NoticeBox.scss',
- $with: ('background-color': #740707)
+ 'pkg:tgui-styles/components/NoticeBox',
+ $with: ('background-color': hsl(0, 90%, 23%))
);
- @include meta.load-css('../components/NumberInput.scss');
- @include meta.load-css('../components/Section.scss');
- @include meta.load-css('../components/Table.scss');
+ @include meta.load-css('pkg:tgui-styles/components/NumberInput');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
+ @include meta.load-css('pkg:tgui-styles/components/Table');
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': #000000)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(0, 0%, 0%))
);
// Layouts
@@ -64,7 +64,7 @@ $updated-bg-map: map.set($updated-bg-map, 'bad', colors.$bad);
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #6b0808)
+ $with: ('background-color': hsl(0, 88%, 23%))
);
.Layout__content {
diff --git a/tgui/packages/tgui/styles/themes/syndicate.scss b/tgui/packages/tgui/styles/themes/syndicate.scss
index 4a547edef9b66..f4f82a6c171aa 100644
--- a/tgui/packages/tgui/styles/themes/syndicate.scss
+++ b/tgui/packages/tgui/styles/themes/syndicate.scss
@@ -7,12 +7,12 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #397439,
+ $primary: hsl(120, 34%, 35%),
$fg-map-keys: (),
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-bg: #550202,
+ $color-bg: hsl(0, 96%, 17%),
$color-bg-grad-spread: 6%
);
@@ -22,35 +22,35 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': colors.$primary,
- 'color-disabled': #363636,
- 'color-selected': #9d0808,
- 'color-caution': #be6209,
- 'color-danger': #9a9d00
+ 'color-disabled': hsl(0, 0%, 21%),
+ 'color-selected': hsl(0, 91%, 31%),
+ 'color-caution': hsl(28, 87%, 39%),
+ 'color-danger': hsl(61, 100%, 30%)
)
);
@include meta.load-css(
- '../components/Input.scss',
- $with: ('border-color': #87ce87)
+ 'pkg:tgui-styles/components/Input',
+ $with: ('border-color': hsl(120, 60%, 70%))
);
@include meta.load-css(
- '../components/NoticeBox.scss',
- $with: ('background-color': #910101)
+ 'pkg:tgui-styles/components/NoticeBox',
+ $with: ('background-color': hsl(0, 98%, 28%))
);
@include meta.load-css(
- '../components/NumberInput.scss',
- $with: ('border-color': #87ce87)
+ 'pkg:tgui-styles/components/NumberInput',
+ $with: ('border-color': hsl(120, 60%, 70%))
);
@include meta.load-css(
- '../components/ProgressBar.scss',
- $with: ('background-color': rgba(0, 0, 0, 0.5))
+ 'pkg:tgui-styles/components/ProgressBar',
+ $with: ('background-color': hsla(0, 0%, 0%, 0.5))
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': #4a0202)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(0, 96%, 14%))
);
// Layouts
@@ -58,7 +58,7 @@
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #910101)
+ $with: ('background-color': hsl(0, 98%, 28%))
);
.Layout__content {
diff --git a/tgui/packages/tgui/styles/themes/wizard.scss b/tgui/packages/tgui/styles/themes/wizard.scss
index 9c4056cc1289a..3de051e8e635f 100644
--- a/tgui/packages/tgui/styles/themes/wizard.scss
+++ b/tgui/packages/tgui/styles/themes/wizard.scss
@@ -7,12 +7,12 @@
@use 'sass:meta';
@use '../colors.scss' with (
- $primary: #1596b6,
+ $primary: hsl(191, 79%, 41%),
$fg-map-keys: (),
$bg-map-keys: ()
);
@use '../base.scss' with (
- $color-bg: #213e4e,
+ $color-bg: hsl(204, 40%, 21%),
$color-bg-grad-spread: 6%,
$border-radius: 2px
);
@@ -23,35 +23,35 @@
// Components
@include meta.load-css(
- '../components/Button.scss',
+ 'pkg:tgui-styles/components/Button',
$with: (
'color-default': colors.$primary,
- 'color-disabled': #02426d,
- 'color-selected': #465899,
- 'color-caution': #be6209,
- 'color-danger': #b30707
+ 'color-disabled': hsl(204, 97%, 21%),
+ 'color-selected': hsl(227, 40%, 44%),
+ 'color-caution': hsl(28, 89%, 39%),
+ 'color-danger': hsl(0, 91%, 35%)
)
);
@include meta.load-css(
- '../components/Input.scss',
- $with: ('border-color': #404b6e)
+ 'pkg:tgui-styles/components/Input',
+ $with: ('border-color': hsl(227, 25%, 34%))
);
@include meta.load-css(
- '../components/NoticeBox.scss',
- $with: ('background-color': #a82d55)
+ 'pkg:tgui-styles/components/NoticeBox',
+ $with: ('background-color': hsl(340, 58%, 41%))
);
@include meta.load-css(
- '../components/NumberInput.scss',
- $with: ('border-color': #404b6e)
+ 'pkg:tgui-styles/components/NumberInput',
+ $with: ('border-color': hsl(227, 25%, 34%))
);
@include meta.load-css(
- '../components/ProgressBar.scss',
- $with: ('background-color': rgba(0, 0, 0, 0.5))
+ 'pkg:tgui-styles/components/ProgressBar',
+ $with: ('background-color': hsla(0, 0%, 0%, 0.5))
);
- @include meta.load-css('../components/Section.scss');
+ @include meta.load-css('pkg:tgui-styles/components/Section');
@include meta.load-css(
- '../components/Tooltip.scss',
- $with: ('background-color': #2da848)
+ 'pkg:tgui-styles/components/Tooltip',
+ $with: ('background-color': hsl(134, 61%, 42%))
);
// Layouts
@@ -59,7 +59,7 @@
@include meta.load-css('../layouts/Window.scss');
@include meta.load-css(
'../layouts/TitleBar.scss',
- $with: ('background-color': #1b9e26)
+ $with: ('background-color': hsl(134, 71%, 31%))
);
.Layout__content {
diff --git a/tgui/yarn.lock b/tgui/yarn.lock
index b41f103989440..21779bbe5e8eb 100644
--- a/tgui/yarn.lock
+++ b/tgui/yarn.lock
@@ -17137,9 +17137,9 @@ __metadata:
languageName: node
linkType: hard
-"sass-loader@npm:^14.2.1":
- version: 14.2.1
- resolution: "sass-loader@npm:14.2.1"
+"sass-loader@npm:^16.0.3":
+ version: 16.0.3
+ resolution: "sass-loader@npm:16.0.3"
dependencies:
neo-async: "npm:^2.6.2"
peerDependencies:
@@ -17159,7 +17159,7 @@ __metadata:
optional: true
webpack:
optional: true
- checksum: 10c0/9a48d454584d96d6c562eb323bb9e3c6808e930eeaaa916975b97d45831e0b87936a8655cdb3a4512a25abc9587dea65a9616e42396be0d7e7c507a4795a8146
+ checksum: 10c0/2dc188dd0d5276ed0251eee7f245848ccf9df6ec121227462403f322c17a3dbe100fb60d47968f078e585e4aced452eb7fa1a8e55b415d5de3151fa1bbf2d561
languageName: node
linkType: hard
@@ -18724,13 +18724,13 @@ __metadata:
languageName: unknown
linkType: soft
-"tgui-core@npm:^1.2.0":
- version: 1.2.0
- resolution: "tgui-core@npm:1.2.0"
+"tgui-core@npm:^1.3.0":
+ version: 1.3.0
+ resolution: "tgui-core@npm:1.3.0"
peerDependencies:
react: ^18.2.0
react-dom: ^18.2.0
- checksum: 10c0/1eead0edbe0df5c49bfa88f0d2caa5df743057be75e9c526d0afd838b8def072c67fe60435c66cba52551c4ef70749d60d68094fa103542187008998002714f7
+ checksum: 10c0/448c38a23149a13f80dcbe3688f3edba8dbe25dd65fc1b48036627f6e992996107a7962cd7bca6194f41959dc3aad531fdf3fbe032decaac7989c32721ad99a1
languageName: node
linkType: hard
@@ -18760,6 +18760,7 @@ __metadata:
tgui: "workspace:*"
tgui-dev-server: "workspace:*"
tgui-polyfill: "workspace:*"
+ tgui-styles: "npm:^0.0.10"
languageName: unknown
linkType: soft
@@ -18785,9 +18786,17 @@ __metadata:
react-dom: "npm:^18.3.1"
tgui: "workspace:*"
tgui-polyfill: "workspace:*"
+ tgui-styles: "npm:^0.0.10"
languageName: unknown
linkType: soft
+"tgui-styles@npm:^0.0.10":
+ version: 0.0.10
+ resolution: "tgui-styles@npm:0.0.10"
+ checksum: 10c0/90d3c9d891680289e79fd1f44dcf15a0cc956345e0337b2f89a64ceb1c5192da217dd8ac64566731471684b6bb6d3b4fc92ff6a072f9d8138e71d423c94821a6
+ languageName: node
+ linkType: hard
+
"tgui-workspace@workspace:.":
version: 0.0.0-use.local
resolution: "tgui-workspace@workspace:."
@@ -18815,7 +18824,7 @@ __metadata:
mini-css-extract-plugin: "npm:^2.9.2"
prettier: "npm:^3.2.5"
sass: "npm:^1.80.6"
- sass-loader: "npm:^14.2.1"
+ sass-loader: "npm:^16.0.3"
style-loader: "npm:^4.0.0"
swc-loader: "npm:^0.2.6"
typescript: "npm:^5.6.3"
@@ -18845,9 +18854,10 @@ __metadata:
react: "npm:^18.3.1"
react-dom: "npm:^18.3.1"
react-popper: "npm:^2.3.0"
- tgui-core: "npm:^1.2.0"
+ tgui-core: "npm:^1.3.0"
tgui-dev-server: "workspace:*"
tgui-polyfill: "workspace:*"
+ tgui-styles: "npm:^0.0.10"
languageName: unknown
linkType: soft
diff --git a/tools/UpdatePaths/Scripts/86084_replace_floorbots.txt b/tools/UpdatePaths/Scripts/86084_replace_floorbots.txt
new file mode 100644
index 0000000000000..711e01207ea43
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/86084_replace_floorbots.txt
@@ -0,0 +1,2 @@
+/mob/living/simple_animal/bot/floorbot : /mob/living/basic/bot/repairbot {@OLD}
+/obj/item/bot_assembly/floorbot : /obj/item/bot_assembly/repairbot {@OLD}
\ No newline at end of file
diff --git a/tools/UpdatePaths/Scripts/87828_exofab_directions.txt b/tools/UpdatePaths/Scripts/87828_exofab_directions.txt
new file mode 100644
index 0000000000000..468bc23847a98
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/87828_exofab_directions.txt
@@ -0,0 +1 @@
+/obj/machinery/mecha_part_fabricator/@SUBTYPES{dir = @ANY} : /obj/machinery/mecha_part_fabricator/@SUBTYPES{@OLD;dir=@SKIP;drop_direction=@OLD:dir}
diff --git a/tools/UpdatePaths/Scripts/87866_fish_tanks.txt b/tools/UpdatePaths/Scripts/87866_fish_tanks.txt
new file mode 100644
index 0000000000000..a0762acacf27a
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/87866_fish_tanks.txt
@@ -0,0 +1 @@
+/obj/structure/aquarium/lawyer : /obj/item/fish_tank/lawyer
diff --git a/tools/UpdatePaths/Scripts/repaths_a357_to_c357.txt b/tools/UpdatePaths/Scripts/repaths_a357_to_c357.txt
new file mode 100644
index 0000000000000..28ad97efff1ab
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/repaths_a357_to_c357.txt
@@ -0,0 +1,3 @@
+#comment Repaths instances of a357 with c357, so as to acknowledge that it is consistent with other casings.
+
+/obj/item/ammo_casing/c357 : /obj/item/ammo_casing/a357{@OLD}
diff --git a/tools/ci/ci_config.txt b/tools/ci/ci_config.txt
index 51e08e6328ba1..1e6f19eb692c9 100644
--- a/tools/ci/ci_config.txt
+++ b/tools/ci/ci_config.txt
@@ -5,6 +5,4 @@ FEEDBACK_DATABASE tg_ci
FEEDBACK_TABLEPREFIX
FEEDBACK_LOGIN root
FEEDBACK_PASSWORD
-LAVALAND_BUDGET 0
-SPACE_BUDGET 0
AUXTOOLS_ENABLED
diff --git a/tools/hslify/README.md b/tools/hslify/README.md
new file mode 100644
index 0000000000000..cc6937ed4f69c
--- /dev/null
+++ b/tools/hslify/README.md
@@ -0,0 +1,21 @@
+# HSLify
+
+This is a simple Python script that converts all hex colors in a directory to their corresponding HSL values.
+
+## Usage
+
+1. Install the required dependencies:
+
+```bash
+pip install colormath
+```
+
+2. Move files so that hslify is in the same directory as the files you want to process. That can be in this folder, or by moving this folder to the same directory as the files you want to process.
+
+3. Run the script:
+
+```bash
+py hslify.py
+```
+
+4. Formatting is strange, so it may be necessary to save the file manually for prettier to format it.
diff --git a/tools/hslify/hslify.py b/tools/hslify/hslify.py
new file mode 100644
index 0000000000000..9a87ad4415710
--- /dev/null
+++ b/tools/hslify/hslify.py
@@ -0,0 +1,27 @@
+import re
+import glob
+from colormath.color_objects import sRGBColor, HSLColor
+from colormath.color_conversions import convert_color
+
+def hex_to_hsl(hex_color):
+ rgb = sRGBColor.new_from_rgb_hex(hex_color)
+ hsl = convert_color(rgb, HSLColor)
+ return f"hsl({hsl.hsl_h:.1f}, {hsl.hsl_s * 100:.1f}%, {hsl.hsl_l * 100:.1f}%)"
+
+def replace_hex_with_hsl(file_path):
+ with open(file_path, 'r') as file:
+ content = file.read()
+
+ hex_pattern = re.compile(r'#([0-9a-fA-F]{6})')
+ updated_content = hex_pattern.sub(lambda match: hex_to_hsl(match.group(0)), content)
+
+ with open(file_path, 'w') as file:
+ file.write(updated_content)
+
+def process_all_scss_files():
+ scss_files = glob.glob('*.scss')
+ for scss_file in scss_files:
+ replace_hex_with_hsl(scss_file)
+
+if __name__ == "__main__":
+ process_all_scss_files()